assay on your PATH.
It does not create a store. It does not start a timer. It does not touch your session logs. assay init is a separate, deliberate step.
assay --version prints something else, treat that binary as the authority for flags.
assay: command not found
assay: command not found
The installer puts the binary in
/usr/local/bin when it can write there, otherwise ~/.local/bin. Add that directory to PATH and reopen the shell.macOS Gatekeeper
macOS Gatekeeper
The collector is Developer ID signed and notarized. A browser or AirDrop download is not blocked. First run may fetch the notarization ticket online.
Linux or a host application
Linux or a host application
The compiled collector is macOS today. A host that embeds Assay as a library needs Node ≥ 20 and the package. See Agent loop.
Initialize
init does four things:
- Writes a config file, so later commands need no repeated flags.
- Creates an empty store (schema applied).
assay showworks immediately and returns an empty rollup. - Creates the content key (
~/.config/assay/transcript.key, mode0600). - Prints next steps.
--force rewrites only the config file.
What you have after init
| Piece | Default |
|---|---|
| Config | ./assay.config.json or ~/.config/assay/config.json |
| Store | a SQLite file named in the config |
| Content key | ~/.config/assay/transcript.key |
| Mode | corpus |
| Capture roots | Claude Code, Grok, Codex, OpenCode session folders |
Config resolution
Which file:--config-file → $ASSAY_CONFIG → ./assay.config.json → ~/.config/assay/config.json → none.
Each value: flag > env > config file > built-in default.
With no config file, behavior matches flag-only use. The config layer is additive.
When you write a config for a newer Assay, upgrade the installed binary too. Check with assay --version. An unknown top-level section is a warning and is ignored. The section still does nothing until the build that understands it is installed.
Pass --strict-config (or $ASSAY_STRICT_CONFIG=1) in CI, where a config naming a section the build cannot honour is the defect.
Full file: Config.