@sebastienrousseau/dotfiles 0.2.519 → 0.2.521

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. package/templates/projects/python/tests/test_basic.py +0 -3
package/install.sh CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # SPDX-License-Identifier: MIT
2
+ # SPDX-License-Identifier: Apache-2.0 OR MIT
3
3
  # Copyright (c) 2015-2026 Sebastien Rousseau
4
4
  # Universal Dotfiles Installer (Zero-Dependency)
5
5
  # Usage: gh repo clone sebastienrousseau/dotfiles && cd dotfiles && ./install.sh
@@ -71,7 +71,7 @@ show_help() {
71
71
  Usage: install.sh [version] [options]
72
72
 
73
73
  Arguments:
74
- version The version (tag or branch) to install (default: v0.2.519)
74
+ version The version (tag or branch) to install (default: v0.2.521)
75
75
 
76
76
  Options:
77
77
  --help Show this help message
@@ -87,7 +87,7 @@ EOF
87
87
  }
88
88
 
89
89
  main() {
90
- local version="v0.2.519"
90
+ local version="v0.2.521"
91
91
  local version_set=0
92
92
  local minimal=0
93
93
  local provision="${DOTFILES_PROVISION:-0}"
@@ -117,7 +117,7 @@ main() {
117
117
  # like `foobar` doesn't trigger a 30s+ network download attempt.
118
118
  # Caught by the install.sh fuzz harness (#881).
119
119
  if [[ ! "$arg" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+([-+][a-zA-Z0-9.-]+)?$ ]]; then
120
- error "Unrecognized positional argument '$arg' — expected a semver version (e.g. v0.2.519)."
120
+ error "Unrecognized positional argument '$arg' — expected a semver version (e.g. v0.2.521)."
121
121
  fi
122
122
  version="$arg"
123
123
  version_set=1
@@ -196,6 +196,68 @@ main() {
196
196
  fi
197
197
  }
198
198
 
199
+ # Standalone checksum-verified chezmoi bootstrap. Keep this implementation
200
+ # in the entry point so a release-pinned install.sh remains self-contained;
201
+ # repository and npm installs may use the identical helper script below.
202
+ install_chezmoi_verified_embedded() {
203
+ local chezmoi_version="$1"
204
+ local destination="$2"
205
+ local os arch asset checksums_asset base_url temp_dir checksum_line
206
+
207
+ os="$(uname -s | tr '[:upper:]' '[:lower:]')"
208
+ arch="$(uname -m)"
209
+ case "$os" in
210
+ linux | darwin) ;;
211
+ *)
212
+ echo "Unsupported OS for chezmoi bootstrap: $os" >&2
213
+ return 1
214
+ ;;
215
+ esac
216
+ case "$arch" in
217
+ x86_64 | amd64) arch="amd64" ;;
218
+ arm64 | aarch64) arch="arm64" ;;
219
+ *)
220
+ echo "Unsupported architecture for chezmoi bootstrap: $arch" >&2
221
+ return 1
222
+ ;;
223
+ esac
224
+
225
+ asset="chezmoi_${chezmoi_version}_${os}_${arch}.tar.gz"
226
+ checksums_asset="chezmoi_${chezmoi_version}_checksums.txt"
227
+ base_url="https://github.com/twpayne/chezmoi/releases/download/v${chezmoi_version}"
228
+ temp_dir="$(umask 077 && mktemp -d)"
229
+
230
+ if ! (
231
+ set -e
232
+ if ! curl --proto '=https' --tlsv1.2 -fsSL \
233
+ -o "$temp_dir/checksums.txt" "$base_url/$checksums_asset"; then
234
+ curl --proto '=https' --tlsv1.2 -fsSL \
235
+ -o "$temp_dir/checksums.txt" "$base_url/checksums.txt"
236
+ fi
237
+ curl --proto '=https' --tlsv1.2 -fsSL \
238
+ -o "$temp_dir/$asset" "$base_url/$asset"
239
+ checksum_line="$(grep -E "[[:space:]]${asset}$" "$temp_dir/checksums.txt" | head -n 1 || true)"
240
+ [[ -n "$checksum_line" ]] || {
241
+ echo "Checksum entry not found for $asset" >&2
242
+ exit 1
243
+ }
244
+ cd "$temp_dir"
245
+ if command -v sha256sum >/dev/null 2>&1; then
246
+ printf '%s\n' "$checksum_line" | sha256sum -c -
247
+ else
248
+ printf '%s\n' "$checksum_line" | shasum -a 256 -c -
249
+ fi
250
+ tar -xzf "$asset" chezmoi
251
+ mkdir -p "$destination"
252
+ install -m 755 chezmoi "$destination/chezmoi"
253
+ ); then
254
+ rm -rf "$temp_dir"
255
+ return 1
256
+ fi
257
+
258
+ rm -rf "$temp_dir"
259
+ }
260
+
199
261
  # 3. Install Chezmoi (in parallel with other checks where possible)
200
262
  install_chezmoi() {
201
263
  if command -v chezmoi >/dev/null; then
@@ -231,11 +293,15 @@ main() {
231
293
  fi
232
294
  return 0
233
295
  fi
234
- echo "" >&2
235
- echo " tools/ci/install-chezmoi-verified.sh is missing; cannot verify chezmoi bootstrap." >&2
236
- echo " Install chezmoi manually (brew install chezmoi / official binary)" >&2
237
- echo " and re-run install.sh." >&2
238
- return 1
296
+ echo " Using embedded checksum verifier..."
297
+ if ! install_chezmoi_verified_embedded "${CHEZMOI_VERSION:-2.47.1}" "$bin_dir"; then
298
+ echo "" >&2
299
+ echo " The embedded checksum-verified chezmoi bootstrap failed." >&2
300
+ echo " Refusing to fall back to an unverified remote script." >&2
301
+ echo " Install chezmoi manually from https://www.chezmoi.io/install/" >&2
302
+ return 1
303
+ fi
304
+ return 0
239
305
  fi
240
306
  }
241
307
 
@@ -369,7 +435,7 @@ main() {
369
435
  # 6. Initialize & Apply
370
436
  step "Applying Configuration..."
371
437
 
372
- # ── Auto-migration for v0.2.519 reorg ─────────────────────────────────
438
+ # ── Auto-migration for v0.2.521 reorg ─────────────────────────────────
373
439
  # If the user is upgrading from a pre-0.2.503 install, run the
374
440
  # migration script BEFORE `chezmoi apply` so the reorg's source-
375
441
  # path moves don't cause chezmoi to delete deployed files.
@@ -378,7 +444,7 @@ main() {
378
444
  for migrate_src in "$SOURCE_DIR" "$LEGACY_SOURCE_DIR"; do
379
445
  migrate_script="$migrate_src/install/migrate/migrate-v0_2-to-v0_2_503.sh"
380
446
  if [[ -x "$migrate_script" ]]; then
381
- echo " Running v0.2.519 migration (idempotent; safe on fresh installs)..."
447
+ echo " Running v0.2.521 migration (idempotent; safe on fresh installs)..."
382
448
  "$migrate_script" || echo " migration exited non-zero — continuing apply"
383
449
  break
384
450
  fi
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@sebastienrousseau/dotfiles",
3
- "version": "0.2.519",
3
+ "version": "0.2.521",
4
4
  "description": "The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.",
5
5
  "main": "install.sh",
6
6
  "bin": {
7
7
  "dotfiles-install": "./install.sh"
8
8
  },
9
9
  "scripts": {
10
+ "prepack": "node scripts/qa/verify-npm-package.mjs",
10
11
  "test": "bash ./scripts/qa/reliability-audit.sh",
11
12
  "test:quick": "bash ./scripts/qa/reliability-audit.sh --quick",
12
13
  "test:unit": "bash ./scripts/qa/reliability-audit.sh --unit-only",
@@ -48,7 +49,7 @@
48
49
  "email": "sebastienrousseau@users.noreply.github.com",
49
50
  "url": "https://sebastienrousseau.com"
50
51
  },
51
- "license": "MIT",
52
+ "license": "Apache-2.0 OR MIT",
52
53
  "bugs": {
53
54
  "url": "https://github.com/sebastienrousseau/dotfiles/issues"
54
55
  },
@@ -66,13 +67,12 @@
66
67
  },
67
68
  "files": [
68
69
  "install.sh",
70
+ "tools/ci/install-chezmoi-verified.sh",
71
+ "tools/README.md",
69
72
  "README.md",
70
- "LICENSE",
73
+ "LICENSE-APACHE",
74
+ "LICENSE-MIT",
71
75
  "CHANGELOG.md",
72
- "docs/",
73
- "dot_config/",
74
- "dot_local/",
75
- "scripts/",
76
- "templates/"
76
+ "package.json"
77
77
  ]
78
78
  }
@@ -0,0 +1,49 @@
1
+ # `tools/` — Repo-Only Operations
2
+
3
+ Everything in this directory is **internal to the repo** — CI helpers,
4
+ release tooling, documentation generators, maintenance jobs. Nothing
5
+ here ships to end users; the `dot` CLI doesn't dispatch to anything
6
+ under `tools/`.
7
+
8
+ Per the v0.2.503 reorg (`docs/operations/RFC_v0_2_503_reorganization.md`
9
+ Phase 5), this directory holds what used to live under
10
+ `scripts/{ci,release,maintenance,docs}/`. The split clarifies which
11
+ scripts a downstream distro packager needs to ship (`scripts/` +
12
+ `lib/` + `bin/`) versus which only run in this repo's own CI
13
+ (`tools/`).
14
+
15
+ ## Subtree map
16
+
17
+ | Path | Purpose | Touched by |
18
+ |---|---|---|
19
+ | `tools/ci/` | CI-only helpers. `dot-cli-startup-bench.sh`, `install-chezmoi-verified.sh`, `windows-smoke-test.ps1`, `run-coverage.sh`, etc. | `.github/workflows/*` |
20
+ | `tools/release/` | Release-time tasks. | Release workflow + `gh release create` flow |
21
+ | `tools/maintenance/` | Recurring upkeep: `check-updates.sh`, etc. | Cron, manual |
22
+ | `tools/docs/` | Documentation-generation helpers: `generate-command-index.sh`, manual builds, screenshot capture. | `manual-publish.yml`, `dot manual`, doc-drift |
23
+
24
+ ## Why this directory exists
25
+
26
+ The R4 audit (`docs/operations/HARD_AUDIT_2026.md` §8.3 P4) flagged
27
+ the framework / repo-ops intermingling under `scripts/` as a
28
+ contributor-onboarding cost. New contributors couldn't tell:
29
+
30
+ > "Is `scripts/ci/install-chezmoi-verified.sh` part of the CLI, or
31
+ > is it just a CI helper?"
32
+
33
+ Splitting them physically answers the question without anyone
34
+ having to grep. `scripts/` is now exclusively the runtime-invoked
35
+ surface; `tools/` is exclusively repo-internal.
36
+
37
+ ## Conventions
38
+
39
+ Same as `scripts/`:
40
+
41
+ - Shell style: 2-space indent, `set -euo pipefail`, shellcheck-clean.
42
+ - Format with `shfmt -i 2 -ci`.
43
+ - Source `lib/dot/ui.sh` for output (no raw `printf`).
44
+
45
+ ## See also
46
+
47
+ - `../docs/STRUCTURE.md` — top-level repo map.
48
+ - `scripts/README.md` — the runtime-invoked sister tree.
49
+ - `docs/operations/RFC_v0_2_503_reorganization.md` — Phase 5 spec.
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env bash
2
+ # SPDX-License-Identifier: Apache-2.0 OR MIT
3
+ # Copyright (c) 2015-2026 Sebastien Rousseau
4
+ # Install a pinned Chezmoi release with checksum verification.
5
+ set -euo pipefail
6
+
7
+ VERSION="${1:-}"
8
+ BIN_DIR="${2:-$HOME/.local/bin}"
9
+
10
+ if [[ -z "$VERSION" ]]; then
11
+ echo "Usage: $0 <chezmoi-version> [bin-dir]" >&2
12
+ exit 1
13
+ fi
14
+
15
+ OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
16
+ ARCH="$(uname -m)"
17
+
18
+ case "$OS" in
19
+ linux | darwin) ;;
20
+ *)
21
+ echo "Unsupported OS: $OS" >&2
22
+ exit 1
23
+ ;;
24
+ esac
25
+
26
+ case "$ARCH" in
27
+ x86_64 | amd64) ARCH="amd64" ;;
28
+ arm64 | aarch64) ARCH="arm64" ;;
29
+ *)
30
+ # chezmoi ships amd64 + arm64 builds only. Other architectures
31
+ # (ppc64le, s390x, riscv64, armv7) would need a source build.
32
+ echo "Unsupported architecture: $ARCH (only x86_64/amd64 and arm64/aarch64 are supported)" >&2
33
+ echo "See https://github.com/twpayne/chezmoi/releases for the full asset list." >&2
34
+ exit 1
35
+ ;;
36
+ esac
37
+
38
+ ASSET="chezmoi_${VERSION}_${OS}_${ARCH}.tar.gz"
39
+ CHECKSUMS_ASSET="chezmoi_${VERSION}_checksums.txt"
40
+ BASE_URL="https://github.com/twpayne/chezmoi/releases/download/v${VERSION}"
41
+
42
+ TMP_DIR="$(umask 077 && mktemp -d)"
43
+ trap 'rm -rf "$TMP_DIR"' EXIT
44
+
45
+ # Support both old and new checksum filenames.
46
+ if ! curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/$CHECKSUMS_ASSET"; then
47
+ curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/checksums.txt"
48
+ fi
49
+ curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/$ASSET" "$BASE_URL/$ASSET"
50
+
51
+ CHECKSUM_LINE="$(grep -E "[[:space:]]${ASSET}$" "$TMP_DIR/checksums.txt" | head -n1 || true)"
52
+ if [[ -z "$CHECKSUM_LINE" ]]; then
53
+ echo "Checksum entry not found for $ASSET" >&2
54
+ exit 1
55
+ fi
56
+
57
+ (
58
+ cd "$TMP_DIR"
59
+ if command -v sha256sum >/dev/null 2>&1; then
60
+ echo "$CHECKSUM_LINE" | sha256sum -c -
61
+ else
62
+ echo "$CHECKSUM_LINE" | shasum -a 256 -c -
63
+ fi
64
+ )
65
+
66
+ tar -xzf "$TMP_DIR/$ASSET" -C "$TMP_DIR" chezmoi
67
+ mkdir -p "$BIN_DIR"
68
+ install -m 755 "$TMP_DIR/chezmoi" "$BIN_DIR/chezmoi"
@@ -1,73 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Localization Readability Audit
6
-
7
- Note: Flesch metrics are English-centric. For localized pages, they are used as a plain-language proxy when Latin word boundaries are available.
8
-
9
- ## Readability Scorecard
10
-
11
- | Language | Reading Ease | Grade Level | Passive % | Avg Sentence Length |
12
- | :--- | ---: | ---: | ---: | ---: |
13
- | ar | n/a | n/a | n/a | n/a |
14
- | de | n/a | n/a | n/a | n/a |
15
- | es | n/a | n/a | n/a | n/a |
16
- | fr | n/a | n/a | n/a | n/a |
17
- | he | n/a | n/a | n/a | n/a |
18
- | hi | n/a | n/a | n/a | n/a |
19
- | id | n/a | n/a | n/a | n/a |
20
- | it | n/a | n/a | n/a | n/a |
21
- | ja | n/a | n/a | n/a | n/a |
22
- | ko | n/a | n/a | n/a | n/a |
23
- | nl | n/a | n/a | n/a | n/a |
24
- | pl | n/a | n/a | n/a | n/a |
25
- | pt | n/a | n/a | n/a | n/a |
26
- | ro | n/a | n/a | n/a | n/a |
27
- | ru | n/a | n/a | n/a | n/a |
28
- | th | n/a | n/a | n/a | n/a |
29
- | tr | n/a | n/a | n/a | n/a |
30
- | uk | n/a | n/a | n/a | n/a |
31
- | vi | n/a | n/a | n/a | n/a |
32
- | zh | n/a | n/a | n/a | n/a |
33
- | zh-tw | n/a | n/a | n/a | n/a |
34
-
35
- ## Parity Gap Table
36
-
37
- | Priority | Locale | Route | Deviation |
38
- | :--- | :--- | :--- | :--- |
39
-
40
- ## Active & Simple Diff
41
-
42
- ### docs/adr/ADR-007-multi-shell-parity.md
43
-
44
- - Source: **Nushell spoke:** Hybrid approach: - Aliases: Runtime bash extraction cached to (in ), sourced by - Functions: Chezmoi template-generated wrappers delegating to bash (in ) **Parity tiers:** - **Tier 1 (Full):** Zsh, Bash — all aliases, functions, lazy loading, cached eval - **Tier 2 (Bridged):** Fish — all simple aliases, all functions via wrappers, caching - **Tier 3 (Compatible):** Nushell — simple aliases (no complex bash syntax), all functions via bash delegation - Single source of truth for aliases and functions - Adding a new alias/function automatically propagates to all shells - Nushell users get access to 40+ functions that were previously unavailable - Fish users get mtime-aware caching via - Complex bash aliases (pipes, conditionals) are skipped for Nushell - Function calls in Fish/Nushell incur bash subprocess overhead (~5ms per call) - Cache invalidation requires shell restart or manual cache clear - Nushell's rapid development may break bridge syntax in future versions - Very large alias sets may slow Nushell startup during cache generation.
45
- - Simplified: **Nushell spoke:** Hybrid approach: - Aliases: Runtime bash extraction cached to (in ), sourced by - Functions: Chezmoi template-generated wrappers delegating to bash (in ) **Parity tiers:** - **Tier 1 (Full):** Zsh, Bash — all aliases, functions, lazy loading, cached eval - **Tier 2 (Bridged):** Fish — all simple aliases, all functions via wrappers, caching - **Tier 3 (Compatible):** Nushell — simple aliases (no complex bash syntax), all functions via bash delegation - Single source of truth for aliases and functions -. Adding a new alias/function automatically propagates to all shells - Nushell users get access to 40+ functions that were previously unavailable - Fish users get mtime-aware caching via - Complex bash aliases (pipes, conditionals) are skipped for Nushell - Function calls in Fish/Nushell incur bash subprocess overhead (~5ms per call) - Cache invalidation requires shell restart or manual cache clear - Nushell's rapid development may break bridge syntax in future versions - Very large alias sets may slow Nushell startup during cache generation
46
-
47
- ### docs/guides/TROUBLESHOOTING.md
48
-
49
- - Source: ) **Problem:** LSP not working - Install required language servers - Check for status - Review for errors **Problem:** Git aliases not working - Check if Git config is applied: - Re-apply dotfiles: **Problem:** Delta (diff pager) not showing colors - Verify is installed - Confirm your terminal supports 256 colors **Problem:** kubectl context issues - List contexts: - Switch context: - Check kubeconfig: **Problem:** Minikube won't start - Verify Docker is running - Try: - Check logs: **Problem:** High memory usage - Look for runaway processes: or - Review shell history size in atuin config - Disable unused plugins **Problem:** Nix isn't installed or commands not found - Ensure you have followed the installation guide: - On Linux, you might need to enable experimental features in : - Verify the daemon is running: **Problem:** Systemd isn't available (mostly WSL2) - Dotfiles functions that rely on systemd (like management) will fallback to direct execution.
50
- - Simplified: ) **Problem:** LSP not working - Install required language servers - Check for status - Review for errors **Problem:** Git aliases not working - Check if Git config is applied: - Re-apply dotfiles: **Problem:** Delta (diff pager) not showing colors - Verify is installed - Confirm your terminal supports 256 colors **Problem:** kubectl context issues - List contexts: - Switch context: - Check kubeconfig: **Problem:** Minikube won't start - Verify Docker is running - Try: - Check. logs: **Problem:** High memory usage - Look for runaway processes: or - Review shell history size in atuin config - Disable unused plugins **Problem:** Nix isn't installed or commands not found - Ensure you have followed the installation guide: - On Linux, you might need to enable experimental features in : - Verify the daemon is running: **Problem:** Systemd isn't available (mostly WSL2) - Dotfiles functions that rely on systemd (like management) will fallback to direct execution
51
-
52
- ### docs/operations/VERSION_SYNC.md
53
-
54
- - Source: sh --verify || echo "Version drift detected" The GitHub Actions workflow provides metrics: - Files scanned - Files updated - Verification status - Processing time - Local backups in - GitHub Actions artifacts (30-day retention) - Git history for rollback permissions: contents: write # Required for commits pull-requests: write # Required for PR comments - Version format validation ( pattern) - File path validation (no directory traversal) - Change verification before commit - All changes logged in Git history - GitHub Actions run history - Backup preservation - Git operations use shallow fetch when possible - Pattern compilation cached - File discovery optimized with - File processing is sequential but optimized - Git operations batched - Verification runs concurrently with updates - Typical run time: 30-60 seconds - Memory usage: <100MB - Network usage: Minimal (only Git operations) 1.
55
- - Simplified: sh --verify || echo "Version drift detected" The GitHub Actions workflow provides metrics: - Files scanned - Files updated - Verification status - Processing time - Local backups in - GitHub Actions artifacts (30-day retention) - Git history for rollback permissions: contents: write # Required for commits pull-requests: write # Required for PR comments - Version format validation ( pattern) - File path validation (no directory traversal) - Change. verification before commit - All changes logged in Git history - GitHub Actions run history - Backup preservation - Git operations use shallow fetch when possible - Pattern compilation cached - File discovery optimized with - File processing is sequential but optimized - Git operations batched - Verification runs concurrently with updates - Typical run time: 30-60 seconds - Memory usage: <100MB - Network usage: Minimal (only Git operations) 1
56
-
57
- ## Localized Terminology Glossary
58
-
59
- | Term | Rule |
60
- | :--- | :--- |
61
- | macOS | Keep official Apple spelling in all locales. |
62
- | Linux | Keep as Linux. |
63
- | WSL | Keep as WSL on first use. |
64
- | Chezmoi | Keep product name in English. |
65
- | `dot doctor` | Keep command unchanged in all locales. |
66
- | shell | Localize only in prose; never inside commands or paths. |
67
- | alias | Localize in prose when natural; keep code examples unchanged. |
68
-
69
- ## Priority Action Register
70
-
71
- - [P0] Meaning Drifts: 0
72
- - [P1] Readability Blockers: 0
73
- - [P2] Stylistic Polishing: 0
package/docs/AI.md DELETED
@@ -1,179 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # AI Integrations (Opt-in)
6
-
7
- AI helpers are **off by default**. You choose if and when to turn them on.
8
-
9
- ```bash
10
- export DOTFILES_AI=1
11
- exec zsh
12
- ```
13
-
14
- This enables the local helper scripts and the `dot ai` command surface. It does **not** install any AI tools or run any background service.
15
-
16
- ## Why `dot ai`?
17
-
18
- `claude` is one tool. **`dot ai` is the cockpit for your whole AI-CLI fleet.** Use it to install the tools, launch any of them with one keystroke, meter their cost in one place, and — the headline — run every one of them on your single Claude subscription through a built-in local gateway.
19
-
20
- You use `claude` to talk to Claude. You use `dot ai` to run *everything else* on Claude and keep one cockpit over all of it.
21
-
22
- ## Quick start
23
-
24
- ```bash
25
- dot ai install all # install the fleet (only what's missing)
26
- dot ai # open the cockpit (TUI)
27
- dot ai "fix the auth bug" # one-shot on Claude — just like `claude "…"`
28
- dot ai serve # serve your Claude subscription locally to the fleet
29
- ```
30
-
31
- ## Command surface
32
-
33
- The interface is flat and verb-first, modelled on the Claude CLI: bare opens an interactive view, a prompt runs it, and old commands keep working as deprecated aliases.
34
-
35
- | Command | What it does |
36
- |---------|--------------|
37
- | `dot ai` | Open the **cockpit** — a Bubble Tea TUI for the fleet, gateway, and cost |
38
- | `dot ai "<prompt>"` | One-shot prompt on Claude |
39
- | `dot ai <tool> "<prompt>"` | One-shot prompt on a named tool (e.g. `dot ai codex "add tests"`) |
40
- | `dot ai chat [tool]` | Open an interactive session (picker if no tool) |
41
- | `dot ai tools` | Install / manage the fleet |
42
- | `dot ai install [all\|<tool>]` | Install all missing tools, or one |
43
- | `dot ai serve [stop\|status]` | Start the local Claude gateway **and** route the fleet through it |
44
- | `dot ai cost` | Spend report across providers |
45
- | `dot ai login [tool]` | Authenticate a tool |
46
- | `dot ai doctor` | Health-check the fleet and the gateway |
47
- | `--style <name>` | Steer any prompt with a pattern (see [Steering styles](#steering-styles)) |
48
-
49
- ## The cockpit (`dot ai`)
50
-
51
- Running `dot ai` on a terminal opens a glamorous, chat-centric TUI (built with [Bubble Tea](https://github.com/charmbracelet/bubbletea), Charm/Crush-style):
52
-
53
- - **Header** — the `◆ dot ai` wordmark plus gateway status (`● :3456` / `○ off`) and today's cost as colour chips.
54
- - **Left** — the fleet grouped by role, with `●`/`○` install markers and a `▌` selection accent.
55
- - **Right** — a **chat panel**: pick a tool, type a prompt in the input box, press `Enter`, and the response streams back in the transcript — all without leaving the TUI.
56
-
57
- ```text
58
- Tab focus ↑↓ move ⏎ send s serve i install c refresh q quit
59
- ```
60
-
61
- Two modes per tool: **Enter on the fleet** opens the tool's *full native session* (where its own `/exit`, `/model`, `/clear`, … work); **Tab / `/`** drops into the quick in-cockpit streaming chat. In the chat input, typing `/` opens a **tool-aware command palette** — the cockpit commands (`/help /clear /style /tool /serve /cost /exit`, which run in-chat) plus the selected provider's common REPL commands (`/compact /model /resume /agents` for claude; `/add /diff /commit` for aider; `/approvals /status` for codex; …), tagged `→ <tool> session`. Navigate with `↑↓`, `Tab` to complete, `Enter` to run. Prompts run through `dot ai <tool>`, so the cockpit and the command line behave identically.
62
-
63
- The cockpit also offers a **model picker** (`/model <name>` or the `m` key cycles `default → opus → sonnet → haiku`; the active model shows in the header and is applied to the Claude engine via `ANTHROPIC_MODEL`), **session persistence** (each completed turn is saved to `$XDG_STATE_HOME/dot-ai-tui/session.json`; `/resume` restores your last conversation, `/save` snapshots the current one), and **desktop notifications** when a reply takes longer than ~8s (macOS `osascript` / Linux `notify-send`). In non-interactive contexts (CI, pipes) `dot ai` falls back to a plain text fleet listing. The cockpit binary (`dot-ai-tui`) is built on `chezmoi apply` via the mise-managed Go toolchain; `DOT_AI_SNAPSHOT=1 dot-ai-tui` prints a single frame for previews.
64
-
65
- ## Steering styles
66
-
67
- Styles in `~/.dotfiles/dot_config/ai/patterns/` add focused context to any prompt with `--style <name>`:
68
-
69
- - **architect** — shell setup and stack tuning
70
- - **hardener** — security, encryption, and compliance
71
- - **refactor** — POSIX compatibility, performance, and linting
72
-
73
- ```bash
74
- dot ai claude --style architect "optimize my zshrc"
75
- dot ai agy --style hardener "audit my ssh config"
76
- ```
77
-
78
- The bridge also injects system details (OS, architecture, date) so the model has the context it needs. Quick aliases ship for the common combinations: `dcla` (Claude + architect), `dagyh` (Antigravity + hardener), `dkir` (Kiro + refactor).
79
-
80
- ## Running tools
81
-
82
- ```bash
83
- dot ai "explain this stack trace" # one-shot on Claude
84
- dot ai codex "add a test for parse()" # one-shot on a specific tool
85
- dot ai chat # pick a tool and open its session
86
- dot ai chat aider # open aider directly
87
- ```
88
-
89
- ## The local Claude gateway (`dot ai serve`)
90
-
91
- Run one Claude subscription locally and point your whole fleet at it — with **no third-party dependency**. `dot-ai-serve` is a small, stdlib-only Python server (no pip packages) that wraps the `claude` CLI you already have and exposes the standard Anthropic (`/v1/messages`) **and** OpenAI (`/v1/chat/completions`) endpoints. Any tool that speaks either protocol — codex, aider, Open WebUI, an OpenAI SDK — connects to `http://127.0.0.1:3456` and gets Claude on your existing subscription.
92
-
93
- ```bash
94
- claude login # one-time: authenticate the engine
95
- dot ai serve # start the gateway AND route the non-Claude fleet
96
- dot ai serve status # process + /health + routing state
97
- dot ai serve stop # stop the gateway and un-route
98
- ```
99
-
100
- **Native session, never a key.** The gateway authenticates through your `claude` CLI's native session — there is no API key anywhere. Routing is applied **per-invocation** to non-Claude tools (`dot ai codex "…"`); it is **not** sourced into your interactive shell. The primary `claude` is never routed — it always uses its own native session, so claude.ai connectors stay enabled. (Setting `ANTHROPIC_API_KEY` in your shell would disable those connectors, which is exactly why routing stays scoped to each tool's subprocess.)
101
-
102
- **Streaming, routing & metering.** Replies stream **token-by-token** (real SSE for both protocols). Model **aliases/routing** map friendly names to a Claude tier — `cheap`/`fast` → haiku, `smart` → opus, and common OpenAI ids (`gpt-4` → sonnet, `gpt-3.5-turbo` → haiku); extend with `DOT_AI_MODEL_MAP`. Every request is **metered**: `GET /metrics` (Prometheus text) and `GET /v1/usage` (JSON) report requests, tokens, and estimated cost per model. An optional `DOT_AI_DAILY_BUDGET` (USD) caps daily spend — once reached, requests get `429`.
103
-
104
- **Config:** `DOT_AI_HOST` (default `127.0.0.1`), `DOT_AI_PORT` (default `3456`), `DOT_AI_DEFAULT_MODEL` (default `sonnet`), `DOT_AI_API_KEY` (optional shared secret), `DOT_AI_DAILY_BUDGET` (USD, `0` = off), `DOT_AI_MODEL_MAP` / `DOT_AI_PRICING` (JSON overrides).
105
-
106
- **Security:** the server binds to loopback by default. If you set `DOT_AI_HOST` to a LAN address, both the launcher *and* the server itself refuse to start unless `DOT_AI_API_KEY` is set — an unprotected network proxy leaks your subscription.
107
-
108
- **Engine limits.** The gateway wraps the `claude` CLI (an agent), not the raw API, so two things are handled gracefully rather than forwarded: **image** blocks are acknowledged inline but not sent (the engine is text-only), and **function/tool-calling** requests are answered in plain text (the CLI can't return caller-defined `tool_use` blocks). Session resumption is still out of scope.
109
-
110
- ## The fleet
111
-
112
- These tools are not installed for you. Install what you want with `dot ai install <tool>` (or `dot ai install all`):
113
-
114
- - **Agents (autonomous)** — full coding agents that plan and execute:
115
- - `claude` — Anthropic's flagship agentic coder (Claude Code)
116
- - `codex` — OpenAI's autonomous coding agent
117
- - `copilot` — GitHub Copilot in the terminal
118
- - `goose` — Block's open-source coding agent
119
- - `crush` — Charm's glamorous TUI coding agent
120
- - `amp` — Sourcegraph's agentic coder
121
- - `cursor-agent` — Cursor's terminal agent
122
- - `grok` — xAI's terminal coding agent (Grok Build; needs a SuperGrok / X Premium+ plan)
123
- - `kimi` — Moonshot AI's Kimi Code CLI; installed natively to `~/.kimi-code/bin/kimi` and supports native interactive use and one-shot prompts
124
-
125
- - **Coding (interactive)** — focused pair-programming assistants:
126
- - `aider` — Git-aware AI pair programmer
127
- - `opencode` — open-source terminal coding agent
128
- - `autohand` — autonomous multi-file coding agent
129
- - `vibe` — Mistral's coding agent
130
- - `qwen` — Alibaba Qwen coding assistant
131
- - `zai` — Zhipu GLM coding agent
132
-
133
- - **General (prompt-based)** — quick prompt/shell helpers:
134
- - `agy` — Google's Antigravity agent
135
- - `sgpt` — ChatGPT for the shell (Shell-GPT)
136
-
137
- - **Runtime (local)**:
138
- - `ollama` — run local **and** cloud-hosted open models (`ollama signin` for cloud)
139
-
140
- - **Cloud (platform)**:
141
- - `kiro-cli` — AWS's agentic dev assistant
142
-
143
- `dot ai tools` shows install status grouped by role and offers an interactive install picker. Status is cached in `~/.cache/dotfiles/ai/status.tsv` for 5 minutes (tune with `DOTFILES_AI_STATUS_TTL`).
144
-
145
- ## Run cost and telemetry
146
-
147
- Every run through the bridge is logged to a local SQLite database (`~/.local/share/dotfiles-ai.db`). `dot ai cost` reports spend across providers, and the cockpit's cost panel and recent-runs list read from the same log. Token-level cost is populated for providers that surface it (and for everything routed through `dot ai serve`).
148
-
149
- ## Deprecated commands
150
-
151
- The old command shapes still work, but print a one-line hint pointing at the new name. Update your muscle memory when convenient — the shortcut aliases (`dcl`, `dagy`, `dki`, …) already target the new surface.
152
-
153
- | Deprecated | Use instead |
154
- |------------|-------------|
155
- | `dot cl` | `dot ai claude` |
156
- | `dot codex` / `dot copilot` / `dot kimi` / `dot agy` / `dot goose` | `dot ai codex` / `dot ai copilot` / `dot ai kimi` / `dot ai agy` / `dot ai goose` |
157
- | `dot kiro` / `dot sgpt` / `dot ollama` / `dot opencode` | `dot ai kiro` / `dot ai sgpt` / `dot ai ollama` / `dot ai opencode` |
158
- | `dot aider` / `dot autohand` / `dot vibe` / `dot qwen` / `dot zai` | `dot ai aider` / `dot ai autohand` / `dot ai vibe` / `dot ai qwen` / `dot ai zai` |
159
- | `dot ai status` | `dot ai tools` |
160
- | `dot ai dashboard` / `dot ai dash` | `dot ai` (the cockpit) |
161
- | `dot ai proxy …` / `dot ai local on\|off` | `dot ai serve` |
162
- | `dot ai-setup` | `dot ai login` |
163
- | `dot ai-query` | `dot ai ask` |
164
- | `--pattern <name>` | `--style <name>` |
165
-
166
- ## Agentic terminal workflows
167
-
168
- If your terminal has built-in AI agents, keep your shell lean and fast:
169
-
170
- - Use `DOTFILES_FAST=1` or `DOTFILES_ULTRA_FAST=1`.
171
- - Let the terminal handle agents and its own UI.
172
- - Keep dotfiles focused on consistency, safety, and clean repeats.
173
-
174
- ## Privacy and safety
175
-
176
- - No AI tools are installed for you.
177
- - No background services run by default; the gateway runs only while you keep `dot ai serve` up.
178
- - You control AI helpers with `DOTFILES_AI=1`.
179
- - The gateway uses your native Claude session — no API keys are stored or required.
package/docs/CNAME DELETED
@@ -1 +0,0 @@
1
- doc.dotfiles.io