Skip to content
Apothem
CLI reference

install

CLI reference for the apothem install command.

Install a harness adapter configuration from the shared profile.

Synopsis

apothem install --harness NAME|all [--profile PATH] [--dry-run]
                 [--clean|--fresh] [--yes] [--project PATH]
                 [--quiet|-q] [--verbose|-v]
                 [--format plain|json] [--json] [--no-color]

Loads and validates the shared profile, selects a named adapter or the registry-wide all set, validates the materialization plan, and writes harness-native configuration plus support cohorts. Project-scope adapters require --project PATH.

The continuous-form alias apothem installing resolves to the same handler.

Blast-radius preview

install --harness all fans out into mixed scopes: project-scope adapters write under the supplied --project root, while user-scope adapters write under your home directory — outside that root. Before any file is written, the command prints the concrete targets grouped under two headings: those inside the project root and those under your home directory.

When the selection writes outside the project root, an interactive confirmation guards the home-rooted writes. --yes, a non-interactive shell (no TTY), --dry-run, and --format json each proceed without prompting. Only --dry-run writes nothing; --format json skips the preview and the confirmation prompt but still performs the writes. Declining the prompt aborts before any file is written.

Capability notes

Each adapter projects only the capabilities its harness supports natively; capabilities with no native surface are reported, not silently dropped. In plain mode this is a single grouped note per harness (for example Note: <harness> - 9 capabilities not projected; pass --verbose for detail); under --verbose each capability prints its own rationale line. The --format json envelope always carries the full warnings array regardless of verbosity.

Options

OptionDescription
--harness NAMEHarness adapter to install, or all for the registry-wide set (required). Run apothem harnesses list for registered names.
--profile PATHPath to shared profile YAML. Defaults to ~/.config/apothem/profile.yaml.
--dry-runPreview install without writing files.
--clean, --freshOpt-in clean slate: back up and remove the prior per-harness install state before installing.
--yesSkip per-target confirmation during a clean-slate removal (required for non-interactive --clean runs).
--project PATHProject root for project-scope harnesses.
--quiet, -qSuppress informational output; only errors are emitted.
--verbose, -vPrint each non-projected capability's rationale instead of the grouped per-harness note.
--format plain|jsonOutput format (default: plain).
--jsonShorthand for --format json.
--no-colorDisable ANSI color codes in output.
-h, --helpShow help and exit.

JSON output

When --json (or --format json) is supplied, a single JSON document is written to stdout:

{
  "status": "success",
  "command": "install",
  "action": "installed",
  "harness": "claude-code",
  "profile_path": "C:\\Users\\Example\\.config\\apothem\\profile.yaml",
  "project": null,
  "files_written": ["C:\\Users\\Example\\.claude\\settings.json"],
  "results": [],
  "warnings": [],
  "error": null,
  "output_path": "C:\\Users\\Example\\.claude\\settings.json"
}

For --dry-run:

{
  "status": "dry_run",
  "command": "install",
  "action": "dry_run",
  "harness": "claude-code",
  "files_written": [],
  "results": [],
  "warnings": [],
  "error": null
}

When --clean is supplied, the envelope additionally carries a clean object describing the removal phase — the per-target disposition list, whether the run was a preview, and the timestamped backup directory (null in a dry run):

{
  "clean": {
    "dry_run": true,
    "backup_dir": null,
    "targets": [
      {
        "path": "C:\\Users\\Example\\.claude",
        "present": true,
        "removed": false,
        "skipped_reason": null
      }
    ]
  }
}

A clean dry run previews both phases in one document: the removal preview under clean and the fresh-write preview under results.

Expected validation errors use the same envelope and include an error object:

{
  "status": "error",
  "command": "install",
  "harness": "all",
  "files_written": [],
  "error": {
    "code": "project.required",
    "field": "project",
    "reason": "project-scope harnesses require --project: cursor, gemini-cli, github-copilot, kimi-code, windsurf, codebuddy, kiro, trae, zed, glm.",
    "fix": "Pass --project PATH or select only user-scope harnesses."
  }
}

Examples

apothem install --harness claude-code
apothem install --harness claude-code --dry-run
apothem install --harness cursor --project . --profile ~/profile.yaml --json
apothem install --harness all --project . --dry-run --json
apothem Installing --harness claude-code   # continuous-form alias
apothem installing --harness claude-code   # lowercase variant

Exit codes

CodeMeaning
0Adapter installed successfully or dry-run planned cleanly
1Expected validation, profile, harness, project, or adapter error
2Partial batch materialization after at least one write

See also

  • apothem installing — continuous-form alias for this command (documented here; the CLI accepts both forms)
  • apothem update — re-apply current profile to a harness
  • apothem verify — confirm adapter is live
  • Getting Started — full installation guide

On this page