car-runtime 0.51.0 → 0.52.1

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.
package/docs/CLI.md ADDED
@@ -0,0 +1,3173 @@
1
+ # CAR CLI reference
2
+
3
+ > **Generated file — do not hand-edit below the task map.** Produced by
4
+ > `scripts/gen-cli-docs.sh` from `car --help` / `car help <command>` on car
5
+ > 0.52.1 (2026-09-04). Every subcommand the installed binary reports is
6
+ > below; a new subcommand cannot ship without appearing here the next time
7
+ > this script runs. To regenerate: `bash scripts/gen-cli-docs.sh`.
8
+ >
9
+ > 68 top-level commands, 101 nested subcommands
10
+ > (one level deep) — counted from the live binary at generation time, not
11
+ > typed by hand.
12
+
13
+ ## Finding your way around
14
+
15
+ `car` is one binary with 68 subcommands spanning several different jobs:
16
+ running the built-in agent, coding, local model management, OS integrations,
17
+ and installing other people's agents on your machine. This map groups the
18
+ commands people actually reach for; the full alphabetical reference with every
19
+ flag follows below.
20
+
21
+ ### Run an agent
22
+
23
+ - [`car do`](#car-do) — the general-purpose CAR Assistant. No goal opens an
24
+ interactive REPL; with a goal it runs once and prints the result. Ships
25
+ wired with files, a real shell, web access, and durable memory; runs
26
+ sandbox-first (a hardened Docker container) unless you pass `--local`.
27
+ - [`car board`](#car-board) — fullscreen supervision board for coder
28
+ sessions: attach to a run's history, confirm its outcome contract, answer
29
+ its questions, approve its diff.
30
+ - [`car agent`](#car-agent) — build and run in-daemon agents from
31
+ plain-language descriptions; nothing extra to install.
32
+ - [`car build`](#car-build) — build a runnable workflow from a
33
+ natural-language goal.
34
+ - [`car run-task`](#car-run-task) — headless entry point for external eval
35
+ harnesses: run a goal autonomously against stdio MCP tool servers, emitting
36
+ a JSONL transcript.
37
+
38
+ ### Code
39
+
40
+ - [`car code`](#car-code) — built-in coding agent: state an intent, confirm
41
+ the verifiable outcome contract, and CAR delivers it in an isolated git
42
+ worktree (natively or via an installed frontier CLI). Results land on a
43
+ `car/coder/<id>` branch after your approval; your checkout is never
44
+ touched.
45
+ - [`car code-task`](#car-code-task) — run a coder session headlessly and in
46
+ this process, driving to a green outcome contract and delivering a PR.
47
+ - [`car coder-ab`](#car-coder-ab) — A/B-test CAR's coder against an external
48
+ agent (Codex / Claude Code) over a corpus, and grow that corpus from git
49
+ history.
50
+
51
+ ### Models and media
52
+
53
+ - [`car setup`](#car-setup) — detect hardware, recommend, and install the
54
+ right model for this machine. Interactive walkthrough with no flags.
55
+ - [`car models`](#car-models) — manage local inference models: list, pull,
56
+ remove, benchmark, route, and more (see the subcommand table below).
57
+ - [`car infer`](#car-infer) — run text generation with a local model.
58
+ - [`car image`](#car-image) / [`car video`](#car-video) — generate an
59
+ image or video with a local MLX model.
60
+ - [`car speech`](#car-speech) — manage the CAR speech runtime, health
61
+ checks, and smoke tests.
62
+ - [`car embed`](#car-embed) — generate embeddings for text.
63
+ - [`car reason`](#car-reason) — reason about code: diagnose, suggest fixes,
64
+ explain.
65
+
66
+ ### Memory and skills
67
+
68
+ - [`car skills`](#car-skills) — manage learned skills (SkillRL-inspired).
69
+ - [`car dream`](#car-dream) — run memory consolidation ("dream") — prune,
70
+ GC, embed, evolve.
71
+ - [`car eval`](#car-eval) — evaluate agent improvement from stored
72
+ trajectories.
73
+
74
+ ### Auth and accounts
75
+
76
+ - [`car auth`](#car-auth) — Parslee account authentication for CAR
77
+ cloud-backed features (`login`, `status`, `logout`, `orgs`,
78
+ `switch-org`, `accounts`, `switch-account`).
79
+ - [`car parslee`](#car-parslee) — Parslee platform capabilities for the
80
+ signed-in account (requires `car auth login`).
81
+ - [`car keys`](#car-keys) — store cloud-provider API keys in the OS
82
+ keychain, so a native-app user never sets an environment variable.
83
+ - [`car secrets`](#car-secrets) — OS-native secret store (Keychain /
84
+ Credential Manager / Secret Service); aliased `secret`.
85
+ - [`car keychain`](#car-keychain) — OS keychain integration.
86
+ - [`car identity`](#car-identity) — show or change the name your assistant
87
+ answers to, in conversation, in the host apps, and as its voice wake word.
88
+
89
+ ### Install and supervise contributed agents
90
+
91
+ - [`car install`](#car-install) — install a contributed agent, from a local
92
+ directory or a registry reference.
93
+ - [`car ls`](#car-ls) — list every installed contributed agent (long alias
94
+ `agents`).
95
+ - [`car inspect`](#car-inspect) — inspect a single installed agent: on-disk
96
+ manifest plus the supervisor's current status.
97
+ - [`car start`](#car-start) / [`car stop`](#car-stop) /
98
+ [`car restart`](#car-restart) — control a supervised, installed agent.
99
+ - [`car tail-log`](#car-tail-log) — tail an installed agent's captured
100
+ stdout/stderr (long alias `logs`).
101
+ - [`car uninstall`](#car-uninstall) — uninstall a contributed agent
102
+ (idempotent).
103
+ - [`car registry`](#car-registry) — registry tooling: `digest` a manifest,
104
+ `validate` a registry directory, or print the canonical `schema`.
105
+ - [`car publish`](#car-publish) — publish a contributed agent to the
106
+ registry (signs, stages, opens a PR).
107
+
108
+ ### OS integrations
109
+
110
+ `car` reaches into the OS for accounts, calendar, contacts, mail, messages,
111
+ notes, reminders, photos, bookmarks, files, wearable health data, and browser
112
+ bookmarks, plus the permission preflight that gates them and voiceprint
113
+ enrollment. Most of these are cross-platform (TCC on macOS, WAM/Credential
114
+ Manager on Windows, GOA/xdg-desktop-portal on Linux, per the command's own
115
+ `--help`); `car notes`, `car reminders`, and `car photos` are macOS-only —
116
+ each says so in its own description below:
117
+ [`car accounts`](#car-accounts), [`car cal`](#car-cal),
118
+ [`car contacts`](#car-contacts), [`car mail`](#car-mail),
119
+ [`car messages`](#car-messages), [`car notes`](#car-notes),
120
+ [`car reminders`](#car-reminders), [`car photos`](#car-photos),
121
+ [`car bookmarks`](#car-bookmarks), [`car files`](#car-files),
122
+ [`car health`](#car-health), [`car permissions`](#car-permissions),
123
+ [`car voice`](#car-voice).
124
+
125
+ ### Diagnose an install
126
+
127
+ - [`car doctor`](#car-doctor) — diagnose (and optionally repair) a CAR
128
+ install: corrupt model weights, unparseable `~/.car` state files, version
129
+ skew, leftover files from a previous install. Runs against the local
130
+ filesystem only — no daemon required.
131
+ - [`car update`](#car-update) — update the locally-installed `car` CLI and
132
+ its sibling `car-server` daemon to the latest release (or a pinned
133
+ version), in place, reconciling drift between update channels.
134
+ - [`car purge`](#car-purge) — remove this install's own state under
135
+ `~/.car` and reap OS-level schedules CAR installed, for a clean slate
136
+ before reinstalling.
137
+ - [`car onboard`](#car-onboard) — onboarding readiness: what's set up and
138
+ what's still pending (headless equivalent of the CarHost setup wizard).
139
+ - [`car approvals`](#car-approvals) — the default posture for what agents
140
+ may do without asking (CLI counterpart to CarHost's Approvals settings).
141
+ - [`car info`](#car-info) — show runtime info.
142
+
143
+ ### Runtime internals
144
+
145
+ Lower-level commands mostly useful when embedding CAR or debugging the
146
+ runtime itself: [`car daemon`](#car-daemon) (start the daemon server),
147
+ [`car verify`](#car-verify) / [`car simulate`](#car-simulate) /
148
+ [`car optimize`](#car-optimize) (static proposal verification — see
149
+ [SPEC.md](./SPEC.md)), [`car replay`](#car-replay) (replay an event journal
150
+ and show reconstructed state), [`car policy-check-hook`](#car-policy-check-hook)
151
+ (evaluate a host's proposed tool call against `.car/policies/` for that
152
+ host's hook decision envelope), [`car ui`](#car-ui) (open the browser
153
+ dashboard served by the daemon), [`car project`](#car-project) (manage
154
+ CAR-managed, git-backed workspaces), [`car init`](#car-init) (initialize a
155
+ `.car/` project directory), [`car browse`](#car-browse) (browser
156
+ automation through the runtime), [`car schedule`](#car-schedule) (schedule
157
+ commands on a cadence via launchd / cron / schtasks).
158
+
159
+ ---
160
+
161
+ ## All commands
162
+
163
+ | Command | Description |
164
+ |---|---|
165
+ | [`car info`](#car-info) | Show runtime info |
166
+ | [`car capabilities`](#car-capabilities) | Print the deterministic CAR capability manifest |
167
+ | [`car ui`](#car-ui) | Open the browser dashboard served by the daemon |
168
+ | [`car verify`](#car-verify) | Statically verify a proposal |
169
+ | [`car simulate`](#car-simulate) | Simulate a proposal's state effects without executing |
170
+ | [`car optimize`](#car-optimize) | Optimize a proposal (remove phantom dependencies) |
171
+ | [`car replay`](#car-replay) | Replay an event journal and show reconstructed state |
172
+ | [`car run-cancel`](#car-run-cancel) | Cancel one active CAR run and print its deterministic durable receipt |
173
+ | [`car run-task`](#car-run-task) | Run a goal autonomously against stdio MCP tool servers, emitting a JSONL transcript. Headless entry point for external eval harnesses |
174
+ | [`car code-task`](#car-code-task) | Run a coder session headlessly and IN THIS PROCESS: derive or accept an outcome contract, work in a git worktree until the runtime's own re-run of that contract is green, then deliver the result as a pull request |
175
+ | [`car coder-ab`](#car-coder-ab) | A/B-test CAR's coder against an external agent (Codex / Claude Code) over a corpus, and grow that corpus from git history — the productionized dogfooding loop (docs/proposals/coder-ab-dogfood.md) |
176
+ | [`car keys`](#car-keys) | Store cloud-provider API keys in the OS keychain, so a native-app user never sets an environment variable (docs/proposals/native-secrets-no-env.md). The key is read env-first, keychain-fallback by the runtime |
177
+ | [`car daemon`](#car-daemon) | Start the daemon server (delegates to car-server binary) |
178
+ | [`car models`](#car-models) | Manage local inference models |
179
+ | [`car setup`](#car-setup) | Set up the right model for this machine — detect hardware, recommend, and install. Run with no flags for an interactive walkthrough |
180
+ | [`car speech`](#car-speech) | Manage CAR speech runtime, health checks, and smoke tests |
181
+ | [`car infer`](#car-infer) | Run text generation with a local model |
182
+ | [`car image`](#car-image) | Generate an image with a local MLX model |
183
+ | [`car video`](#car-video) | Generate a video with a local MLX model |
184
+ | [`car embed`](#car-embed) | Generate embeddings for text |
185
+ | [`car skills`](#car-skills) | Manage learned skills (SkillRL-inspired) |
186
+ | [`car reason`](#car-reason) | Reason about code: diagnose, suggest fixes, explain |
187
+ | [`car eval`](#car-eval) | Evaluate agent improvement from stored trajectories |
188
+ | [`car identity`](#car-identity) | Show or change the name your assistant answers to — in conversation, in the host apps, and as its voice wake word |
189
+ | [`car init`](#car-init) | Initialize a .car/ project directory for team-shared configuration |
190
+ | [`car doctor`](#car-doctor) | Diagnose (and optionally repair) a CAR install: corrupt model weights, unparseable `~/.car` state files, version skew, and leftover files from a previous install. Runs entirely against the local filesystem — no daemon required, so it works even when `car-server` won't start |
191
+ | [`car update`](#car-update) | Update the locally-installed `car` CLI and its sibling `car-server` daemon to the latest release (or `--version <X.Y.Z>`), in place — regardless of how they were installed. Reconciles the drift that otherwise builds up when one channel updates and another doesn't (e.g. CarHost.app auto-updates its bundled daemon via Sparkle but leaves the `/usr/local/bin/car` CLI behind). The npm/PyPI `car-runtime` client packages are separate — this command never touches them; `car doctor` reports which of your agents have drifted, and prints the exact command per environment. Both remedies pin: `npm install car-runtime@<version>` (`npm update` CANNOT cross a 0.x minor — npm reads `^0.41.0` as `>=0.41.0 <0.42.0`, so it is a no-op) and `<venv>/bin/python -m pip install -U car-runtime==<version>` (a bare `-U` can be silently defeated by the consumer's own pin, and the wrong interpreter installs into an environment that does not hold the stale wheel) |
192
+ | [`car purge`](#car-purge) | Remove this CAR install's own state under `~/.car` (config, logs, managed models, binaries) and reap any OS-level schedules CAR installed — for a clean slate before a reinstall. On macOS this also clears CarHost.app's user-level state and resets its privacy (TCC) permissions, so a reinstall really does re-run permission onboarding. NEVER touches the shared HuggingFace model cache (other tools use it); managed models are symlinks into it, so only the links are removed, not the multi-GB blobs. (To uninstall a single contributed agent instead, use `car uninstall <id>`.) |
193
+ | [`car code`](#car-code) | Built-in coding agent: state an intent, confirm the verifiable outcome contract, and CAR delivers it in an isolated git worktree — natively or via an installed frontier CLI. Results land on a `car/coder/<id>` branch after your approval; your checkout is never touched |
194
+ | [`car board`](#car-board) | Fullscreen supervision board for coder sessions — one screen for every run on this host, whoever started it (`car code`, CarHost, milo, another board). Attach to a run's full history, confirm its outcome contract, answer its questions, approve its diff, or scope work in a repo-grounded discussion first. Closing the board never stops a run |
195
+ | [`car do`](#car-do) | CAR Assistant: a general-purpose agent that works out of the box |
196
+ | [`car policy-check-hook`](#car-policy-check-hook) | Evaluate a host's proposed tool call against `.car/policies/` and answer on stdout with that host's hook decision envelope |
197
+ | [`car project`](#car-project) | Manage CAR-managed projects (a named, git-backed workspace CAR creates for you — no repo to pick) |
198
+ | [`car parslee`](#car-parslee) | Parslee platform capabilities for the signed-in account (requires `car auth login`) |
199
+ | [`car agent`](#car-agent) | Build and run in-daemon agents from plain-language descriptions. An agent runs inside CAR — nothing to install |
200
+ | [`car build`](#car-build) | Build a runnable workflow from a natural-language goal |
201
+ | [`car dream`](#car-dream) | Run memory consolidation ("dream") — prune, GC, embed, evolve |
202
+ | [`car browse`](#car-browse) | Browser automation — drive Chromium through the CAR runtime |
203
+ | [`car secrets`](#car-secrets) | OS-native secret store — Keychain / Credential Manager / Secret Service. Aliased as `secret` (singular) for backward compatibility |
204
+ | [`car auth`](#car-auth) | Parslee account authentication for CAR cloud-backed features |
205
+ | [`car permissions`](#car-permissions) | OS permission preflight — TCC / Windows Privacy / xdg-desktop-portal |
206
+ | [`car voice`](#car-voice) | Voiceprint enrollment — teach CAR your voice so it knows who's speaking (the owner drives commands; other voices are context). Proxies the daemon's `voice.*` surface |
207
+ | [`car onboard`](#car-onboard) | Onboarding readiness — what's set up and what's still pending (the headless equivalent of the CarHost setup wizard) |
208
+ | [`car approvals`](#car-approvals) | Agent approval policy — the default posture for what agents may do without asking. Proxies the daemon's `agent_permissions.*` surface (the CLI counterpart to the CarHost "Approvals" settings / onboarding step) |
209
+ | [`car accounts`](#car-accounts) | OS-native account discovery — Internet Accounts / WAM / GOA |
210
+ | [`car cal`](#car-cal) | OS-native Calendar integration |
211
+ | [`car contacts`](#car-contacts) | OS-native Contacts integration |
212
+ | [`car mail`](#car-mail) | OS-native Mail integration |
213
+ | [`car messages`](#car-messages) | OS-native Messages integration |
214
+ | [`car notes`](#car-notes) | macOS Notes integration |
215
+ | [`car reminders`](#car-reminders) | macOS Reminders integration |
216
+ | [`car photos`](#car-photos) | macOS Photos integration |
217
+ | [`car bookmarks`](#car-bookmarks) | Browser bookmark integration |
218
+ | [`car files`](#car-files) | Account-backed file locations |
219
+ | [`car keychain`](#car-keychain) | OS keychain integration |
220
+ | [`car health`](#car-health) | Wearable / activity data (HealthKit + Fitbit/Garmin/Oura/etc.) |
221
+ | [`car install`](#car-install) | Install a contributed agent — from a local directory OR a registry reference (Parslee-ai/car#182 phases 4 + 5) |
222
+ | [`car ls`](#car-ls) | List every installed contributed agent (Parslee-ai/car#182 phase 4). Calls the daemon's `agents.list` and renders the result. Long alias: `agents` |
223
+ | [`car inspect`](#car-inspect) | Inspect a single installed agent (Parslee-ai/car#182 phase 4). Shows the on-disk manifest plus the supervisor's current status. Resolves unqualified names to the highest installed semver per the contributed-agents proposal |
224
+ | [`car start`](#car-start) | Start an installed contributed agent |
225
+ | [`car stop`](#car-stop) | Stop an installed contributed agent |
226
+ | [`car restart`](#car-restart) | Restart an installed contributed agent |
227
+ | [`car tail-log`](#car-tail-log) | Tail the most recent stdout/stderr lines captured from a supervised agent (Parslee-ai/car#231 §5.2). Calls the daemon's `agents.tail_log`. Closes the DX gap where the daemon captured logs to `~/.car/logs/` (`%USERPROFILE%\.car\logs\` on Windows) but offered no CLI surface to read them. Long alias: `logs` |
228
+ | [`car uninstall`](#car-uninstall) | Uninstall a contributed agent (Parslee-ai/car#182 phase 4). Stops the running child if any, removes the manifest from `~/.car/agents/<id>/`, and reaps the legacy `agents.json` entry. Idempotent |
229
+ | [`car schedule`](#car-schedule) | Schedule commands to run on a cadence (launchd / cron / schtasks) |
230
+ | [`car registry`](#car-registry) | Registry tooling for the contributed-agents registry (Parslee-ai/car#182 phase 5): `digest` a manifest, or `validate` a registry directory (the CI gate run by Parslee-ai/car-agent-registry) |
231
+ | [`car publish`](#car-publish) | Publish a contributed agent to the registry (Parslee-ai/car#182 phase 5). Reads a local agent's `manifest.toml`, signs it for `--audience public` (ed25519 key at `$CAR_PUBLISH_KEY_PATH`), stages it at the versioned `agents/<namespace>/<name>/<version>/` path, updates `index.json` + the README catalog, re-runs the EXACT `car registry validate` CI gate locally, and opens a PR against the registry repo. Aborts (no PR) on a missing signing key or a validation failure |
232
+ | [`car help`](#car-help) | Print this message or the help of the given subcommand(s) |
233
+
234
+ ---
235
+
236
+ ## Command reference
237
+
238
+ Full `--help` output for every command, generated directly from the binary.
239
+
240
+ ### car info
241
+
242
+ ```text
243
+ Show runtime info
244
+
245
+ Usage: car info
246
+
247
+ Options:
248
+ -h, --help Print help
249
+ ```
250
+
251
+ ### car capabilities
252
+
253
+ ```text
254
+ Print the deterministic CAR capability manifest
255
+
256
+ Usage: car capabilities [OPTIONS]
257
+
258
+ Options:
259
+ --json Emit machine-readable JSON
260
+ --md Emit generated Markdown (the default)
261
+ -h, --help Print help
262
+ ```
263
+
264
+ ### car ui
265
+
266
+ ```text
267
+ Open the browser dashboard served by the daemon
268
+
269
+ Usage: car ui [OPTIONS]
270
+
271
+ Options:
272
+ -p, --port <PORT> Daemon WS port; the dashboard is served on this + 1 [default: 9100]
273
+ -h, --help Print help
274
+ ```
275
+
276
+ ### car verify
277
+
278
+ ```text
279
+ Statically verify a proposal
280
+
281
+ Usage: car verify [OPTIONS] <PROPOSAL>
282
+
283
+ Arguments:
284
+ <PROPOSAL> Path to proposal JSON file
285
+
286
+ Options:
287
+ --state <STATE> Path to initial state JSON file
288
+ --tools <TOOLS> Comma-separated tool names
289
+ -h, --help Print help
290
+ ```
291
+
292
+ ### car simulate
293
+
294
+ ```text
295
+ Simulate a proposal's state effects without executing
296
+
297
+ Usage: car simulate [OPTIONS] <PROPOSAL>
298
+
299
+ Arguments:
300
+ <PROPOSAL> Path to proposal JSON file
301
+
302
+ Options:
303
+ --state <STATE> Path to initial state JSON file
304
+ -h, --help Print help
305
+ ```
306
+
307
+ ### car optimize
308
+
309
+ ```text
310
+ Optimize a proposal (remove phantom dependencies)
311
+
312
+ Usage: car optimize <PROPOSAL>
313
+
314
+ Arguments:
315
+ <PROPOSAL> Path to proposal JSON file
316
+
317
+ Options:
318
+ -h, --help Print help
319
+ ```
320
+
321
+ ### car replay
322
+
323
+ ```text
324
+ Replay an event journal and show reconstructed state
325
+
326
+ Usage: car replay <JOURNAL>
327
+
328
+ Arguments:
329
+ <JOURNAL> Path to JSONL journal file
330
+
331
+ Options:
332
+ -h, --help Print help
333
+ ```
334
+
335
+ ### car run-cancel
336
+
337
+ ```text
338
+ Cancel one active CAR run and print its deterministic durable receipt
339
+
340
+ Usage: car run-cancel [OPTIONS] --run-id <RUN_ID> --idempotency-key <IDEMPOTENCY_KEY> --reason
341
+ <REASON>
342
+
343
+ Options:
344
+ --run-id <RUN_ID>
345
+ --idempotency-key <IDEMPOTENCY_KEY>
346
+ --reason <REASON>
347
+ --url <URL> [default: ws://127.0.0.1:9100/]
348
+ --json
349
+ -h, --help Print help
350
+ ```
351
+
352
+ ### car run-task
353
+
354
+ ```text
355
+ Run a goal autonomously against stdio MCP tool servers, emitting a JSONL transcript. Headless entry
356
+ point for external eval harnesses
357
+
358
+ Usage: car run-task [OPTIONS] --goal-file <GOAL_FILE> --mcp-config <MCP_CONFIG> --transcript
359
+ <TRANSCRIPT> --model <MODEL>
360
+
361
+ Options:
362
+ --goal-file <GOAL_FILE> File whose contents are the task instruction
363
+ --mcp-config <MCP_CONFIG> JSON file listing the stdio MCP servers to expose as tools
364
+ --transcript <TRANSCRIPT> Where to write the JSONL transcript
365
+ --eventlog <EVENTLOG> Where to write the engine event journal (optional)
366
+ --max-turns <MAX_TURNS> Hard cap on agent loop turns [default: 100]
367
+ --model <MODEL> Inference model id (resolved by CAR's registry/router)
368
+ --resume Resume from a checkpoint next to the transcript if one exists
369
+ (survives a crash / SIGKILL / VM-host restart mid-run)
370
+ --gui-subagent Route GUI (mcp_cua_*) tools through a delegate_gui sub-agent
371
+ instead of exposing them to the main model (also via CAR_RUNTASK_GUI_SUBAGENT=1)
372
+ -h, --help Print help
373
+ ```
374
+
375
+ ### car code-task
376
+
377
+ ```text
378
+ Run a coder session headlessly and IN THIS PROCESS: derive or accept an outcome contract, work in a
379
+ git worktree until the runtime's own re-run of that contract is green, then deliver the result as a
380
+ pull request.
381
+
382
+ No daemon is contacted and none needs to be running — this drives `car_server_core::coder` as a
383
+ library. `car code` is the interactive twin, and it does go through the daemon.
384
+
385
+ Usage: car code-task [OPTIONS] --repo <REPO>
386
+
387
+ Options:
388
+ --repo <REPO>
389
+ Repository to work in (must be a git repo)
390
+
391
+ --intent-file <INTENT_FILE>
392
+ File whose contents are the intent. Exactly one of --intent-file/--intent
393
+
394
+ --intent <INTENT>
395
+ Inline intent. Exactly one of --intent-file/--intent
396
+
397
+ --contract-file <CONTRACT_FILE>
398
+ JSON `OutcomeContract`. When present, contract derivation does not run
399
+
400
+ --target-branch <TARGET_BRANCH>
401
+ Stable delivery branch. Required for `--deliver pr`
402
+
403
+ --pr-base <PR_BASE>
404
+ PR base branch. Defaults to the repo's default branch
405
+
406
+ --draft
407
+ Open the pull request as a draft
408
+
409
+ --deliver <DELIVER>
410
+ pr | branch | none. Defaults to `pr` when --target-branch is given, else `branch`
411
+
412
+ Possible values:
413
+ - pr: Push the delivery branch and reconcile exactly one pull request for it
414
+ - branch: Create a local `car/coder/<id>` branch in the repo and stop there
415
+ - none: Verify only. Nothing leaves the worktree
416
+
417
+ --model <MODEL>
418
+ Pin the inference model for this session
419
+
420
+ --max-iterations <MAX_ITERATIONS>
421
+ Override the coder config's iteration ceiling (default 8)
422
+
423
+ --max-session-wall-secs <MAX_SESSION_WALL_SECS>
424
+ Override the coder config's session wall clock (default 3600). 0 = unlimited
425
+
426
+ --max-check-timeout-secs <MAX_CHECK_TIMEOUT_SECS>
427
+ Ceiling for ONE contract check's command (default 600). Raise it for a verification gate
428
+ that legitimately runs longer than ten minutes; the model's own `shell` tool keeps the
429
+ 600s ceiling regardless
430
+
431
+ --workspace-dir <WORKSPACE_DIR>
432
+ Explicit workspace location. Reused when it is already a valid worktree
433
+
434
+ --keep-workspace
435
+ Keep the workspace on any non-zero exit (and on a green `--deliver none` run, where the
436
+ worktree is the only copy), for the next round to reuse
437
+
438
+ --transcript <TRANSCRIPT>
439
+ Also mirror the JSONL event stream to this file
440
+
441
+ --json
442
+ Emit the JSONL event stream on stdout, one compact object per line
443
+
444
+ -h, --help
445
+ Print help (see a summary with '-h')
446
+ ```
447
+
448
+ ### car coder-ab
449
+
450
+ ```text
451
+ A/B-test CAR's coder against an external agent (Codex / Claude Code) over a corpus, and grow that
452
+ corpus from git history — the productionized dogfooding loop (docs/proposals/coder-ab-dogfood.md)
453
+
454
+ Usage: car coder-ab <COMMAND>
455
+
456
+ Commands:
457
+ run Run the paired A/B over a corpus manifest, verify each arm against the task's own
458
+ contract, and write a JSON report. Exits non-zero when CAR is significantly *behind* the external
459
+ arm (McNemar), so it doubles as a CI regression gate. Needs a running daemon (`car code` routes to
460
+ it)
461
+ extract Grow the corpus from a git repo's history: for each recent commit that fixes code AND
462
+ touches a test, materialize the pre-fix (failing) state as a task (parent's source + the commit's
463
+ test), keep only tasks whose test actually fails at that state, and append them to a corpus.
464
+ Best-effort candidate generation for human review
465
+ help Print this message or the help of the given subcommand(s)
466
+
467
+ Options:
468
+ -h, --help Print help
469
+ ```
470
+
471
+ #### car coder-ab run
472
+
473
+ ```text
474
+ Run the paired A/B over a corpus manifest, verify each arm against the task's own contract, and
475
+ write a JSON report. Exits non-zero when CAR is significantly *behind* the external arm (McNemar),
476
+ so it doubles as a CI regression gate. Needs a running daemon (`car code` routes to it)
477
+
478
+ Usage: car coder-ab run [OPTIONS] --corpus <CORPUS>
479
+
480
+ Options:
481
+ --corpus <CORPUS>
482
+ Corpus manifest (JSONL of tasks; see bench/coder-ab/README.md)
483
+ --external <EXTERNAL>
484
+ External comparison engine (codex | claude-code | gemini). Omit to run native-only
485
+ --model <MODEL>
486
+ Pin CAR's arm to a backbone, as a CAR model id (e.g. parslee/reasoning). Backbone choice
487
+ is ~3x the harness spread, so an unpinned run measures the model, not the runtime. NOT
488
+ forwarded to an external arm — a CAR id means nothing to another CLI; use --external-model
489
+ for that arm
490
+ --external-model <EXTERNAL_MODEL>
491
+ Pin the external arm's backbone, in THAT CLI's own id namespace (e.g. gpt-5.5 for `codex
492
+ -m`). Omit and the CLI uses its own configured default — the report then says UNPINNED,
493
+ since the backbone is unverified. For a fair same-backbone A/B pass both flags naming the
494
+ same model (--model parslee/reasoning --external-model gpt-5.5); to measure the cross-tier
495
+ diagonal name different tiers (--model openai/gpt-5.4 --external-model gpt-5.5). Differing
496
+ pins are reported as DIFFERENT PINS and are NOT a harness delta
497
+ --iters <ITERS>
498
+ Native arm's repair-iteration cap per task. Defaults to the coder's OWN shipping default,
499
+ so the A/B measures the coder users actually get — it used to hardcode 4, i.e. half of it.
500
+ Raise it when the cap binds: a weaker backbone needs more rounds, and a run whose losses
501
+ all end at `iteration N/N` is measuring this number, not the harness (at gpt-5.4, 4 → 45%
502
+ and 20 → 75%, every loss cap-bound at both). The external arm is not capped by this — it
503
+ gets its CLI's own turn budget (`max_turns: 50` per invocation), so setting this low is a
504
+ silent handicap [default: 8]
505
+ --out-dir <OUT_DIR>
506
+ Directory for the timestamped JSON report [default: bench/results/coder-ab]
507
+ --timeout-secs <TIMEOUT_SECS>
508
+ Per-task wall bound (seconds) for the NATIVE arm before it's infra. The native reasoning
509
+ loop can legitimately take many minutes [default: 900]
510
+ --external-timeout-secs <EXTERNAL_TIMEOUT_SECS>
511
+ Per-task wall bound (seconds) for the EXTERNAL arm (Codex/Claude Code). An external CLI
512
+ finishes fast or is stuck, so keep this well below `--timeout-secs` — a stuck external run
513
+ otherwise burns the native budget and drags the whole suite [default: 300]
514
+ --limit <LIMIT>
515
+ Run at most this many not-yet-scored tasks, then stop (the rest resume on the next run).
516
+ Omit to run all remaining. `--limit 1` runs one task so you can inspect it and fix what it
517
+ surfaces before continuing
518
+ --fresh
519
+ Ignore any existing checkpoint for this corpus and re-score from scratch
520
+ --report-issues
521
+ File each durable-fix proposal that clears the reporting bar as an issue on --report-repo,
522
+ skipping signatures already open there. Off by default: a measurement run must not open
523
+ issues on a shared tracker as a side effect
524
+ --report-repo <REPORT_REPO>
525
+ Where --report-issues files. The releases repo by default, not the source repo — filing a
526
+ defect report needs no source checkout [default: Parslee-ai/car-releases]
527
+ -h, --help
528
+ Print help
529
+ ```
530
+
531
+ #### car coder-ab extract
532
+
533
+ ```text
534
+ Grow the corpus from a git repo's history: for each recent commit that fixes code AND touches a
535
+ test, materialize the pre-fix (failing) state as a task (parent's source + the commit's test), keep
536
+ only tasks whose test actually fails at that state, and append them to a corpus. Best-effort
537
+ candidate generation for human review
538
+
539
+ Usage: car coder-ab extract [OPTIONS] --out <OUT>
540
+
541
+ Options:
542
+ --repo <REPO>
543
+ Repo to mine (default: current dir)
544
+
545
+ [default: .]
546
+
547
+ --out <OUT>
548
+ Corpus directory to write (`manifest.jsonl` + `tasks/<id>/`)
549
+
550
+ --test-cmd <TEST_CMD>
551
+ Command that verifies a task (the contract check), run in each task dir. `pytest -q`
552
+ rather than `python3 -m pytest -q`: `python3` does not exist on a standard Windows
553
+ python.org install, and `python` is often absent on macOS/Linux — pytest's console script
554
+ is the portable spelling
555
+
556
+ [default: "pytest -q"]
557
+
558
+ --path <PATH>
559
+ Only mine commits touching paths under this prefix
560
+
561
+ --max <MAX>
562
+ Limit to this many recent commits scanned
563
+
564
+ [default: 50]
565
+
566
+ --max-files <MAX_FILES>
567
+ Skip a commit whose changed-file count exceeds this (keep tasks small)
568
+
569
+ [default: 6]
570
+
571
+ --full-tree
572
+ Materialize the FULL pre-fix source tree into each task (not just the changed files), so a
573
+ package-structured repo's sibling imports resolve and the test fails on the real bug — not
574
+ a `ModuleNotFoundError`. Recommended for any repo whose modules import each other
575
+
576
+ --subject-filter <SUBJECT_FILTER>
577
+ Keep only commits whose subject contains this substring (e.g. `fix(`).
578
+
579
+ On a Rust repo this is close to required: a `feat` commit's test imports a symbol the
580
+ commit itself adds, so it cannot compile at the pre-fix parent. Such tasks are rejected
581
+ anyway, but only after a full tree materialize + build, which costs 30-200s each.
582
+
583
+ -h, --help
584
+ Print help (see a summary with '-h')
585
+ ```
586
+
587
+ ### car keys
588
+
589
+ ```text
590
+ Store cloud-provider API keys in the OS keychain, so a native-app user never sets an environment
591
+ variable (docs/proposals/native-secrets-no-env.md). The key is read env-first, keychain-fallback by
592
+ the runtime
593
+
594
+ Usage: car keys <COMMAND>
595
+
596
+ Commands:
597
+ set Store a provider key in the keychain. `<name>` is a provider
598
+ (openai/anthropic/gemini/elevenlabs/github/aws) or a raw env-var name. Omit `<value>` to read it
599
+ from stdin (keeps it out of shell history)
600
+ list Show which provider keys are configured (keychain or env); values hidden
601
+ remove Remove a stored provider key from the keychain
602
+ help Print this message or the help of the given subcommand(s)
603
+
604
+ Options:
605
+ -h, --help Print help
606
+ ```
607
+
608
+ #### car keys set
609
+
610
+ ```text
611
+ Store a provider key in the keychain. `<name>` is a provider
612
+ (openai/anthropic/gemini/elevenlabs/github/aws) or a raw env-var name. Omit `<value>` to read it
613
+ from stdin (keeps it out of shell history)
614
+
615
+ Usage: car keys set <NAME> [VALUE]
616
+
617
+ Arguments:
618
+ <NAME>
619
+ [VALUE]
620
+
621
+ Options:
622
+ -h, --help Print help
623
+ ```
624
+
625
+ #### car keys list
626
+
627
+ ```text
628
+ Show which provider keys are configured (keychain or env); values hidden
629
+
630
+ Usage: car keys list
631
+
632
+ Options:
633
+ -h, --help Print help
634
+ ```
635
+
636
+ #### car keys remove
637
+
638
+ ```text
639
+ Remove a stored provider key from the keychain
640
+
641
+ Usage: car keys remove <NAME>
642
+
643
+ Arguments:
644
+ <NAME>
645
+
646
+ Options:
647
+ -h, --help Print help
648
+ ```
649
+
650
+ ### car daemon
651
+
652
+ ```text
653
+ Start the daemon server (delegates to car-server binary)
654
+
655
+ Usage: car daemon [OPTIONS]
656
+
657
+ Options:
658
+ -p, --port <PORT> Port to listen on [default: 9100]
659
+ -h, --help Print help
660
+ ```
661
+
662
+ ### car models
663
+
664
+ ```text
665
+ Manage local inference models
666
+
667
+ Usage: car models <COMMAND>
668
+
669
+ Commands:
670
+ list List available models and download status
671
+ discover Discover models exposed by a running vLLM-MLX server
672
+ pull Download a model
673
+ resource-policy Inspect or update the local-model RAM policy
674
+ preflight Evaluate one local model without downloading or loading it
675
+ adopt Adopt an already-usable local artifact into CAR ownership
676
+ recommend Recommend the best model for this machine and what you want to do
677
+ remove Remove a downloaded model
678
+ upgrades Show installed models that have curated newer replacements
679
+ upgrade Upgrade installed models to curated newer replacements when CAR can do so
680
+ serve Start an external MLX runtime for a cataloged local-server model
681
+ add Add any HuggingFace model by repo id, deriving its schema automatically
682
+ register Register a custom model from a JSON schema file
683
+ unregister Unregister a model by ID
684
+ stats Show performance stats for models based on observed outcomes
685
+ benchmark Benchmark curated models and write benchmark priors for cold-start routing
686
+ doctor Report configured defaults, provider health, and modality coverage
687
+ smoke Run representative live model checks across text, code, tool, vision, and speech
688
+ route Route a prompt and show which model would be selected (dry run)
689
+ help Print this message or the help of the given subcommand(s)
690
+
691
+ Options:
692
+ -h, --help Print help
693
+ ```
694
+
695
+ #### car models list
696
+
697
+ ```text
698
+ List available models and download status
699
+
700
+ Usage: car models list [OPTIONS]
701
+
702
+ Options:
703
+ -c, --capability <CAPABILITY> Filter by capability (generate, embed, code, reasoning, etc.)
704
+ --provider <PROVIDER> Filter by provider (e.g., openai, qwen, google, vllm-mlx)
705
+ --local-only Only show local models
706
+ -h, --help Print help
707
+ ```
708
+
709
+ #### car models discover
710
+
711
+ ```text
712
+ Discover models exposed by a running vLLM-MLX server
713
+
714
+ Usage: car models discover [OPTIONS]
715
+
716
+ Options:
717
+ --json Output as JSON
718
+ -h, --help Print help
719
+ ```
720
+
721
+ #### car models pull
722
+
723
+ ```text
724
+ Download a model
725
+
726
+ Usage: car models pull <NAME>
727
+
728
+ Arguments:
729
+ <NAME> Model name (e.g., Qwen3-0.6B, Qwen3-1.7B)
730
+
731
+ Options:
732
+ -h, --help Print help
733
+ ```
734
+
735
+ #### car models resource-policy
736
+
737
+ ```text
738
+ Inspect or update the local-model RAM policy
739
+
740
+ Usage: car models resource-policy <COMMAND>
741
+
742
+ Commands:
743
+ get Show the saved policy and its evaluated machine budget
744
+ set Persist a policy. Custom values are exact MB in 512 MB increments
745
+ help Print this message or the help of the given subcommand(s)
746
+
747
+ Options:
748
+ -h, --help Print help
749
+ ```
750
+
751
+ #### car models preflight
752
+
753
+ ```text
754
+ Evaluate one local model without downloading or loading it
755
+
756
+ Usage: car models preflight [OPTIONS] <MODEL_ID>
757
+
758
+ Arguments:
759
+ <MODEL_ID>
760
+
761
+ Options:
762
+ --context-tokens <CONTEXT_TOKENS> [default: 0]
763
+ -h, --help Print help
764
+ ```
765
+
766
+ #### car models adopt
767
+
768
+ ```text
769
+ Adopt an already-usable local artifact into CAR ownership
770
+
771
+ Usage: car models adopt <MODEL_ID>
772
+
773
+ Arguments:
774
+ <MODEL_ID>
775
+
776
+ Options:
777
+ -h, --help Print help
778
+ ```
779
+
780
+ #### car models recommend
781
+
782
+ ```text
783
+ Recommend the best model for this machine and what you want to do
784
+
785
+ Usage: car models recommend [OPTIONS]
786
+
787
+ Options:
788
+ --for <USE_CASE> What you'll use it for: assistant, coding, search, vision, transcription,
789
+ summarize [default: assistant]
790
+ --tier <TIER> Speed/quality: fastest, balanced, most-capable [default: balanced]
791
+ --cloud-ok Allow cloud models to compete (default: on-device only)
792
+ -h, --help Print help
793
+ ```
794
+
795
+ #### car models remove
796
+
797
+ ```text
798
+ Remove a downloaded model
799
+
800
+ Usage: car models remove <NAME>
801
+
802
+ Arguments:
803
+ <NAME> Model name
804
+
805
+ Options:
806
+ -h, --help Print help
807
+ ```
808
+
809
+ #### car models upgrades
810
+
811
+ ```text
812
+ Show installed models that have curated newer replacements
813
+
814
+ Usage: car models upgrades [OPTIONS]
815
+
816
+ Options:
817
+ --json Output as JSON
818
+ -h, --help Print help
819
+ ```
820
+
821
+ #### car models upgrade
822
+
823
+ ```text
824
+ Upgrade installed models to curated newer replacements when CAR can do so
825
+
826
+ Usage: car models upgrade [OPTIONS]
827
+
828
+ Options:
829
+ --apply Actually perform supported downloads/removals. Without this, print a plan
830
+ --remove-old Remove the older local model after a replacement is available
831
+ --json Output as JSON
832
+ -h, --help Print help
833
+ ```
834
+
835
+ #### car models serve
836
+
837
+ ```text
838
+ Start an external MLX runtime for a cataloged local-server model
839
+
840
+ Usage: car models serve [OPTIONS] <MODEL>
841
+
842
+ Arguments:
843
+ <MODEL> Model id, short alias, or Hugging Face repo to serve
844
+
845
+ Options:
846
+ --port <PORT> Port for the OpenAI-compatible local server [default: 8000]
847
+ --dry-run Print the command without starting the server
848
+ --json Output as JSON
849
+ -h, --help Print help
850
+ ```
851
+
852
+ #### car models add
853
+
854
+ ```text
855
+ Add any HuggingFace model by repo id, deriving its schema automatically
856
+
857
+ Reads the repo's `config.json` and picks the right backend for you: architectures with an in-process
858
+ Rust MLX backend register as native, everything else routes to the supervised vLLM-MLX runtime. This
859
+ is the path that does NOT require a CAR release to adopt a new model.
860
+
861
+ Usage: car models add [OPTIONS] <REPO>
862
+
863
+ Arguments:
864
+ <REPO>
865
+ HuggingFace repo id, e.g. `mlx-community/Qwen3.8-27B-4bit`
866
+
867
+ Options:
868
+ --dry-run
869
+ Show the derived schema without registering it
870
+
871
+ --pull
872
+ Download the weights now instead of on first use
873
+
874
+ -h, --help
875
+ Print help (see a summary with '-h')
876
+ ```
877
+
878
+ #### car models register
879
+
880
+ ```text
881
+ Register a custom model from a JSON schema file
882
+
883
+ Usage: car models register <SCHEMA>
884
+
885
+ Arguments:
886
+ <SCHEMA> Path to model schema JSON file
887
+
888
+ Options:
889
+ -h, --help Print help
890
+ ```
891
+
892
+ #### car models unregister
893
+
894
+ ```text
895
+ Unregister a model by ID
896
+
897
+ Usage: car models unregister <ID>
898
+
899
+ Arguments:
900
+ <ID> Model ID (e.g., "anthropic/claude-sonnet-4-6:latest")
901
+
902
+ Options:
903
+ -h, --help Print help
904
+ ```
905
+
906
+ #### car models stats
907
+
908
+ ```text
909
+ Show performance stats for models based on observed outcomes
910
+
911
+ Usage: car models stats [ID]
912
+
913
+ Arguments:
914
+ [ID] Model ID (omit for all models)
915
+
916
+ Options:
917
+ -h, --help Print help
918
+ ```
919
+
920
+ #### car models benchmark
921
+
922
+ ```text
923
+ Benchmark curated models and write benchmark priors for cold-start routing
924
+
925
+ Usage: car models benchmark [OPTIONS]
926
+
927
+ Options:
928
+ --json Output as JSON
929
+ --models <MODELS> Optional comma-separated model names to benchmark
930
+ --cases <CASES> Optional comma-separated benchmark case ids
931
+ --judge-model <JUDGE_MODEL> Optional judge model override
932
+ -h, --help Print help
933
+ ```
934
+
935
+ #### car models doctor
936
+
937
+ ```text
938
+ Report configured defaults, provider health, and modality coverage
939
+
940
+ Usage: car models doctor [OPTIONS]
941
+
942
+ Options:
943
+ --json Output as JSON
944
+ --mlx Only report MLX runtime/tooling diagnostics
945
+ -h, --help Print help
946
+ ```
947
+
948
+ #### car models smoke
949
+
950
+ ```text
951
+ Run representative live model checks across text, code, tool, vision, and speech
952
+
953
+ Usage: car models smoke [OPTIONS]
954
+
955
+ Options:
956
+ --json Output as JSON
957
+ --dry-run Only validate routing/orchestration without making live model calls
958
+ -h, --help Print help
959
+ ```
960
+
961
+ #### car models route
962
+
963
+ ```text
964
+ Route a prompt and show which model would be selected (dry run)
965
+
966
+ Usage: car models route <PROMPT>
967
+
968
+ Arguments:
969
+ <PROMPT> Prompt to route
970
+
971
+ Options:
972
+ -h, --help Print help
973
+ ```
974
+
975
+ ### car setup
976
+
977
+ ```text
978
+ Set up the right model for this machine — detect hardware, recommend, and install. Run with no flags
979
+ for an interactive walkthrough
980
+
981
+ Usage: car setup [OPTIONS]
982
+
983
+ Options:
984
+ --use-case <USE_CASE> What you'll mainly do: assistant, coding, search, vision,
985
+ transcription, summarize. Prompted if omitted
986
+ --tier <TIER> Speed/quality preference: fastest, balanced, most-capable [default:
987
+ balanced]
988
+ --cloud-ok Allow cloud models to compete (default: on-device only)
989
+ --yes Don't prompt — accept the top recommendation. For scripts/CI
990
+ -h, --help Print help
991
+ ```
992
+
993
+ ### car speech
994
+
995
+ ```text
996
+ Manage CAR speech runtime, health checks, and smoke tests
997
+
998
+ Usage: car speech <COMMAND>
999
+
1000
+ Commands:
1001
+ install Install the managed speech runtime and curated local speech models
1002
+ doctor Report managed speech runtime, local model cache, and remote-provider health
1003
+ smoke Run end-to-end speech smoke tests through CAR
1004
+ help Print this message or the help of the given subcommand(s)
1005
+
1006
+ Options:
1007
+ -h, --help Print help
1008
+ ```
1009
+
1010
+ #### car speech install
1011
+
1012
+ ```text
1013
+ Install the managed speech runtime and curated local speech models
1014
+
1015
+ Usage: car speech install [OPTIONS]
1016
+
1017
+ Options:
1018
+ --json Output as JSON
1019
+ -h, --help Print help
1020
+ ```
1021
+
1022
+ #### car speech doctor
1023
+
1024
+ ```text
1025
+ Report managed speech runtime, local model cache, and remote-provider health
1026
+
1027
+ Usage: car speech doctor [OPTIONS]
1028
+
1029
+ Options:
1030
+ --json Output as JSON
1031
+ -h, --help Print help
1032
+ ```
1033
+
1034
+ #### car speech smoke
1035
+
1036
+ ```text
1037
+ Run end-to-end speech smoke tests through CAR
1038
+
1039
+ Usage: car speech smoke [OPTIONS]
1040
+
1041
+ Options:
1042
+ --local-only Only run the local speech path
1043
+ --remote-only Only run the remote speech path
1044
+ --json Output as JSON
1045
+ -h, --help Print help
1046
+ ```
1047
+
1048
+ ### car infer
1049
+
1050
+ ```text
1051
+ Run text generation with a local model
1052
+
1053
+ Usage: car infer [OPTIONS] <PROMPT>
1054
+
1055
+ Arguments:
1056
+ <PROMPT> Prompt text
1057
+
1058
+ Options:
1059
+ -m, --model <MODEL> Model name (default: Qwen3-1.7B)
1060
+ --image <IMAGE> Local image path to include for vision-language inference. May be
1061
+ repeated
1062
+ --workload <WORKLOAD> Workload class for routing: interactive, batch, or background
1063
+ [default: interactive]
1064
+ --max-tokens <MAX_TOKENS> Max tokens to generate [default: 512]
1065
+ --temperature <TEMPERATURE> Temperature (0.0 = greedy) [default: 0.7]
1066
+ --thinking <THINKING> Qwen3 thinking mode: `off` injects `/no_think` and prefills a
1067
+ closed `<think></think>` block (direct answer, no reasoning); `on` injects `/think` (force
1068
+ reasoning); `auto` trusts the model's trained default. CLI defaults to `off` because Qwen3's
1069
+ trained default is reasoning-on, which chews through small `--max-tokens` budgets inside an
1070
+ unclosed `<think>` block and makes the post-strip text empty (issue #168). Set `auto` or `on`
1071
+ for tasks that actually want reasoning, and pair with a larger `--max-tokens` so the model can
1072
+ both think and answer [default: off]
1073
+ -h, --help Print help
1074
+ ```
1075
+
1076
+ ### car image
1077
+
1078
+ ```text
1079
+ Generate an image with a local MLX model
1080
+
1081
+ Usage: car image [OPTIONS] <PROMPT>
1082
+
1083
+ Arguments:
1084
+ <PROMPT> Prompt text
1085
+
1086
+ Options:
1087
+ -m, --model <MODEL> Model name
1088
+ -o, --output <OUTPUT> Output path
1089
+ --width <WIDTH> Image width
1090
+ --height <HEIGHT> Image height
1091
+ --steps <STEPS> Sampling steps
1092
+ --guidance <GUIDANCE> CFG / guidance scale
1093
+ --seed <SEED> Random seed
1094
+ -h, --help Print help
1095
+ ```
1096
+
1097
+ ### car video
1098
+
1099
+ ```text
1100
+ Generate a video with a local MLX model
1101
+
1102
+ Usage: car video [OPTIONS] <PROMPT>
1103
+
1104
+ Arguments:
1105
+ <PROMPT> Prompt text
1106
+
1107
+ Options:
1108
+ -m, --model <MODEL> Model name
1109
+ -o, --output <OUTPUT> Output path
1110
+ --width <WIDTH> Video width
1111
+ --height <HEIGHT> Video height
1112
+ --frames <FRAMES> Number of frames
1113
+ --steps <STEPS> Sampling steps
1114
+ --guidance <GUIDANCE> CFG / guidance scale
1115
+ --fps <FPS> Frames per second
1116
+ --seed <SEED> Random seed
1117
+ --image <IMAGE> Reference image for image-to-video (first frame anchor)
1118
+ --audio-video Enable joint audio+video synthesis (text-to-(video+audio))
1119
+ --audio <AUDIO> Audio-reference conditioning (#113) — drives video timing off the
1120
+ audio bytes using the LTX audio-to-video path. Mutually exclusive with `--audio-video` and
1121
+ `--audio-mux`
1122
+ --audio-mux <AUDIO_MUX> Audio path for downstream muxing. The generated video is text-only
1123
+ (no audio conditioning); the path is recorded on the request so downstream tooling (e.g.
1124
+ Musicart) can find it and mux a final track. The path-records-only behavior previously hid
1125
+ behind `--audio` and silently produced text-only video; `--audio-mux` makes the intent
1126
+ explicit (Parslee-ai/car#183). Mutually exclusive with `--audio` and `--audio-video`
1127
+ -h, --help Print help
1128
+ ```
1129
+
1130
+ ### car embed
1131
+
1132
+ ```text
1133
+ Generate embeddings for text
1134
+
1135
+ Usage: car embed [OPTIONS] <TEXT>
1136
+
1137
+ Arguments:
1138
+ <TEXT> Text to embed
1139
+
1140
+ Options:
1141
+ -m, --model <MODEL> Model name (default: Qwen3-0.6B)
1142
+ -h, --help Print help
1143
+ ```
1144
+
1145
+ ### car skills
1146
+
1147
+ ```text
1148
+ Manage learned skills (SkillRL-inspired)
1149
+
1150
+ Usage: car skills <COMMAND>
1151
+
1152
+ Commands:
1153
+ distill Distill skills from an event log journal
1154
+ list List skills in a memory file
1155
+ help Print this message or the help of the given subcommand(s)
1156
+
1157
+ Options:
1158
+ -h, --help Print help
1159
+ ```
1160
+
1161
+ #### car skills distill
1162
+
1163
+ ```text
1164
+ Distill skills from an event log journal
1165
+
1166
+ Usage: car skills distill [OPTIONS] <JOURNAL>
1167
+
1168
+ Arguments:
1169
+ <JOURNAL> Path to JSONL journal file
1170
+
1171
+ Options:
1172
+ -o, --output <OUTPUT> Output skills to this JSON file (default: print to stdout)
1173
+ -h, --help Print help
1174
+ ```
1175
+
1176
+ #### car skills list
1177
+
1178
+ ```text
1179
+ List skills in a memory file
1180
+
1181
+ Usage: car skills list [OPTIONS] <MEMORY>
1182
+
1183
+ Arguments:
1184
+ <MEMORY> Path to memory JSON file
1185
+
1186
+ Options:
1187
+ -d, --domain <DOMAIN> Filter by domain
1188
+ -h, --help Print help
1189
+ ```
1190
+
1191
+ ### car reason
1192
+
1193
+ ```text
1194
+ Reason about code: diagnose, suggest fixes, explain
1195
+
1196
+ Usage: car reason [OPTIONS] <PROBLEM>
1197
+
1198
+ Arguments:
1199
+ <PROBLEM> Problem description or question
1200
+
1201
+ Options:
1202
+ --format <FORMAT> Output format: text (default) or json [default: text]
1203
+ -h, --help Print help
1204
+ ```
1205
+
1206
+ ### car eval
1207
+
1208
+ ```text
1209
+ Evaluate agent improvement from stored trajectories
1210
+
1211
+ Usage: car eval [OPTIONS]
1212
+
1213
+ Options:
1214
+ -t, --trajectories <TRAJECTORIES> Path to trajectory store directory (default:
1215
+ ~/.car/trajectories/)
1216
+ --json Output as JSON instead of human-readable
1217
+ -h, --help Print help
1218
+ ```
1219
+
1220
+ ### car identity
1221
+
1222
+ ```text
1223
+ Show or change the name your assistant answers to — in conversation, in the host apps, and as its
1224
+ voice wake word
1225
+
1226
+ Usage: car identity [COMMAND]
1227
+
1228
+ Commands:
1229
+ show Show the current name, the spoken forms it wakes on, and where the record lives
1230
+ set Name the assistant. Takes effect for its system prompt, the host apps, and its voice
1231
+ wake word
1232
+ set-user Tell the assistant what to call YOU
1233
+ help Print this message or the help of the given subcommand(s)
1234
+
1235
+ Options:
1236
+ -h, --help Print help
1237
+ ```
1238
+
1239
+ #### car identity show
1240
+
1241
+ ```text
1242
+ Show the current name, the spoken forms it wakes on, and where the record lives
1243
+
1244
+ Usage: car identity show
1245
+
1246
+ Options:
1247
+ -h, --help Print help
1248
+ ```
1249
+
1250
+ #### car identity set
1251
+
1252
+ ```text
1253
+ Name the assistant. Takes effect for its system prompt, the host apps, and its voice wake word
1254
+
1255
+ Usage: car identity set [OPTIONS] <NAME>
1256
+
1257
+ Arguments:
1258
+ <NAME> What to call it, e.g. `Jarvis`
1259
+
1260
+ Options:
1261
+ --also-hear <SPELLING> Another way speech-to-text might hear the name, e.g. `jervis`.
1262
+ Repeatable. Only useful for voice
1263
+ -h, --help Print help
1264
+ ```
1265
+
1266
+ #### car identity set-user
1267
+
1268
+ ```text
1269
+ Tell the assistant what to call YOU
1270
+
1271
+ Usage: car identity set-user <NAME>
1272
+
1273
+ Arguments:
1274
+ <NAME> Your name, or `-` to clear it
1275
+
1276
+ Options:
1277
+ -h, --help Print help
1278
+ ```
1279
+
1280
+ ### car init
1281
+
1282
+ ```text
1283
+ Initialize a .car/ project directory for team-shared configuration
1284
+
1285
+ Usage: car init [OPTIONS]
1286
+
1287
+ Options:
1288
+ -d, --dir <DIR> Directory to create .car/ in (default: current directory)
1289
+ -h, --help Print help
1290
+ ```
1291
+
1292
+ ### car doctor
1293
+
1294
+ ```text
1295
+ Diagnose (and optionally repair) a CAR install: corrupt model weights, unparseable `~/.car` state
1296
+ files, version skew, and leftover files from a previous install. Runs entirely against the local
1297
+ filesystem — no daemon required, so it works even when `car-server` won't start
1298
+
1299
+ Usage: car doctor [OPTIONS]
1300
+
1301
+ Options:
1302
+ --repair Apply safe repairs: purge corrupt cache files (re-pull afterward), back up
1303
+ unparseable state files, refresh the version stamp. Never deletes unrecognized entries or
1304
+ anything not provably corrupt
1305
+ --deep Deep-verify model weights (recompute sha256 vs the HuggingFace etag) instead of the
1306
+ cheap presence/non-empty check. Slower but catches truncated-but-non-empty corruption
1307
+ -h, --help Print help
1308
+ ```
1309
+
1310
+ ### car update
1311
+
1312
+ ```text
1313
+ Update the locally-installed `car` CLI and its sibling `car-server` daemon to the latest release (or
1314
+ `--version <X.Y.Z>`), in place — regardless of how they were installed. Reconciles the drift that
1315
+ otherwise builds up when one channel updates and another doesn't (e.g. CarHost.app auto-updates its
1316
+ bundled daemon via Sparkle but leaves the `/usr/local/bin/car` CLI behind). The npm/PyPI
1317
+ `car-runtime` client packages are separate — this command never touches them; `car doctor` reports
1318
+ which of your agents have drifted, and prints the exact command per environment. Both remedies pin:
1319
+ `npm install car-runtime@<version>` (`npm update` CANNOT cross a 0.x minor — npm reads `^0.41.0` as
1320
+ `>=0.41.0 <0.42.0`, so it is a no-op) and `<venv>/bin/python -m pip install -U
1321
+ car-runtime==<version>` (a bare `-U` can be silently defeated by the consumer's own pin, and the
1322
+ wrong interpreter installs into an environment that does not hold the stale wheel)
1323
+
1324
+ Usage: car update [OPTIONS]
1325
+
1326
+ Options:
1327
+ --check Report whether a newer version exists without downloading anything
1328
+ --version <VERSION> Install a specific version (e.g. `0.34.0`) instead of the latest
1329
+ --force Re-install even if already on the target version (repair a partial or
1330
+ corrupt install)
1331
+ -h, --help Print help
1332
+ ```
1333
+
1334
+ ### car purge
1335
+
1336
+ ```text
1337
+ Remove this CAR install's own state under `~/.car` (config, logs, managed models, binaries) and reap
1338
+ any OS-level schedules CAR installed — for a clean slate before a reinstall. On macOS this also
1339
+ clears CarHost.app's user-level state and resets its privacy (TCC) permissions, so a reinstall
1340
+ really does re-run permission onboarding. NEVER touches the shared HuggingFace model cache (other
1341
+ tools use it); managed models are symlinks into it, so only the links are removed, not the multi-GB
1342
+ blobs. (To uninstall a single contributed agent instead, use `car uninstall <id>`.)
1343
+
1344
+ Usage: car purge [OPTIONS]
1345
+
1346
+ Options:
1347
+ --dry-run Show what would be removed and exit without deleting anything
1348
+ -y, --yes Skip the confirmation prompt
1349
+ --keep-secrets Keep `~/.car/env` (the dotenv secrets file) so a reinstall doesn't need
1350
+ API keys re-entered
1351
+ --keep-permissions macOS: keep CarHost.app's privacy (TCC) grants — Accessibility, Screen
1352
+ Recording, Automation, … — instead of resetting them. For using `car purge` as a state reset
1353
+ rather than an uninstall
1354
+ -h, --help Print help
1355
+ ```
1356
+
1357
+ ### car code
1358
+
1359
+ ```text
1360
+ Built-in coding agent: state an intent, confirm the verifiable outcome contract, and CAR delivers it
1361
+ in an isolated git worktree — natively or via an installed frontier CLI. Results land on a
1362
+ `car/coder/<id>` branch after your approval; your checkout is never touched
1363
+
1364
+ Usage: car code [OPTIONS] [INTENT]...
1365
+
1366
+ Arguments:
1367
+ [INTENT]... What to build or fix, in plain English
1368
+
1369
+ Options:
1370
+ --repo <REPO>
1371
+ Repository to work on. Relative paths (`.`, `../sibling`) resolve against your current
1372
+ directory (default: `.`)
1373
+ --engine <ENGINE>
1374
+ Engine: auto | native | external[:agent_id] | foreman[:agent_id]. Foreman farms subtasks
1375
+ to the external CLI in parallel worktrees behind a merge-verify gate; auto prefers it for
1376
+ broad tasks
1377
+ -y, --yes
1378
+ Skip the interactive contract and merge prompts
1379
+ --max-iterations <MAX_ITERATIONS>
1380
+ Max plan→edit→verify iterations before giving up
1381
+ --model <MODEL>
1382
+ Pin the native loop's inference model for this session (e.g. `parslee/reasoning` for
1383
+ gpt-5.5), overriding `~/.car/coder.toml`. Blank/omitted keeps the config default, then
1384
+ adaptive routing
1385
+ -h, --help
1386
+ Print help
1387
+ ```
1388
+
1389
+ ### car board
1390
+
1391
+ ```text
1392
+ Fullscreen supervision board for coder sessions — one screen for every run on this host, whoever
1393
+ started it (`car code`, CarHost, milo, another board). Attach to a run's full history, confirm its
1394
+ outcome contract, answer its questions, approve its diff, or scope work in a repo-grounded
1395
+ discussion first. Closing the board never stops a run
1396
+
1397
+ Usage: car board [OPTIONS]
1398
+
1399
+ Options:
1400
+ --repo <REPO> Repository the board opens against — pre-fills new runs and grounds
1401
+ discussions. Relative paths (`.`, `../sibling`) resolve against your current directory
1402
+ (default: `.`)
1403
+ -h, --help Print help
1404
+ ```
1405
+
1406
+ ### car do
1407
+
1408
+ ```text
1409
+ CAR Assistant: a general-purpose agent that works out of the box.
1410
+
1411
+ With a goal it runs once and prints the result; with no goal it opens an interactive REPL. It comes
1412
+ wired with files, a real shell, web access, and durable memory, and runs sandbox-first (a hardened
1413
+ Docker container) so edits are isolated. `--local` runs on the host; `--serve` runs it as a
1414
+ supervised, conversational agent for CarHost.
1415
+
1416
+ Usage: car do [OPTIONS] [GOAL]...
1417
+
1418
+ Arguments:
1419
+ [GOAL]...
1420
+ What you want done, in plain English. Omit for an interactive REPL
1421
+
1422
+ Options:
1423
+ --local
1424
+ Run on the LOCAL host instead of the default Docker sandbox. Writes and shell then require
1425
+ --full-access
1426
+
1427
+ -y, --full-access
1428
+ Allow file writes and shell on the local host without prompting. (No effect in the
1429
+ sandbox, which is already isolated.)
1430
+
1431
+ --dir <DIR>
1432
+ Working directory (default: current directory)
1433
+
1434
+ --model <MODEL>
1435
+ Inference model id (default: a tool-capable model chosen for you)
1436
+
1437
+ --image <IMAGE>
1438
+ Docker image for the sandbox (default: python:3.11, which bundles git/gcc/curl). Ignored
1439
+ with --local
1440
+
1441
+ --max-turns <MAX_TURNS>
1442
+ Safety cap on agent turns. This is a backstop, not the expected stop: the loop ends on its
1443
+ own when the model finishes (stops calling tools). 12 was too low for whole-project builds
1444
+ — it cut real work off mid-task; raise it further for large jobs
1445
+
1446
+ [default: 50]
1447
+
1448
+ --until <SHELL>
1449
+ Goal mode: keep working until this shell command exits 0 (a DETERMINISTIC completion check
1450
+ the runtime runs itself — unlike `/goal`, which asks a model to judge the transcript).
1451
+ Re-drives the agent each round with the failure as guidance. E.g. `--until 'cargo test
1452
+ -q'`
1453
+
1454
+ --infer-until
1455
+ Infer a deterministic --until check from the prompt and working directory, then run goal
1456
+ mode. Refuses to run if no concrete check can be inferred
1457
+
1458
+ --goal-max-iterations <GOAL_MAX_ITERATIONS>
1459
+ In goal mode, the hard cap on re-drive iterations (the governor's turn budget). A hard
1460
+ bound, not a soft prose clause
1461
+
1462
+ [default: 10]
1463
+
1464
+ --serve
1465
+ Run as a supervised, conversational agent (for CarHost / agents.chat)
1466
+
1467
+ --governed-host
1468
+ Run the supervised assistant on the real host with repository, approval, and
1469
+ durable-action governance. Requires an explicit `--dir` naming a Git repository; rejects
1470
+ `/` and the home directory
1471
+
1472
+ --json
1473
+ Machine-readable output for a calling agent or script: exactly one JSON document on
1474
+ stdout, JSONL progress events on stderr, and no human progress rendering. Needs a goal —
1475
+ there is no JSON shape for an interactive REPL. See docs/car-do-json.md
1476
+
1477
+ --response-format <MODE>
1478
+ Constrain the final answer to JSON. Applies to the final answer only; tool turns are
1479
+ unconstrained (a JSON-constrained request suppresses tool use). The loop checks the final
1480
+ answer itself and, if it is not a JSON object, re-asks the model ONCE with no tools and
1481
+ JSON mode on before returning; an answer that already parses costs no extra call.
1482
+ Provider-dependent on that repair turn: OpenAI-protocol and OpenRouter (which forwards it
1483
+ to the upstream provider) enforce it; Anthropic-protocol models reject it. Mutually
1484
+ exclusive with --json-schema. (Unrelated to --json, which shapes car's own output.)
1485
+
1486
+ [possible values: json_object]
1487
+
1488
+ --json-schema <FILE>
1489
+ Constrain the final answer to JSON matching this JSON Schema file. The schema's `title`
1490
+ names it for providers that want one. Applies to the final answer only, with the same
1491
+ one-shot tool-less repair and provider caveats as --response-format; the loop validates
1492
+ the final answer against the schema itself (a valid-JSON answer of the wrong shape is
1493
+ repaired too). Mutually exclusive with --response-format
1494
+
1495
+ --strict-model
1496
+ Use exactly the --model (or CAR_DO_MODEL) named, or fail. Without it `car do` substitutes
1497
+ a usable tool-capable model when the named one is unavailable here (and says so); with it
1498
+ a substitution is a startup error, and the inference layer will not fall back to an
1499
+ on-device model on a remote failure either. Off by default: the substitution is the right
1500
+ call for an interactive run
1501
+
1502
+ --context-window <TOKENS>
1503
+ Bound the running conversation to this many tokens instead of the model's registry window
1504
+ (older middle turns are compacted out to fit, as they are against the real window). Use it
1505
+ to tighten: a value above the model's known window is clamped back down to it, because
1506
+ letting the history overflow the real window is exactly the provider-side truncation
1507
+ compaction exists to prevent
1508
+
1509
+ --max-delegations <N>
1510
+ Run-level cap on `delegate` sub-agent calls. A call past the cap (or past the
1511
+ 300-child-turn budget) returns an error result to the assistant instead of spawning, so a
1512
+ delegating run cannot amplify its model calls without bound
1513
+
1514
+ [default: 20]
1515
+
1516
+ -h, --help
1517
+ Print help (see a summary with '-h')
1518
+ ```
1519
+
1520
+ ### car policy-check-hook
1521
+
1522
+ ```text
1523
+ Evaluate a host's proposed tool call against `.car/policies/` and answer on stdout with that host's
1524
+ hook decision envelope.
1525
+
1526
+ Reads a Claude Code / Codex `PreToolUse` payload on stdin. Wire it into a plugin as a `PreToolUse`
1527
+ command hook and the operator's policy rules govern the agent in their editor, not just CAR's own
1528
+ loop.
1529
+
1530
+ Fails OPEN on anything it cannot evaluate (and says why on stderr), and CLOSED on a genuine deny —
1531
+ including a policy file that will not parse.
1532
+
1533
+ Usage: car policy-check-hook
1534
+
1535
+ Options:
1536
+ -h, --help
1537
+ Print help (see a summary with '-h')
1538
+ ```
1539
+
1540
+ ### car project
1541
+
1542
+ ```text
1543
+ Manage CAR-managed projects (a named, git-backed workspace CAR creates for you — no repo to pick)
1544
+
1545
+ Usage: car project <COMMAND>
1546
+
1547
+ Commands:
1548
+ new Create a managed project (idempotent — re-running loads it)
1549
+ list List your managed projects
1550
+ help Print this message or the help of the given subcommand(s)
1551
+
1552
+ Options:
1553
+ -h, --help Print help
1554
+ ```
1555
+
1556
+ #### car project new
1557
+
1558
+ ```text
1559
+ Create a managed project (idempotent — re-running loads it)
1560
+
1561
+ Usage: car project new [OPTIONS] [NAME]...
1562
+
1563
+ Arguments:
1564
+ [NAME]... A friendly name (CAR derives a slug)
1565
+
1566
+ Options:
1567
+ --kind <KIND> `app` (code) or `agent` (an in-daemon agent) [default: app]
1568
+ -h, --help Print help
1569
+ ```
1570
+
1571
+ #### car project list
1572
+
1573
+ ```text
1574
+ List your managed projects
1575
+
1576
+ Usage: car project list
1577
+
1578
+ Options:
1579
+ -h, --help Print help
1580
+ ```
1581
+
1582
+ ### car parslee
1583
+
1584
+ ```text
1585
+ Parslee platform capabilities for the signed-in account (requires `car auth login`)
1586
+
1587
+ Usage: car parslee <COMMAND>
1588
+
1589
+ Commands:
1590
+ capabilities Discover what your Parslee account can do — identity, product entitlements, and
1591
+ Studio reachability. Read-only
1592
+ generate-document Generate a Word document from a natural-language brief and save it to your
1593
+ connected drive (OneDrive/Google Drive). Requires the `aie` product
1594
+ help Print this message or the help of the given subcommand(s)
1595
+
1596
+ Options:
1597
+ -h, --help Print help
1598
+ ```
1599
+
1600
+ #### car parslee capabilities
1601
+
1602
+ ```text
1603
+ Discover what your Parslee account can do — identity, product entitlements, and Studio reachability.
1604
+ Read-only
1605
+
1606
+ Usage: car parslee capabilities [OPTIONS]
1607
+
1608
+ Options:
1609
+ --json Print the raw JSON response instead of a summary
1610
+ -h, --help Print help
1611
+ ```
1612
+
1613
+ #### car parslee generate-document
1614
+
1615
+ ```text
1616
+ Generate a Word document from a natural-language brief and save it to your connected drive
1617
+ (OneDrive/Google Drive). Requires the `aie` product
1618
+
1619
+ Usage: car parslee generate-document [OPTIONS] --brief <BRIEF> --out <OUT>
1620
+
1621
+ Options:
1622
+ --brief <BRIEF> What the document should contain (20–2000 chars)
1623
+ --out <OUT> Output path in your drive, e.g. "Generated/report.docx"
1624
+ --type <DOC_TYPE> Report | Proposal | Memo | Letter | Contract | ExecutiveSummary |
1625
+ MeetingMinutes | ProjectPlan [default: Report]
1626
+ --title <TITLE> Optional title override
1627
+ --author <AUTHOR> Optional author name for document metadata
1628
+ -h, --help Print help
1629
+ ```
1630
+
1631
+ ### car agent
1632
+
1633
+ ```text
1634
+ Build and run in-daemon agents from plain-language descriptions. An agent runs inside CAR — nothing
1635
+ to install
1636
+
1637
+ Usage: car agent <COMMAND>
1638
+
1639
+ Commands:
1640
+ new Describe an agent in plain language; CAR builds, verifies, and registers it to run
1641
+ in-daemon
1642
+ run Run a registered agent on an input
1643
+ list List registered in-daemon agents
1644
+ external Show installed external agentic CLIs (Claude Code, Codex, Gemini): which binary each
1645
+ resolved to, and whether it can actually run
1646
+ help Print this message or the help of the given subcommand(s)
1647
+
1648
+ Options:
1649
+ -h, --help Print help
1650
+ ```
1651
+
1652
+ #### car agent new
1653
+
1654
+ ```text
1655
+ Describe an agent in plain language; CAR builds, verifies, and registers it to run in-daemon
1656
+
1657
+ Usage: car agent new [OPTIONS] [DESCRIPTION]...
1658
+
1659
+ Arguments:
1660
+ [DESCRIPTION]... What the agent should do
1661
+
1662
+ Options:
1663
+ -y, --yes Skip the interactive confirm/approve prompts
1664
+ -h, --help Print help
1665
+ ```
1666
+
1667
+ #### car agent run
1668
+
1669
+ ```text
1670
+ Run a registered agent on an input
1671
+
1672
+ Usage: car agent run <ID> [INPUT]...
1673
+
1674
+ Arguments:
1675
+ <ID> The agent id (its project slug)
1676
+ [INPUT]... The input to give it
1677
+
1678
+ Options:
1679
+ -h, --help Print help
1680
+ ```
1681
+
1682
+ #### car agent list
1683
+
1684
+ ```text
1685
+ List registered in-daemon agents
1686
+
1687
+ Usage: car agent list
1688
+
1689
+ Options:
1690
+ -h, --help Print help
1691
+ ```
1692
+
1693
+ #### car agent external
1694
+
1695
+ ```text
1696
+ Show installed external agentic CLIs (Claude Code, Codex, Gemini): which binary each resolved to,
1697
+ and whether it can actually run.
1698
+
1699
+ Runs detection in-process, so it works with the daemon stopped — diagnosing a CLI that won't start
1700
+ should not require a healthy daemon. Exits non-zero if any detected CLI cannot be executed.
1701
+
1702
+ Usage: car agent external [OPTIONS]
1703
+
1704
+ Options:
1705
+ --json
1706
+ Emit the raw `[ExternalAgentSpec]` JSON instead of a table
1707
+
1708
+ -h, --help
1709
+ Print help (see a summary with '-h')
1710
+ ```
1711
+
1712
+ ### car build
1713
+
1714
+ ```text
1715
+ Build a runnable workflow from a natural-language goal.
1716
+
1717
+ Generates a car-workflow manifest with a model, validates it with the runtime verifier (repairing on
1718
+ failure), shows it for approval, and saves it. Use --update to edit an existing workflow file.
1719
+
1720
+ Usage: car build [OPTIONS] [GOAL]...
1721
+
1722
+ Arguments:
1723
+ [GOAL]...
1724
+ What the workflow should do, in plain English
1725
+
1726
+ Options:
1727
+ -o, --output <OUTPUT>
1728
+ Where to write the workflow JSON (default: ~/.car/workflows/<id>.json)
1729
+
1730
+ -u, --update <UPDATE>
1731
+ Update this existing workflow file instead of creating a new one
1732
+
1733
+ -y, --yes
1734
+ Save without the interactive approval prompt
1735
+
1736
+ --max-attempts <MAX_ATTEMPTS>
1737
+ Max generate→validate→repair attempts per round
1738
+
1739
+ [default: 3]
1740
+
1741
+ -h, --help
1742
+ Print help (see a summary with '-h')
1743
+ ```
1744
+
1745
+ ### car dream
1746
+
1747
+ ```text
1748
+ Run memory consolidation ("dream") — prune, GC, embed, evolve
1749
+
1750
+ Usage: car dream [OPTIONS]
1751
+
1752
+ Options:
1753
+ -m, --memory <MEMORY> Path to memory graph JSON file (default: ~/.car/memory.json)
1754
+ -e, --embeddings <EMBEDDINGS> Path to embeddings cache file (default: ~/.car/embeddings.bin)
1755
+ --json Output as JSON instead of human-readable
1756
+ -h, --help Print help
1757
+ ```
1758
+
1759
+ ### car browse
1760
+
1761
+ ```text
1762
+ Browser automation — drive Chromium through the CAR runtime
1763
+
1764
+ Usage: car browse <COMMAND>
1765
+
1766
+ Commands:
1767
+ run Execute a script of browser operations in order. See docs for the script JSON schema (see
1768
+ crates/car-cli/BROWSE.md once published)
1769
+ schema Print the script schema and the list of supported operations
1770
+ help Print this message or the help of the given subcommand(s)
1771
+
1772
+ Options:
1773
+ -h, --help Print help
1774
+ ```
1775
+
1776
+ #### car browse run
1777
+
1778
+ ```text
1779
+ Execute a script of browser operations in order. See docs for the script JSON schema (see
1780
+ crates/car-cli/BROWSE.md once published)
1781
+
1782
+ Usage: car browse run [OPTIONS] <SCRIPT>
1783
+
1784
+ Arguments:
1785
+ <SCRIPT> Path to the script JSON file. Use `-` for stdin
1786
+
1787
+ Options:
1788
+ --width <WIDTH> Viewport width in pixels [default: 1280]
1789
+ --height <HEIGHT> Viewport height in pixels [default: 720]
1790
+ --headed Launch a visible Chromium window instead of headless. Intended for
1791
+ interactive flows (first-time auth, 2FA, captcha) where a human completes a step mid-script
1792
+ before the automation runs headless against the captured session
1793
+ --pretty Output trace as pretty JSON instead of compact
1794
+ -h, --help Print help
1795
+ ```
1796
+
1797
+ #### car browse schema
1798
+
1799
+ ```text
1800
+ Print the script schema and the list of supported operations
1801
+
1802
+ Usage: car browse schema
1803
+
1804
+ Options:
1805
+ -h, --help Print help
1806
+ ```
1807
+
1808
+ ### car secrets
1809
+
1810
+ ```text
1811
+ OS-native secret store — Keychain / Credential Manager / Secret Service. Aliased as `secret`
1812
+ (singular) for backward compatibility
1813
+
1814
+ Usage: car secrets <COMMAND>
1815
+
1816
+ Commands:
1817
+ put Store a secret. Value is read from --value or piped stdin
1818
+ get Retrieve a secret — prints the value on stdout
1819
+ delete Delete a secret (idempotent)
1820
+ status Check whether a secret exists, without returning the value
1821
+ available Probe whether the OS secret store is reachable on this host
1822
+ migrate-from-env Walk known remote-model env vars and copy any non-empty values from process env
1823
+ into the OS keychain. Idempotent — running again only rewrites entries when the env value differs
1824
+ from what's stored
1825
+ help Print this message or the help of the given subcommand(s)
1826
+
1827
+ Options:
1828
+ -h, --help Print help
1829
+ ```
1830
+
1831
+ #### car secrets put
1832
+
1833
+ ```text
1834
+ Store a secret. Value is read from --value or piped stdin
1835
+
1836
+ Usage: car secrets put [OPTIONS] <KEY>
1837
+
1838
+ Arguments:
1839
+ <KEY>
1840
+
1841
+ Options:
1842
+ --service <SERVICE>
1843
+ --value <VALUE>
1844
+ -h, --help Print help
1845
+ ```
1846
+
1847
+ #### car secrets get
1848
+
1849
+ ```text
1850
+ Retrieve a secret — prints the value on stdout
1851
+
1852
+ Usage: car secrets get [OPTIONS] <KEY>
1853
+
1854
+ Arguments:
1855
+ <KEY>
1856
+
1857
+ Options:
1858
+ --service <SERVICE>
1859
+ -h, --help Print help
1860
+ ```
1861
+
1862
+ #### car secrets delete
1863
+
1864
+ ```text
1865
+ Delete a secret (idempotent)
1866
+
1867
+ Usage: car secrets delete [OPTIONS] <KEY>
1868
+
1869
+ Arguments:
1870
+ <KEY>
1871
+
1872
+ Options:
1873
+ --service <SERVICE>
1874
+ -h, --help Print help
1875
+ ```
1876
+
1877
+ #### car secrets status
1878
+
1879
+ ```text
1880
+ Check whether a secret exists, without returning the value
1881
+
1882
+ Usage: car secrets status [OPTIONS] <KEY>
1883
+
1884
+ Arguments:
1885
+ <KEY>
1886
+
1887
+ Options:
1888
+ --service <SERVICE>
1889
+ -h, --help Print help
1890
+ ```
1891
+
1892
+ #### car secrets available
1893
+
1894
+ ```text
1895
+ Probe whether the OS secret store is reachable on this host
1896
+
1897
+ Usage: car secrets available
1898
+
1899
+ Options:
1900
+ -h, --help Print help
1901
+ ```
1902
+
1903
+ #### car secrets migrate-from-env
1904
+
1905
+ ```text
1906
+ Walk known remote-model env vars and copy any non-empty values from process env into the OS
1907
+ keychain. Idempotent — running again only rewrites entries when the env value differs from what's
1908
+ stored.
1909
+
1910
+ One-time setup for users moving away from `~/.car/env`. After migration, you can `unset
1911
+ OPENAI_API_KEY` (etc.) in your shell rc and the keychain entries will be picked up at runtime by
1912
+ car-inference.
1913
+
1914
+ Usage: car secrets migrate-from-env [OPTIONS]
1915
+
1916
+ Options:
1917
+ --dry-run
1918
+ Print what would be migrated without writing anything
1919
+
1920
+ --service <SERVICE>
1921
+ Service to write entries under. Defaults to "car" (the per-app namespace; same one
1922
+ car-inference reads at runtime)
1923
+
1924
+ --include <ENV_VAR>
1925
+ Additional env-var names to migrate beyond the built-in remote-model defaults
1926
+ (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY). Repeatable
1927
+
1928
+ -h, --help
1929
+ Print help (see a summary with '-h')
1930
+ ```
1931
+
1932
+ ### car auth
1933
+
1934
+ ```text
1935
+ Parslee account authentication for CAR cloud-backed features
1936
+
1937
+ Usage: car auth <COMMAND>
1938
+
1939
+ Commands:
1940
+ login Sign in with a Parslee account using browser-based OAuth + PKCE
1941
+ status Show whether CAR has a usable Parslee account token
1942
+ logout Remove stored Parslee account tokens from the OS keychain
1943
+ orgs List the organizations the signed-in account belongs to (active marked)
1944
+ switch-org Switch the account's active organization by id (e.g. `org_parslee`)
1945
+ accounts List all stored Parslee logins (active marked)
1946
+ switch-account Switch the active Parslee login by account id
1947
+ help Print this message or the help of the given subcommand(s)
1948
+
1949
+ Options:
1950
+ -h, --help Print help
1951
+ ```
1952
+
1953
+ #### car auth login
1954
+
1955
+ ```text
1956
+ Sign in with a Parslee account using browser-based OAuth + PKCE
1957
+
1958
+ Usage: car auth login [OPTIONS]
1959
+
1960
+ Options:
1961
+ --api-base <API_BASE> Parslee API base URL [default: https://api.parslee.ai]
1962
+ --client-id <CLIENT_ID> OAuth client id registered in the Parslee backend [default:
1963
+ parslee-car]
1964
+ --callback-port <CALLBACK_PORT> Local callback port. The backend must allow this exact
1965
+ redirect URI [default: 53682]
1966
+ --provider <PROVIDER> Provider hint forwarded to Parslee authorize (`microsoft` or
1967
+ `google`)
1968
+ --add Add a second Parslee login alongside the current one (forces
1969
+ the account chooser) instead of replacing it
1970
+ -h, --help Print help
1971
+ ```
1972
+
1973
+ #### car auth status
1974
+
1975
+ ```text
1976
+ Show whether CAR has a usable Parslee account token
1977
+
1978
+ Usage: car auth status [OPTIONS]
1979
+
1980
+ Options:
1981
+ --api-base <API_BASE> Parslee API base URL override
1982
+ --json Print the raw session object from the Parslee API instead of a summary.
1983
+ The shape is the upstream API's and is not a CAR contract
1984
+ -h, --help Print help
1985
+ ```
1986
+
1987
+ #### car auth logout
1988
+
1989
+ ```text
1990
+ Remove stored Parslee account tokens from the OS keychain
1991
+
1992
+ Usage: car auth logout
1993
+
1994
+ Options:
1995
+ -h, --help Print help
1996
+ ```
1997
+
1998
+ #### car auth orgs
1999
+
2000
+ ```text
2001
+ List the organizations the signed-in account belongs to (active marked)
2002
+
2003
+ Usage: car auth orgs [OPTIONS]
2004
+
2005
+ Options:
2006
+ --api-base <API_BASE> Parslee API base URL override
2007
+ -h, --help Print help
2008
+ ```
2009
+
2010
+ #### car auth switch-org
2011
+
2012
+ ```text
2013
+ Switch the account's active organization by id (e.g. `org_parslee`)
2014
+
2015
+ Usage: car auth switch-org [OPTIONS] <ORGANIZATION_ID>
2016
+
2017
+ Arguments:
2018
+ <ORGANIZATION_ID> Target organization id
2019
+
2020
+ Options:
2021
+ --api-base <API_BASE> Parslee API base URL override
2022
+ -h, --help Print help
2023
+ ```
2024
+
2025
+ #### car auth accounts
2026
+
2027
+ ```text
2028
+ List all stored Parslee logins (active marked)
2029
+
2030
+ Usage: car auth accounts [OPTIONS]
2031
+
2032
+ Options:
2033
+ --api-base <API_BASE> Parslee API base URL override
2034
+ -h, --help Print help
2035
+ ```
2036
+
2037
+ #### car auth switch-account
2038
+
2039
+ ```text
2040
+ Switch the active Parslee login by account id
2041
+
2042
+ Usage: car auth switch-account [OPTIONS] <ACCOUNT_ID>
2043
+
2044
+ Arguments:
2045
+ <ACCOUNT_ID> Target account id (from `car auth accounts`)
2046
+
2047
+ Options:
2048
+ --api-base <API_BASE> Parslee API base URL override
2049
+ -h, --help Print help
2050
+ ```
2051
+
2052
+ ### car permissions
2053
+
2054
+ ```text
2055
+ OS permission preflight — TCC / Windows Privacy / xdg-desktop-portal
2056
+
2057
+ Usage: car permissions <COMMAND>
2058
+
2059
+ Commands:
2060
+ status Report current grant state for a domain
2061
+ request Trigger a native prompt if the OS supports one
2062
+ explain Human-readable explanation and fix suggestion
2063
+ domains List all known domains
2064
+ help Print this message or the help of the given subcommand(s)
2065
+
2066
+ Options:
2067
+ -h, --help Print help
2068
+ ```
2069
+
2070
+ #### car permissions status
2071
+
2072
+ ```text
2073
+ Report current grant state for a domain
2074
+
2075
+ Usage: car permissions status [OPTIONS] <DOMAIN>
2076
+
2077
+ Arguments:
2078
+ <DOMAIN>
2079
+
2080
+ Options:
2081
+ --target <TARGET> macOS Automation only: bundle ID of the target app to control. Ignored for
2082
+ other domains
2083
+ -h, --help Print help
2084
+ ```
2085
+
2086
+ #### car permissions request
2087
+
2088
+ ```text
2089
+ Trigger a native prompt if the OS supports one
2090
+
2091
+ Usage: car permissions request [OPTIONS] <DOMAIN>
2092
+
2093
+ Arguments:
2094
+ <DOMAIN>
2095
+
2096
+ Options:
2097
+ --target <TARGET>
2098
+ -h, --help Print help
2099
+ ```
2100
+
2101
+ #### car permissions explain
2102
+
2103
+ ```text
2104
+ Human-readable explanation and fix suggestion
2105
+
2106
+ Usage: car permissions explain [OPTIONS] <DOMAIN>
2107
+
2108
+ Arguments:
2109
+ <DOMAIN>
2110
+
2111
+ Options:
2112
+ --target <TARGET>
2113
+ -h, --help Print help
2114
+ ```
2115
+
2116
+ #### car permissions domains
2117
+
2118
+ ```text
2119
+ List all known domains
2120
+
2121
+ Usage: car permissions domains
2122
+
2123
+ Options:
2124
+ -h, --help Print help
2125
+ ```
2126
+
2127
+ ### car voice
2128
+
2129
+ ```text
2130
+ Voiceprint enrollment — teach CAR your voice so it knows who's speaking (the owner drives commands;
2131
+ other voices are context). Proxies the daemon's `voice.*` surface
2132
+
2133
+ Usage: car voice <COMMAND>
2134
+
2135
+ Commands:
2136
+ enroll Enroll a voiceprint from a WAV recording. The daemon decodes the file and saves a
2137
+ voiceprint under `~/.car/voiceprints/<label>.toml`
2138
+ list List enrolled voiceprints
2139
+ remove Remove an enrolled voiceprint by label
2140
+ help Print this message or the help of the given subcommand(s)
2141
+
2142
+ Options:
2143
+ -h, --help Print help
2144
+ ```
2145
+
2146
+ #### car voice enroll
2147
+
2148
+ ```text
2149
+ Enroll a voiceprint from a WAV recording. The daemon decodes the file and saves a voiceprint under
2150
+ `~/.car/voiceprints/<label>.toml`
2151
+
2152
+ Usage: car voice enroll --label <LABEL> --wav <WAV>
2153
+
2154
+ Options:
2155
+ --label <LABEL> A name for this voice, e.g. your first name
2156
+ --wav <WAV> Path to a WAV recording of the speaker (a few seconds is enough)
2157
+ -h, --help Print help
2158
+ ```
2159
+
2160
+ #### car voice list
2161
+
2162
+ ```text
2163
+ List enrolled voiceprints
2164
+
2165
+ Usage: car voice list
2166
+
2167
+ Options:
2168
+ -h, --help Print help
2169
+ ```
2170
+
2171
+ #### car voice remove
2172
+
2173
+ ```text
2174
+ Remove an enrolled voiceprint by label
2175
+
2176
+ Usage: car voice remove --label <LABEL>
2177
+
2178
+ Options:
2179
+ --label <LABEL>
2180
+ -h, --help Print help
2181
+ ```
2182
+
2183
+ ### car onboard
2184
+
2185
+ ```text
2186
+ Onboarding readiness — what's set up and what's still pending (the headless equivalent of the
2187
+ CarHost setup wizard)
2188
+
2189
+ Usage: car onboard
2190
+
2191
+ Options:
2192
+ -h, --help Print help
2193
+ ```
2194
+
2195
+ ### car approvals
2196
+
2197
+ ```text
2198
+ Agent approval policy — the default posture for what agents may do without asking. Proxies the
2199
+ daemon's `agent_permissions.*` surface (the CLI counterpart to the CarHost "Approvals" settings /
2200
+ onboarding step)
2201
+
2202
+ Usage: car approvals <COMMAND>
2203
+
2204
+ Commands:
2205
+ default Set the default approval preset for all agents (`cautious` asks before any
2206
+ edit/full-access, `balanced` allows sandboxed edits, `trusting` allows everything without asking)
2207
+ get Show the current default approval posture
2208
+ set-tool Set an approval mode for one exact agent and exact tool. `always_allow` requires
2209
+ that agent to be attached with an eligible live callback
2210
+ evaluate-tool Show whether one exact agent/tool override is active and schema-bound
2211
+ reset-tool Remove one exact agent/tool approval override
2212
+ help Print this message or the help of the given subcommand(s)
2213
+
2214
+ Options:
2215
+ -h, --help Print help
2216
+ ```
2217
+
2218
+ #### car approvals default
2219
+
2220
+ ```text
2221
+ Set the default approval preset for all agents (`cautious` asks before any edit/full-access,
2222
+ `balanced` allows sandboxed edits, `trusting` allows everything without asking)
2223
+
2224
+ Usage: car approvals default <PRESET>
2225
+
2226
+ Arguments:
2227
+ <PRESET> One of: cautious | balanced | trusting
2228
+
2229
+ Options:
2230
+ -h, --help Print help
2231
+ ```
2232
+
2233
+ #### car approvals get
2234
+
2235
+ ```text
2236
+ Show the current default approval posture
2237
+
2238
+ Usage: car approvals get
2239
+
2240
+ Options:
2241
+ -h, --help Print help
2242
+ ```
2243
+
2244
+ #### car approvals set-tool
2245
+
2246
+ ```text
2247
+ Set an approval mode for one exact agent and exact tool. `always_allow` requires that agent to be
2248
+ attached with an eligible live callback
2249
+
2250
+ Usage: car approvals set-tool <AGENT> <TOOL> <MODE>
2251
+
2252
+ Arguments:
2253
+ <AGENT>
2254
+ <TOOL>
2255
+ <MODE> One of: always_allow | require_approval | deny
2256
+
2257
+ Options:
2258
+ -h, --help Print help
2259
+ ```
2260
+
2261
+ #### car approvals evaluate-tool
2262
+
2263
+ ```text
2264
+ Show whether one exact agent/tool override is active and schema-bound
2265
+
2266
+ Usage: car approvals evaluate-tool <AGENT> <TOOL>
2267
+
2268
+ Arguments:
2269
+ <AGENT>
2270
+ <TOOL>
2271
+
2272
+ Options:
2273
+ -h, --help Print help
2274
+ ```
2275
+
2276
+ #### car approvals reset-tool
2277
+
2278
+ ```text
2279
+ Remove one exact agent/tool approval override
2280
+
2281
+ Usage: car approvals reset-tool <AGENT> <TOOL>
2282
+
2283
+ Arguments:
2284
+ <AGENT>
2285
+ <TOOL>
2286
+
2287
+ Options:
2288
+ -h, --help Print help
2289
+ ```
2290
+
2291
+ ### car accounts
2292
+
2293
+ ```text
2294
+ OS-native account discovery — Internet Accounts / WAM / GOA
2295
+
2296
+ Usage: car accounts <COMMAND>
2297
+
2298
+ Commands:
2299
+ list List accounts visible to the OS
2300
+ open Open the native account-management UI
2301
+ help Print this message or the help of the given subcommand(s)
2302
+
2303
+ Options:
2304
+ -h, --help Print help
2305
+ ```
2306
+
2307
+ #### car accounts list
2308
+
2309
+ ```text
2310
+ List accounts visible to the OS
2311
+
2312
+ Usage: car accounts list
2313
+
2314
+ Options:
2315
+ -h, --help Print help
2316
+ ```
2317
+
2318
+ #### car accounts open
2319
+
2320
+ ```text
2321
+ Open the native account-management UI
2322
+
2323
+ Usage: car accounts open [OPTIONS]
2324
+
2325
+ Options:
2326
+ --account-id <ACCOUNT_ID>
2327
+ -h, --help Print help
2328
+ ```
2329
+
2330
+ ### car cal
2331
+
2332
+ ```text
2333
+ OS-native Calendar integration
2334
+
2335
+ Usage: car cal <COMMAND>
2336
+
2337
+ Commands:
2338
+ list List visible calendars across all sources
2339
+ events List events in an ISO-8601 time range
2340
+ help Print this message or the help of the given subcommand(s)
2341
+
2342
+ Options:
2343
+ -h, --help Print help
2344
+ ```
2345
+
2346
+ #### car cal list
2347
+
2348
+ ```text
2349
+ List visible calendars across all sources
2350
+
2351
+ Usage: car cal list
2352
+
2353
+ Options:
2354
+ -h, --help Print help
2355
+ ```
2356
+
2357
+ #### car cal events
2358
+
2359
+ ```text
2360
+ List events in an ISO-8601 time range
2361
+
2362
+ Usage: car cal events [OPTIONS] --start <START> --end <END>
2363
+
2364
+ Options:
2365
+ --start <START> RFC3339 / ISO-8601 start time
2366
+ --end <END> RFC3339 / ISO-8601 end time
2367
+ --calendars <CALENDARS> Optional comma-separated list of calendar IDs
2368
+ -h, --help Print help
2369
+ ```
2370
+
2371
+ ### car contacts
2372
+
2373
+ ```text
2374
+ OS-native Contacts integration
2375
+
2376
+ Usage: car contacts <COMMAND>
2377
+
2378
+ Commands:
2379
+ containers List containers (a.k.a. sources / accounts within Contacts)
2380
+ find Free-text contact search
2381
+ help Print this message or the help of the given subcommand(s)
2382
+
2383
+ Options:
2384
+ -h, --help Print help
2385
+ ```
2386
+
2387
+ #### car contacts containers
2388
+
2389
+ ```text
2390
+ List containers (a.k.a. sources / accounts within Contacts)
2391
+
2392
+ Usage: car contacts containers
2393
+
2394
+ Options:
2395
+ -h, --help Print help
2396
+ ```
2397
+
2398
+ #### car contacts find
2399
+
2400
+ ```text
2401
+ Free-text contact search
2402
+
2403
+ Usage: car contacts find [OPTIONS] <QUERY>
2404
+
2405
+ Arguments:
2406
+ <QUERY>
2407
+
2408
+ Options:
2409
+ --limit <LIMIT> [default: 50]
2410
+ --containers <CONTAINERS>
2411
+ -h, --help Print help
2412
+ ```
2413
+
2414
+ ### car mail
2415
+
2416
+ ```text
2417
+ OS-native Mail integration
2418
+
2419
+ Usage: car mail <COMMAND>
2420
+
2421
+ Commands:
2422
+ accounts List mail accounts known to the backend
2423
+ inbox Inbox summaries per account
2424
+ mailboxes List every mailbox (folder) per account, nested ones included (on Microsoft Graph the
2425
+ nested walk is bounded: depth 8, 64 requests)
2426
+ messages Read message rows from one mailbox, newest first across all matched accounts (not
2427
+ newest-first per account, then concatenated)
2428
+ body Fetch one message body by the `id` from `car mail messages`
2429
+ send Send (or draft) a message. JSON payload on stdin matching SendRequest
2430
+ help Print this message or the help of the given subcommand(s)
2431
+
2432
+ Options:
2433
+ -h, --help Print help
2434
+ ```
2435
+
2436
+ #### car mail accounts
2437
+
2438
+ ```text
2439
+ List mail accounts known to the backend
2440
+
2441
+ Usage: car mail accounts
2442
+
2443
+ Options:
2444
+ -h, --help Print help
2445
+ ```
2446
+
2447
+ #### car mail inbox
2448
+
2449
+ ```text
2450
+ Inbox summaries per account
2451
+
2452
+ Usage: car mail inbox [OPTIONS]
2453
+
2454
+ Options:
2455
+ --accounts <ACCOUNTS>
2456
+ -h, --help Print help
2457
+ ```
2458
+
2459
+ #### car mail mailboxes
2460
+
2461
+ ```text
2462
+ List every mailbox (folder) per account, nested ones included (on Microsoft Graph the nested walk is
2463
+ bounded: depth 8, 64 requests)
2464
+
2465
+ Usage: car mail mailboxes [OPTIONS]
2466
+
2467
+ Options:
2468
+ --accounts <ACCOUNTS>
2469
+ -h, --help Print help
2470
+ ```
2471
+
2472
+ #### car mail messages
2473
+
2474
+ ```text
2475
+ Read message rows from one mailbox, newest first across all matched accounts (not newest-first per
2476
+ account, then concatenated)
2477
+
2478
+ Usage: car mail messages [OPTIONS]
2479
+
2480
+ Options:
2481
+ --accounts <ACCOUNTS>
2482
+ --mailbox <MAILBOX> Mailbox selector — a `full_name` from `car mail mailboxes`, or a bare
2483
+ leaf name like "Travel". Defaults to INBOX
2484
+ --limit <LIMIT> [default: 50]
2485
+ --since <SINCE> Only messages received at or after this RFC3339 instant
2486
+ --include-body Include each message's body inline (bounded per message)
2487
+ -h, --help Print help
2488
+ ```
2489
+
2490
+ #### car mail body
2491
+
2492
+ ```text
2493
+ Fetch one message body by the `id` from `car mail messages`
2494
+
2495
+ Usage: car mail body <ID>
2496
+
2497
+ Arguments:
2498
+ <ID>
2499
+
2500
+ Options:
2501
+ -h, --help Print help
2502
+ ```
2503
+
2504
+ #### car mail send
2505
+
2506
+ ```text
2507
+ Send (or draft) a message. JSON payload on stdin matching SendRequest
2508
+
2509
+ Usage: car mail send
2510
+
2511
+ Options:
2512
+ -h, --help Print help
2513
+ ```
2514
+
2515
+ ### car messages
2516
+
2517
+ ```text
2518
+ OS-native Messages integration
2519
+
2520
+ Usage: car messages <COMMAND>
2521
+
2522
+ Commands:
2523
+ services List Messages.app services/accounts
2524
+ chats List recent Messages.app chats
2525
+ send Send a message. JSON payload on stdin matching Messages SendRequest
2526
+ help Print this message or the help of the given subcommand(s)
2527
+
2528
+ Options:
2529
+ -h, --help Print help
2530
+ ```
2531
+
2532
+ #### car messages services
2533
+
2534
+ ```text
2535
+ List Messages.app services/accounts
2536
+
2537
+ Usage: car messages services
2538
+
2539
+ Options:
2540
+ -h, --help Print help
2541
+ ```
2542
+
2543
+ #### car messages chats
2544
+
2545
+ ```text
2546
+ List recent Messages.app chats
2547
+
2548
+ Usage: car messages chats [OPTIONS]
2549
+
2550
+ Options:
2551
+ --limit <LIMIT> [default: 50]
2552
+ -h, --help Print help
2553
+ ```
2554
+
2555
+ #### car messages send
2556
+
2557
+ ```text
2558
+ Send a message. JSON payload on stdin matching Messages SendRequest
2559
+
2560
+ Usage: car messages send
2561
+
2562
+ Options:
2563
+ -h, --help Print help
2564
+ ```
2565
+
2566
+ ### car notes
2567
+
2568
+ ```text
2569
+ macOS Notes integration
2570
+
2571
+ Usage: car notes <COMMAND>
2572
+
2573
+ Commands:
2574
+ accounts List Notes.app accounts
2575
+ find Free-text note search
2576
+ help Print this message or the help of the given subcommand(s)
2577
+
2578
+ Options:
2579
+ -h, --help Print help
2580
+ ```
2581
+
2582
+ #### car notes accounts
2583
+
2584
+ ```text
2585
+ List Notes.app accounts
2586
+
2587
+ Usage: car notes accounts
2588
+
2589
+ Options:
2590
+ -h, --help Print help
2591
+ ```
2592
+
2593
+ #### car notes find
2594
+
2595
+ ```text
2596
+ Free-text note search
2597
+
2598
+ Usage: car notes find [OPTIONS] <QUERY>
2599
+
2600
+ Arguments:
2601
+ <QUERY>
2602
+
2603
+ Options:
2604
+ --limit <LIMIT> [default: 50]
2605
+ -h, --help Print help
2606
+ ```
2607
+
2608
+ ### car reminders
2609
+
2610
+ ```text
2611
+ macOS Reminders integration
2612
+
2613
+ Usage: car reminders <COMMAND>
2614
+
2615
+ Commands:
2616
+ lists List Reminders.app lists
2617
+ items List incomplete reminders
2618
+ help Print this message or the help of the given subcommand(s)
2619
+
2620
+ Options:
2621
+ -h, --help Print help
2622
+ ```
2623
+
2624
+ #### car reminders lists
2625
+
2626
+ ```text
2627
+ List Reminders.app lists
2628
+
2629
+ Usage: car reminders lists
2630
+
2631
+ Options:
2632
+ -h, --help Print help
2633
+ ```
2634
+
2635
+ #### car reminders items
2636
+
2637
+ ```text
2638
+ List incomplete reminders
2639
+
2640
+ Usage: car reminders items [OPTIONS]
2641
+
2642
+ Options:
2643
+ --limit <LIMIT> [default: 50]
2644
+ -h, --help Print help
2645
+ ```
2646
+
2647
+ ### car photos
2648
+
2649
+ ```text
2650
+ macOS Photos integration
2651
+
2652
+ Usage: car photos <COMMAND>
2653
+
2654
+ Commands:
2655
+ albums List Photos.app albums
2656
+ help Print this message or the help of the given subcommand(s)
2657
+
2658
+ Options:
2659
+ -h, --help Print help
2660
+ ```
2661
+
2662
+ #### car photos albums
2663
+
2664
+ ```text
2665
+ List Photos.app albums
2666
+
2667
+ Usage: car photos albums
2668
+
2669
+ Options:
2670
+ -h, --help Print help
2671
+ ```
2672
+
2673
+ ### car bookmarks
2674
+
2675
+ ```text
2676
+ Browser bookmark integration
2677
+
2678
+ Usage: car bookmarks <COMMAND>
2679
+
2680
+ Commands:
2681
+ list List Safari bookmarks
2682
+ help Print this message or the help of the given subcommand(s)
2683
+
2684
+ Options:
2685
+ -h, --help Print help
2686
+ ```
2687
+
2688
+ #### car bookmarks list
2689
+
2690
+ ```text
2691
+ List Safari bookmarks
2692
+
2693
+ Usage: car bookmarks list [OPTIONS]
2694
+
2695
+ Options:
2696
+ --limit <LIMIT> [default: 100]
2697
+ -h, --help Print help
2698
+ ```
2699
+
2700
+ ### car files
2701
+
2702
+ ```text
2703
+ Account-backed file locations
2704
+
2705
+ Usage: car files <COMMAND>
2706
+
2707
+ Commands:
2708
+ locations List standard account-backed file locations
2709
+ help Print this message or the help of the given subcommand(s)
2710
+
2711
+ Options:
2712
+ -h, --help Print help
2713
+ ```
2714
+
2715
+ #### car files locations
2716
+
2717
+ ```text
2718
+ List standard account-backed file locations
2719
+
2720
+ Usage: car files locations
2721
+
2722
+ Options:
2723
+ -h, --help Print help
2724
+ ```
2725
+
2726
+ ### car keychain
2727
+
2728
+ ```text
2729
+ OS keychain integration
2730
+
2731
+ Usage: car keychain <COMMAND>
2732
+
2733
+ Commands:
2734
+ status Backend availability status
2735
+ help Print this message or the help of the given subcommand(s)
2736
+
2737
+ Options:
2738
+ -h, --help Print help
2739
+ ```
2740
+
2741
+ #### car keychain status
2742
+
2743
+ ```text
2744
+ Backend availability status
2745
+
2746
+ Usage: car keychain status
2747
+
2748
+ Options:
2749
+ -h, --help Print help
2750
+ ```
2751
+
2752
+ ### car health
2753
+
2754
+ ```text
2755
+ Wearable / activity data (HealthKit + Fitbit/Garmin/Oura/etc.)
2756
+
2757
+ Usage: car health <COMMAND>
2758
+
2759
+ Commands:
2760
+ status Backend availability + guidance
2761
+ sleep Sleep windows in an ISO-8601 time range
2762
+ workouts Workouts in an ISO-8601 time range
2763
+ activity Daily activity summaries across a date range (YYYY-MM-DD)
2764
+ help Print this message or the help of the given subcommand(s)
2765
+
2766
+ Options:
2767
+ -h, --help Print help
2768
+ ```
2769
+
2770
+ #### car health status
2771
+
2772
+ ```text
2773
+ Backend availability + guidance
2774
+
2775
+ Usage: car health status
2776
+
2777
+ Options:
2778
+ -h, --help Print help
2779
+ ```
2780
+
2781
+ #### car health sleep
2782
+
2783
+ ```text
2784
+ Sleep windows in an ISO-8601 time range
2785
+
2786
+ Usage: car health sleep --start <START> --end <END>
2787
+
2788
+ Options:
2789
+ --start <START>
2790
+ --end <END>
2791
+ -h, --help Print help
2792
+ ```
2793
+
2794
+ #### car health workouts
2795
+
2796
+ ```text
2797
+ Workouts in an ISO-8601 time range
2798
+
2799
+ Usage: car health workouts --start <START> --end <END>
2800
+
2801
+ Options:
2802
+ --start <START>
2803
+ --end <END>
2804
+ -h, --help Print help
2805
+ ```
2806
+
2807
+ #### car health activity
2808
+
2809
+ ```text
2810
+ Daily activity summaries across a date range (YYYY-MM-DD)
2811
+
2812
+ Usage: car health activity --start <START> --end <END>
2813
+
2814
+ Options:
2815
+ --start <START>
2816
+ --end <END>
2817
+ -h, --help Print help
2818
+ ```
2819
+
2820
+ ### car install
2821
+
2822
+ ```text
2823
+ Install a contributed agent — from a local directory OR a registry reference (Parslee-ai/car#182
2824
+ phases 4 + 5).
2825
+
2826
+ A local directory MUST contain a `manifest.toml` per the bundle spec. A registry reference is
2827
+ `<namespace>/<name>[@<version>]` (e.g. `parslee/ui-improver` or `parslee/ui-improver@1.2.3`); it is
2828
+ resolved against the catalog at `--registry` and then handed to the SAME local-install path. Either
2829
+ way, install-time validation runs against the daemon's host capability advertisement before the
2830
+ agent is adopted.
2831
+
2832
+ Usage: car install [OPTIONS] <PATH>
2833
+
2834
+ Arguments:
2835
+ <PATH>
2836
+ Either a local path to a directory containing `manifest.toml` (or the file itself), OR a
2837
+ registry reference `<namespace>/<name>[@<version>]`. An existing filesystem path wins;
2838
+ otherwise a `namespace/name` shape is resolved via the registry
2839
+
2840
+ Options:
2841
+ --registry <REGISTRY>
2842
+ Registry source for `<namespace>/<name>` references: an `http(s)://…/index.json` URL or a
2843
+ LOCAL registry directory (or `file://` URL). Defaults to the public mirror. The private
2844
+ source needs a token — set `CAR_REGISTRY_TOKEN`
2845
+
2846
+ [default: https://raw.githubusercontent.com/Parslee-ai/car-releases/main/index.json]
2847
+
2848
+ --url <URL>
2849
+ WebSocket URL of the running car-server daemon
2850
+
2851
+ [default: ws://127.0.0.1:9100/]
2852
+
2853
+ --json
2854
+ Output as JSON instead of human-readable
2855
+
2856
+ -h, --help
2857
+ Print help (see a summary with '-h')
2858
+ ```
2859
+
2860
+ ### car ls
2861
+
2862
+ ```text
2863
+ List every installed contributed agent (Parslee-ai/car#182 phase 4). Calls the daemon's
2864
+ `agents.list` and renders the result. Long alias: `agents`
2865
+
2866
+ Usage: car ls [OPTIONS]
2867
+
2868
+ Options:
2869
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2870
+ --json Output as JSON instead of a human table
2871
+ -h, --help Print help
2872
+ ```
2873
+
2874
+ ### car inspect
2875
+
2876
+ ```text
2877
+ Inspect a single installed agent (Parslee-ai/car#182 phase 4). Shows the on-disk manifest plus the
2878
+ supervisor's current status. Resolves unqualified names to the highest installed semver per the
2879
+ contributed-agents proposal
2880
+
2881
+ Usage: car inspect [OPTIONS] <ID>
2882
+
2883
+ Arguments:
2884
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2885
+
2886
+ Options:
2887
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2888
+ --json Output as JSON
2889
+ -h, --help Print help
2890
+ ```
2891
+
2892
+ ### car start
2893
+
2894
+ ```text
2895
+ Start an installed contributed agent
2896
+
2897
+ Usage: car start [OPTIONS] <ID>
2898
+
2899
+ Arguments:
2900
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2901
+
2902
+ Options:
2903
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2904
+ -h, --help Print help
2905
+ ```
2906
+
2907
+ ### car stop
2908
+
2909
+ ```text
2910
+ Stop an installed contributed agent
2911
+
2912
+ Usage: car stop [OPTIONS] <ID>
2913
+
2914
+ Arguments:
2915
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2916
+
2917
+ Options:
2918
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2919
+ -h, --help Print help
2920
+ ```
2921
+
2922
+ ### car restart
2923
+
2924
+ ```text
2925
+ Restart an installed contributed agent
2926
+
2927
+ Usage: car restart [OPTIONS] <ID>
2928
+
2929
+ Arguments:
2930
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2931
+
2932
+ Options:
2933
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2934
+ -h, --help Print help
2935
+ ```
2936
+
2937
+ ### car tail-log
2938
+
2939
+ ```text
2940
+ Tail the most recent stdout/stderr lines captured from a supervised agent (Parslee-ai/car#231 §5.2).
2941
+ Calls the daemon's `agents.tail_log`. Closes the DX gap where the daemon captured logs to
2942
+ `~/.car/logs/` (`%USERPROFILE%\.car\logs\` on Windows) but offered no CLI surface to read them. Long
2943
+ alias: `logs`
2944
+
2945
+ Usage: car tail-log [OPTIONS] <ID>
2946
+
2947
+ Arguments:
2948
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2949
+
2950
+ Options:
2951
+ -n, --lines <LINES> Number of trailing lines to show [default: 100]
2952
+ --url <URL> WebSocket URL of the running car-server daemon [default:
2953
+ ws://127.0.0.1:9100/]
2954
+ --json Output as JSON (`{ "lines": [...] }`)
2955
+ -h, --help Print help
2956
+ ```
2957
+
2958
+ ### car uninstall
2959
+
2960
+ ```text
2961
+ Uninstall a contributed agent (Parslee-ai/car#182 phase 4). Stops the running child if any, removes
2962
+ the manifest from `~/.car/agents/<id>/`, and reaps the legacy `agents.json` entry. Idempotent
2963
+
2964
+ Usage: car uninstall [OPTIONS] <ID>
2965
+
2966
+ Arguments:
2967
+ <ID> Agent id, or `<namespace>/<name>[@<version>]`
2968
+
2969
+ Options:
2970
+ --url <URL> WebSocket URL of the running car-server daemon [default: ws://127.0.0.1:9100/]
2971
+ -h, --help Print help
2972
+ ```
2973
+
2974
+ ### car schedule
2975
+
2976
+ ```text
2977
+ Schedule commands to run on a cadence (launchd / cron / schtasks)
2978
+
2979
+ Usage: car schedule <COMMAND>
2980
+
2981
+ Commands:
2982
+ add Schedule a command to run on a cadence
2983
+ list List scheduled commands and whether each is OS-durable
2984
+ remove Remove a scheduled command: drops any OS schedule and deletes the task
2985
+ reconcile Reconcile OS schedules against the task store, reaping orphans
2986
+ help Print this message or the help of the given subcommand(s)
2987
+
2988
+ Options:
2989
+ -h, --help Print help
2990
+ ```
2991
+
2992
+ #### car schedule add
2993
+
2994
+ ```text
2995
+ Schedule a command to run on a cadence.
2996
+
2997
+ The cadence is expressed once and CAR picks the backend: durable schedules install to the OS
2998
+ (launchd / cron / schtasks) so they fire even when car-server is down.
2999
+
3000
+ Usage: car schedule add [OPTIONS] --name <NAME> -- <COMMAND>...
3001
+
3002
+ Arguments:
3003
+ <COMMAND>...
3004
+ The program to run, then its arguments. Put it after `--`, e.g. `car schedule add --name
3005
+ backup --cron "0 3 * * *" -- /usr/bin/rsync -a src dst`
3006
+
3007
+ Options:
3008
+ --name <NAME>
3009
+ Human-readable name for the task
3010
+
3011
+ --cron <CRON>
3012
+ Cron expression, e.g. "0 9 * * *" for 9am daily. `*/N` forms are normalized so the same
3013
+ input works on macOS and Linux
3014
+
3015
+ --every <EVERY>
3016
+ Interval between runs, in seconds
3017
+
3018
+ --no-durable
3019
+ Run via the in-daemon timer instead of the OS scheduler. Fires only while car-server is
3020
+ up, and misses anything scheduled while it is down. Interval cadences only
3021
+
3022
+ --working-dir <WORKING_DIR>
3023
+ Working directory for the command
3024
+
3025
+ -h, --help
3026
+ Print help (see a summary with '-h')
3027
+ ```
3028
+
3029
+ #### car schedule list
3030
+
3031
+ ```text
3032
+ List scheduled commands and whether each is OS-durable
3033
+
3034
+ Usage: car schedule list [OPTIONS]
3035
+
3036
+ Options:
3037
+ --json Emit raw JSON instead of a table
3038
+ -h, --help Print help
3039
+ ```
3040
+
3041
+ #### car schedule remove
3042
+
3043
+ ```text
3044
+ Remove a scheduled command: drops any OS schedule and deletes the task
3045
+
3046
+ Usage: car schedule remove <ID>
3047
+
3048
+ Arguments:
3049
+ <ID> Task id, or the full OS label
3050
+
3051
+ Options:
3052
+ -h, --help Print help
3053
+ ```
3054
+
3055
+ #### car schedule reconcile
3056
+
3057
+ ```text
3058
+ Reconcile OS schedules against the task store, reaping orphans.
3059
+
3060
+ Run this if schedules were left behind by an interrupted uninstall, or after editing `~/.car/tasks/`
3061
+ by hand.
3062
+
3063
+ Usage: car schedule reconcile
3064
+
3065
+ Options:
3066
+ -h, --help
3067
+ Print help (see a summary with '-h')
3068
+ ```
3069
+
3070
+ ### car registry
3071
+
3072
+ ```text
3073
+ Registry tooling for the contributed-agents registry (Parslee-ai/car#182 phase 5): `digest` a
3074
+ manifest, or `validate` a registry directory (the CI gate run by Parslee-ai/car-agent-registry)
3075
+
3076
+ Usage: car registry <COMMAND>
3077
+
3078
+ Commands:
3079
+ digest Print the canonical SHA-256 hex digest of a manifest.toml
3080
+ validate Validate a registry directory (index.json + manifests + schema). This is the registry CI
3081
+ gate
3082
+ schema Print the canonical registry index JSON Schema (the single source of truth, embedded in
3083
+ this binary) to stdout. Regenerate the registry repo's copy with: `car registry schema >
3084
+ schema/index.schema.json`
3085
+ help Print this message or the help of the given subcommand(s)
3086
+
3087
+ Options:
3088
+ -h, --help Print help
3089
+ ```
3090
+
3091
+ #### car registry digest
3092
+
3093
+ ```text
3094
+ Print the canonical SHA-256 hex digest of a manifest.toml
3095
+
3096
+ Usage: car registry digest <MANIFEST>
3097
+
3098
+ Arguments:
3099
+ <MANIFEST> Path to the agent's manifest.toml
3100
+
3101
+ Options:
3102
+ -h, --help Print help
3103
+ ```
3104
+
3105
+ #### car registry validate
3106
+
3107
+ ```text
3108
+ Validate a registry directory (index.json + manifests + schema). This is the registry CI gate
3109
+
3110
+ Usage: car registry validate <DIR>
3111
+
3112
+ Arguments:
3113
+ <DIR> Path to the registry directory containing `index.json` and `schema/index.schema.json`
3114
+
3115
+ Options:
3116
+ -h, --help Print help
3117
+ ```
3118
+
3119
+ #### car registry schema
3120
+
3121
+ ```text
3122
+ Print the canonical registry index JSON Schema (the single source of truth, embedded in this binary)
3123
+ to stdout. Regenerate the registry repo's copy with: `car registry schema >
3124
+ schema/index.schema.json`
3125
+
3126
+ Usage: car registry schema
3127
+
3128
+ Options:
3129
+ -h, --help Print help
3130
+ ```
3131
+
3132
+ ### car publish
3133
+
3134
+ ```text
3135
+ Publish a contributed agent to the registry (Parslee-ai/car#182 phase 5). Reads a local agent's
3136
+ `manifest.toml`, signs it for `--audience public` (ed25519 key at `$CAR_PUBLISH_KEY_PATH`), stages
3137
+ it at the versioned `agents/<namespace>/<name>/<version>/` path, updates `index.json` + the README
3138
+ catalog, re-runs the EXACT `car registry validate` CI gate locally, and opens a PR against the
3139
+ registry repo. Aborts (no PR) on a missing signing key or a validation failure
3140
+
3141
+ Usage: car publish [OPTIONS] <PATH>
3142
+
3143
+ Arguments:
3144
+ <PATH> Path to a local agent directory containing `manifest.toml`, OR the `manifest.toml` file
3145
+ itself
3146
+
3147
+ Options:
3148
+ --audience <AUDIENCE> Catalog audience for this agent. `internal` rows are
3149
+ unsigned; `public` rows are signed with the publisher's ed25519 key (loaded from
3150
+ `$CAR_PUBLISH_KEY_PATH`) and carry the publisher fields in the index [default: internal]
3151
+ [possible values: internal, public]
3152
+ --registry-repo <REGISTRY_REPO> The registry repository (`owner/repo`) the PR is opened
3153
+ against [default: Parslee-ai/car-agent-registry]
3154
+ --category <CATEGORY> Catalog category written into the index row (a required,
3155
+ min-length-1 schema field). Free-form publisher copy; scanned by the internal-infra denylist
3156
+ for public agents [default: general]
3157
+ --registry-dir <REGISTRY_DIR> Stage into this EXISTING local registry clone instead of `gh
3158
+ repo clone`-ing a fresh one. Required for offline testing — when set, the staged branch is
3159
+ created locally and (if the clone has no `origin` remote) the `gh pr create` step is skipped,
3160
+ printing the staged branch name instead
3161
+ -h, --help Print help
3162
+ ```
3163
+
3164
+ ### car help
3165
+
3166
+ ```text
3167
+ Print this message or the help of the given subcommand(s)
3168
+
3169
+ Usage: car help [COMMAND]...
3170
+
3171
+ Arguments:
3172
+ [COMMAND]... Print help for the subcommand(s)
3173
+ ```