Skip to content

carrier

carrier is a local command logger for developers. It records what you ran, where you ran it, when it started and finished, how long it took, whether it failed, captured output, and useful Git context.

It is designed for normal terminal work: local projects, long-running build/test commands, deploys, migrations, Docker tasks, zsh/bash, tmux, and terminal emulators such as Ghostty.

New here?

Start with Getting started. It walks through install, first run, inspection, and cleanup.

Try it in one command

Already installed?

carrier run bash -c 'echo "build started"; echo "warning: example" >&2; sleep 1; exit 1'

Then inspect it:

carrier last
carrier show 1

Shell mode is alpha

carrier run is the stable path for precise stdout/stderr capture. carrier shell is useful for experiments and long interactive sessions, but depends on PTY output and shell hooks.

Common tasks

Why use carrier?

  • command history includes stdout, stderr, duration, exit code, cwd, Git branch, and Git dirty state
  • child process exit codes are preserved, so carrier run works in scripts
  • search covers commands, cwd, and stored output snippets
  • failed runs can be exported as Markdown or JSON for issues, pull requests, and chat threads
  • original argv is stored separately from the display string, so rerun does not parse shell-looking text
  • logs stay local on disk and are redacted before persistence by default
  • optional notifications help with slow builds without making every command noisy

Core concepts

A run is one recorded command

Every recorded command gets an integer ID. Use that ID with show, tail, export, label, and rerun.

carrier run go test ./...
carrier last
carrier show 1

Metadata lives in SQLite

Run metadata is stored in:

~/.local/share/carrier/carrier.db

Output lives in log files

Command output is stored under:

~/.local/share/carrier/runs/

carrier run stores stdout and stderr separately. carrier shell stores terminal output.

Logs are protected

Persisted logs are:

  • redacted before writing to disk
  • capped by storage.max_output_mb
  • left on disk until you clean them

Terminal output still streams normally. Redaction and truncation only affect persisted logs.

Search is local

carrier search uses SQLite FTS for command/cwd/output matches, then falls back to substring matching for command and cwd text. No hosted service is involved.

Choose your path

First-time users

Daily usage

Advanced usage

Exact reference