akm docs

Migration notes for akm v0.9.0

These notes apply to the 0.9.0 release candidates and final release. If you were already running a 0.9.0 beta, align scripts, prompts, and stash layout with the current command surface and verify every durable artifact before normal use.

Heads-up: 0.9.x is a refactoring and clean-up release series. Patch releases may include breaking changes (each called out in the CHANGELOG with a migration note) until the remaining technical debt is paid off; the 0.10.x series returns to bug fixes and tuning with breaking changes only in major and minor releases. See STABILITY.md for the full policy.

Key operator-facing changes:

Primary public command family for 0.9.0:

Release validation

Unit/integration test counts below are point-in-time snapshots from the validation passes named next to each figure, not a promise about the count on any later commit — the suite keeps growing after each pass. Run bun run check yourself for the current count; do not treat a number below as still accurate.

Release validation was repeated on 2026-07-31. An isolated manual pass covered 114 first-run, CLI, indexing, search/show, output-format, strict-flag, tools-only agent classification, multi-bundle write/lint, workflow, task, llm-wiki, env/secret, feedback/log, config/migration, health, upgrade, and registry checks with no failures. bun run release:check, as run on 2026-07-31, verified the packed npm installation, Node fallback and Bun launcher paths, migration and task execution from published 0.8.14, the Linux standalone scheduler artifact, its then-current unit/integration test counts, and all seven Docker install targets. The gated semantic-search suite passed 9 tests; Node 24 passed all 9 fallback smoke steps and 25 compatibility tests.

The post-release checklist audit added a separate 125-check deterministic pass for cross-bundle identity, write fidelity, output destinations, lint/task behavior, env secrecy, durable log cursors, workflow transitions, proposal dry-runs, setup recovery, fresh health initialization, and source-install safety. It passed 125/125 on Linux. The branch as of that same pass also passed bun run check and bun run build.

A container-isolated follow-up passed 188 destructive crash/recovery checks, including real SIGKILL windows across proposal, workflow, and lock journals, plus deterministic interruption replay across phase-free migration sentinels. The container also passed release:check --skip-docker, the seven-image Docker install matrix, 9 semantic-search tests, all 9 Node 22 smoke steps, all 25 Node compatibility tests, and the offline full gate. This pass exposed and fixed host-scheduler and co-located Node/Bun assumptions in three tests; no production behavior changed.

Live credential-backed agent/LLM calls and native macOS/Windows execution were not run from this Linux host. Their deterministic paths remain covered by the full unit/integration suite; release artifacts still require their normal platform CI/release checks.

Required upgrade checks:

0.9.0 command-surface overhaul (hard break, no aliases)

The 0.9.0 CLI surface was restructured in full. Known retired spellings fail with UNKNOWN_COMMAND and a replacement hint. Update assets, scripts, task YAML, prompts, and agent instructions (CLAUDE.md quick references) using this table, then run akm task sync --rebind once so installed schedules re-emit the new spellings. akm hints prints the complete agent guide (--detail brief selects the compact version), while akm help agents is short by default; the root akm --help groups the surviving surface into AGENT LOOP / ASSETS / AUTOMATION / SYSTEM sections, including migrate under SYSTEM. For migration usage details rather than the bare --help listing, see the migration guide.

Command renames and moves:

Old spelling 0.9.0 replacement
akm init akm bundle create
akm add <source> akm bundle add <source>
akm list akm bundle list
akm remove <source> akm bundle remove <source>
akm update akm bundle update (self-update stays akm upgrade)
akm tasks <sub> akm task add|run|sync|doctor|history (singular; list, show, remove, init, enable, and disable are removed)
akm extract akm proposal extract
akm propose akm proposal new
akm log list akm log (now a single command)
akm registry search <q> akm search <q> --from registry
akm workflow template akm workflow create --print
akm workflow validate akm lint --type workflows (add --fail-on-flagged to keep CI-gate exit semantics)
akm config show akm config list

Removed outright (with the supported replacement procedure):

Removed Use instead
akm history akm log --ref <ref>
akm graph (all subcommands) counts in akm health; refresh via akm improve --strategy graph-refresh
akm lessons coverage / strength lesson strength is indexed; akm search --type lesson
akm mv move the file, then akm index + akm lint; optional bun scripts/rekey-asset-ref.ts <old-ref> <new-ref> (source checkout) carries ranking signal
akm log tail poll akm log --since @offset:<id> (durable cursor)
akm workflow watch akm log --run <run-id>
akm env set / env unset edit the .env file directly; akm loads it as-is
akm config validate config is validated on every load
akm task enable / disable edit enabled: in the task YAML, then akm task sync
akm task init akm setup seeds the default schedules
akm improve canary bun scripts/refresh-canary-set.ts [--refresh] (from a source checkout — helper scripts are not shipped in the npm package)
akm registry build-index bun scripts/build-registry-index.ts (maintainer tooling)
akm index --background removed (the flag never backgrounded; use --quiet)
akm setup --detect-only / --reset-recommended removed; environment detection runs inside akm setup, and akm info reports the configured capabilities
extract --watch / --debounce-ms schedule akm proposal extract --auto as a task

Flag and value renames:

Old New
search/curate --source stash|registry|both --from local|registry|all
remember/clone/improve/the task group --target <bundle> --bundle <bundle> (import, proposal accept, env create, env remove, secret set keep --target)

Environment and JSON-payload renames ("stash" is retired; the noun is "bundle" everywhere):

Old New
AKM_STASH_DIR AKM_BUNDLE_DIR
akm info field stashDir bundleDir
akm config path --all key stash bundle
bundle create result defaultStashUpdated / previousStashDir defaultBundleUpdated / previousBundleDir

Full changelog: https://github.com/itlackey/akm/blob/main/CHANGELOG.md