Storage and state¶
carrier stores metadata in SQLite and command output in log files.
Note
All runtime data is local. carrier does not upload runs, logs, environment variables, or Git metadata.
Default layout¶
Change base directory:
SQLite database¶
Metadata lives in:
Main table:
Migration table:
Search index:
Migrations are embedded in the binary and applied on startup.
Check migration state:
Run metadata¶
Each run stores:
- ID
- status
- mode
- command display string
- original argv JSON
- cwd
- start and finish timestamps
- duration
- exit code
- hostname
- shell
- Git metadata
- output log paths
- notification flags
- label
- captured environment JSON when enabled
Output logs¶
carrier run writes:
carrier shell writes:
Redaction¶
Terminal output remains original. Persisted logs are redacted before writing.
Disable for one run:
Warning
--no-redact affects persisted logs for that run. Use it only when you know the command cannot print secrets.
Output cap¶
Persisted logs are capped by:
Truncated logs include:
Set max_output_mb = 0 to disable the cap. carrier config check warns about this because unbounded logs can grow quickly.
Captured environment¶
When storage.capture_env = true, carrier run stores the process environment in SQLite.
Inspect it:
Displayed values are redacted unless --no-redact is used.
Search index¶
carrier search indexes:
- command display string
- working directory
- stdout and stderr logs from
carrier run - terminal logs from
carrier shell
The index stores up to 256 KiB of combined output per run. The original log files remain on disk under runs/.
Stale running runs¶
Runs can get stuck in running if the parent carrier process is killed or the machine shuts down. On startup, carrier marks old running runs as killed when they are older than:
carrier doctor reports how many stale runs remain.
Cleanup¶
Preview:
Delete:
Keep only the latest N runs: