The memscribe binary — the daemon and the toolbox for Memscribe's
deterministic, zero-LLM transcript capture. It wraps the workspace crates
(memscribe-core, -adapters, -io, -sink) behind six subcommands.
cargo run -p memscribe-cli -- <command> [args]
# or, once installed:
memscribe <command> [args]The pipeline is deterministic and never calls a model. By default the redaction pass is on, so secrets are stripped before anything is written. See the workspace ARCHITECTURE.md for the pipeline and memscribe.example.toml for the config surface.
Tail discovered transcripts (and serve the hook endpoint), preparing nodes to a sink as they arrive.
memscribe watch [--tools claude,codex,gemini] [--sink ndjson|sqlite|memdb] \
[--out FILE|-] [--root DIR ...] [--once] [--config memscribe.toml]| Flag | Default | Meaning |
|---|---|---|
--tools |
every adapter | Comma-separated tool slugs to watch (SourceKind::parse values). |
--sink |
ndjson |
Sink target: ndjson, sqlite, or memdb (memdb needs the memdb feature). |
--out |
- (stdout) |
Where prepared nodes go (a file for ndjson/sqlite); - is stdout. |
--root |
$HOME |
Directory root(s) to scan for transcripts; repeatable. |
--once |
off | Drain what already exists and exit, instead of tailing live. |
--config |
— | Path to a memscribe.toml (see memscribe.example.toml). |
Reads a hook payload from stdin, records it, and exits 0 immediately. It never
blocks the agent and never invokes a model. Agents wire this as their hook
command.
memscribe hook < payload.jsonThe workhorse for tests and debugging: run one transcript file through the adapter and the full pipeline, emitting prepared nodes as NDJSON on stdout.
memscribe parse <file> [--as TOOL] [--no-redact]--as TOOLforces a specific adapter (claude_code,codex,gemini,otel,cursor,windsurf,zed,vscode,copilot). Omit it to infer the tool from the path; if inference fails the command tells you to pass--as.--no-redactemits verbatim content (used by golden tests that assert on exact text). Redaction is on otherwise.
memscribe parse ~/.claude/projects/foo/session.jsonl --as claude_codeRe-prepares a transcript file with the current pipeline (redaction on). Useful after an adapter or pipeline change to see the new node stream for an old session.
memscribe replay <file> [--as TOOL]Parses every fixture under fixtures/ and prints a per-tool CASES / OK / NODES
table, exiting non-zero on any failure. This is the fast, shellable summary the
daemon ships with; full cross-tool conformance and the §8.3 invariants live in
the testkit (cargo test -p memscribe-testkit).
memscribe verify
memscribe verify --capture # (planned) snapshot a live session into a new fixtureReads a file and prints it with secrets replaced by [REDACTED:<label>],
warning on stderr if anything was stripped. --no-content elides all text and
keeps only structure.
memscribe redact session.jsonl
memscribe redact session.jsonl --no-contentLogs go to stderr (stdout is reserved for node output), filtered by the
standard RUST_LOG env var. The default level is warn.
RUST_LOG=debug memscribe parse session.jsonl --as codexThe CLI builds every adapter by default. The MemDB sink is feature-gated in
memscribe-sink and off by default; --sink memdb only does anything once
that feature is compiled in.
cargo build -p memscribe-cli # ndjson sink (default), all adaptersThe CLI does not yet expose a passthrough feature for memscribe-sink/memdb, so
enabling the MemDB sink is a build-config follow-up: add a
memdb = ["memscribe-sink/memdb"] feature to crates/memscribe-cli/Cargo.toml
and build with --features memdb. Until then, --sink ndjson (the default) and
--sink sqlite are the available targets from the binary.