Commands and the shell
Every subcommand, the slash commands inside the interactive shell, and the diagnostics that answer why a turn did what it did.
Subcommands
Typing tacet with no subcommand opens the interactive shell. It used to print clap's usage text instead, which is the wrong first screen for an assistant.
| Command | What it does |
|---|---|
| tacet chat | One turn or a scripted run. Takes --message, --model, --engine, --json, --dir, --continue, --session, --temperature, --seed, --show-prompt. |
| tacet sessions | Lists stored conversations. --purge deletes them. |
| tacet tools | The tool catalog. --schema prints the exact JSON schema the model is shown. |
| tacet models | list and download. Aliased as tacet model. |
| tacet addon | list, install, remove, close, open, try. |
| tacet mcp | list, try, login, logout for servers in mcp.json. |
| tacet config | list, get, set, unset, path. |
| tacet eval | The behavioural suite. See the eval page for the flags. |
| tacet bench | Run a benchmark file of your own, or gap to measure the grammar. |
| tacet grammar | --tool <name> prints the generated grammar; --try-input tests a string against it. |
| tacet why | The router's ranking for one message, with no model loaded. |
| tacet log | The receipt chain, verified on every run. --json, --limit. |
| tacet doctor | Build, backend, sandbox, config directory, model roots, all in one screen. |
| tacet feedback | Builds a report from the tail of your last session so a bug can be filed with context. |
| tacet update | Checks GitHub for a newer release. --install replaces the binary. |
| tacet font | Where your terminal keeps its font setting. Tacet is drawn for JetBrains Mono. |
| tacet package | list, the model packages the binary knows about. |
Slash commands in the shell
Inside the interactive shell these control the session without ending it.
| Command | What it does |
|---|---|
| /help | The commands, the shortcuts, and the active catalog |
| /tools | What the model can call in this session |
| /addon, /addons, /plugins | Install, open or close an addon without leaving the chat |
| /model | Switch the model for the rest of the session |
| /memory | The notes on disk, and what would be injected |
| /history | Earlier prompts in this session |
| /sessions | Stored conversations you can return to |
| /preview | The prompt as it would be sent, before it is sent |
| /grammar | The grammar for a tool, from inside the shell |
| /eval | Run the suite without leaving the session |
| /config | The settings menu, reading the same table config set validates against |
| /themes | mono, night, sage, graphite, violet |
| /clear | Clear the screen |
| /quit, /exit | Leave |
Why it chose that tool
When a case goes wrong the first question is whether the router or the model is to blame. tacet why answers it without loading weights, so it costs nothing to ask.
tacet why "which files changed since yesterday?"The router shows the model nine tools out of however many exist. If the tool you expected is not among those nine, the model never had the chance, and no amount of prompt work will fix it. This is the same check tacet bench check runs over a whole benchmark file at once.
The receipt chain
Every tool execution is recorded by code. The model is never asked to log anything and cannot reach the file: the sandbox sees no files, the document tools live in the working directory, and this lives in the config directory. Each JSONL line carries the SHA-256 of the previous hash plus the canonical payload, so editing or deleting any line breaks every hash after it.
tacet log --limit 20The chain is verified on every run and the result is said out loud. A write failure is deliberately non-fatal: a read-only config directory must not take the assistant down, because the receipt is a witness rather than a lock.
Terminal behaviour
Input is locked while the model is generating, so keys pressed mid-answer land in a buffer instead of interleaving with the streamed text. Ctrl-C cancels the turn at the cancel gate, stopping any tool call in flight. Ctrl-D with a draft in the field clears the draft rather than ending the session.