CLI
Two binaries. crv is the core and the panel; crvcli is a thin HTTP client for scripting, headless boxes and pairing a phone over SSH.
crv
The core. Starts the HTTP server, serves the embedded panel, manages Typesense, and runs the agent loop.
crv [-config PATH]
config.json. Defaults to ~/.config/cerveau/config.json.Everything else is configured through that file or the CRV_* environment — see Configuration. On start it prints the pairing id to the console; that console is the root of trust for Pocket.
crvcli
One-shot and scriptable. It talks to a running core over HTTP, so the core has to be up.
crvcli [flags] <command> [args]
Commands
| Command | What it does |
|---|---|
ask <text|-> | One-shot chat. Creates a session unless -session is given. - reads the prompt from stdin. |
new <name> | Create a session and print its id. |
sessions | List sessions. |
health | Component readiness: core, model, embedder, Typesense. |
pair [--qr] | Mint a pairing code for a phone or tablet. Works over SSH on a headless box — no browser needed. |
rfx <sub> | Reflex management: list, show, install, remove, test. Local — no running server required. |
help | The usage text this page is drawn from. |
Flags
| Flag | Default | Notes |
|---|---|---|
-addr | http://localhost:7700 | Core base URL. Also reads $CRV_ADDR. |
-session | new each time | Chat into an existing session id. |
-mode | the session default | discussion, brainstorming or autopilot. |
-workspace | current directory | The project folder to work in. |
-json | off | Print raw JSON responses instead of formatted output. |
The workspace rule
The workspace belongs to the project, not the client: every session in it shares that path. The CLI is independent of the panel — it uses the folder you are standing in unless you say otherwise, and the panel's folder picker never redirects a session started from the command line.
Examples
# ask about a file, in the current directory
crvcli ask "explain internal/loop/loop.go"
# research mode, which unlocks web_fetch
crvcli ask -mode brainstorming "research vector db options"
# point at another project without cd-ing
crvcli -workspace ~/code/app ask "add tests for the parser"
# the same thing, from inside it
cd ~/code/app && crvcli ask "add tests"
# continue an existing session
crvcli -session sess_abc ask "continue"
# pipe a prompt in
echo "prompt" | crvcli ask -
Headless and remote
crvcli pair --qr renders the pairing QR as terminal characters, so a machine with no display can still enrol a phone over SSH. The code is one-shot and rate-limited to five attempts per minute; see Pocket for the whole handshake.
-json plus ask - makes the CLI a reasonable build-step: pipe a prompt in, parse the response out. The session id it prints can be reused with -session so a multi-step script shares one context and one memory.