cerveau docs site github
Start here

Install

Cerveau builds from source. There is no installer and no package: you build the panel once, build the binary, serve a model, and run. Fifteen minutes on a machine that already has Go and Node.

Requirements

ComponentVersionWhy
Go1.25+The core. Also embeds the built panel via go:embed.
Node20+Builds the Svelte panel once. Not needed at runtime.
llama.cppany recent buildA llama-server binary and a GGUF model. Or vLLM — see Brain Cores.
Python3.10+Optional. Only for the embedder sidecar that gives you vector recall.

Platform. Linux x86-64 and ARM64 today. macOS is close — the core and syscalls work, but the system monitor and the folder picker need platform shims. Windows is planned.

Typesense is not a prerequisite Cerveau downloads and manages its own instance on first run, on its own free port, without touching an existing install. See Memory.

Build

The panel compiles to static assets that are embedded into the binary, so it has to be built first. You only repeat this step when the panel changes.

# 1. build the panel (embedded into the binary via go:embed)
cd panel && npm install && npm run build && cd ..

# 2. build the core
go build -o ~/.local/bin/crv ./cmd/crv

# 3. optional: the one-shot CLI
go build -o ~/.local/bin/crvcli ./cmd/crvcli
Build the panel first go build will fail if panel/build does not exist — go:embed needs the directory at compile time, not at run time.

Serve a model

Cerveau never starts an engine. You serve the model, it is handed a URL. Anything that speaks the OpenAI chat-completions API works.

llama.cpp

llama-server -m Qwen3.6-35B-A3B-UD-Q4_K_M.gguf \
  --host 127.0.0.1 --port 8080 --jinja

That model — Qwen3.6-35B-A3B at Q4_K_M, about 22 GB — is the reference build every benchmark in the repository was measured against. --jinja is required: without it the server will not apply the model's chat template and tool calls come back as prose.

vLLM

vLLM is the second Core, for dense models that fit the card. Its setup is involved enough to have its own page: Brain Cores.

Reasoning models Cerveau sends enable_thinking: false on every request. Without it a thinking model spends its entire token budget inside <think> and returns nothing usable.

First run

crv

Open http://localhost:7700. On first run the core writes ~/.config/cerveau/config.json, creates ~/.crv/, and fetches Typesense if it is not already managed.

Optional: the embedder

Hybrid vector recall needs an embedding endpoint. The bundled sidecar serves an OpenAI-compatible /v1/embeddings on :8081:

python3 sidecars/nemotron_embed.py

It loads Nemotron-3-Embed-1B and runs on the CPU by default. Without it, memory search falls back to keyword-only, which still works — it is just less good at finding a thing you described differently the second time.

Verify

# every component and its state
curl -s localhost:7700/api/health | python3 -m json.tool

A healthy response lists each component with ok: true. If the model shows as down, the URL in your config does not match where you actually served it.

Do not expose this port The API is unauthenticated and can run shell commands in Autopilot. It binds to 127.0.0.1 for that reason. If you need it from another device, use Pocket over your own tailnet — never a port forward.