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.

CommandWhat it does
tacet chatOne turn or a scripted run. Takes --message, --model, --engine, --json, --dir, --continue, --session, --temperature, --seed, --show-prompt.
tacet sessionsLists stored conversations. --purge deletes them.
tacet toolsThe tool catalog. --schema prints the exact JSON schema the model is shown.
tacet modelslist and download. Aliased as tacet model.
tacet addonlist, install, remove, close, open, try.
tacet mcplist, try, login, logout for servers in mcp.json.
tacet configlist, get, set, unset, path.
tacet evalThe behavioural suite. See the eval page for the flags.
tacet benchRun 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 whyThe router's ranking for one message, with no model loaded.
tacet logThe receipt chain, verified on every run. --json, --limit.
tacet doctorBuild, backend, sandbox, config directory, model roots, all in one screen.
tacet feedbackBuilds a report from the tail of your last session so a bug can be filed with context.
tacet updateChecks GitHub for a newer release. --install replaces the binary.
tacet fontWhere your terminal keeps its font setting. Tacet is drawn for JetBrains Mono.
tacet packagelist, the model packages the binary knows about.

Slash commands in the shell

Inside the interactive shell these control the session without ending it.

CommandWhat it does
/helpThe commands, the shortcuts, and the active catalog
/toolsWhat the model can call in this session
/addon, /addons, /pluginsInstall, open or close an addon without leaving the chat
/modelSwitch the model for the rest of the session
/memoryThe notes on disk, and what would be injected
/historyEarlier prompts in this session
/sessionsStored conversations you can return to
/previewThe prompt as it would be sent, before it is sent
/grammarThe grammar for a tool, from inside the shell
/evalRun the suite without leaving the session
/configThe settings menu, reading the same table config set validates against
/themesmono, night, sage, graphite, violet
/clearClear the screen
/quit, /exitLeave

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 20

The 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.