Configuration
The configuration file, the settings you are most likely to change, and the main environment variables.
The hub reads ~/.drover/config.toml. To use a different file, pass --config to a drover-server command. The collector reads ~/.drover/collect.toml.
Do not put secrets in these files. Put them in environment variables or in files with mode 0600. Restart the hub after you change a setting.
Network and ports
[server]
metrics_http_port = 7080 # fleet API and web cockpit
mcp_http_port = 7077 # MCP
metrics_host = "127.0.0.1"
advertised_url = "" # the address in the pairing QR code
| Key | Default | Notes |
|---|---|---|
metrics_host |
127.0.0.1 |
The bind address of the API. Use a private address. On a machine with a LAN and a VPN address, use 0.0.0.0. |
advertised_url |
empty | The host:port that the phone uses. Private addresses only. |
metrics_http_port |
7080 |
|
mcp_http_port |
7077 |
MCP listens on loopback only. |
The host daemon listens on 127.0.0.1:7081. To change this, pass --listen.
Authentication
[auth]
enabled = true
legacy_token_enabled = true
- Keep
enabledset totrue. If you set it tofalse, the MCP server does not start. - Set
legacy_token_enabled = falseafter each device and host has its own credential.
The hub reads the shared token from DROVER_API_TOKEN, then from [auth] api_token, then from ~/.drover/api_token.
Control store
[control_store]
backend = "postgres"
dsn_env = "DROVER_CONTROL_DSN"
The file names the environment variable that holds the connection string. The installer keeps that variable in ~/.drover/server.env with mode 0600.
backend = "duckdb" is for existing single-machine installs. An upgrade does not migrate DuckDB to PostgreSQL. See the control store guide.
Models for summaries and embeddings
These settings are optional. Without them, the workers are idle.
[summarizer]
backend_policy = "harness" # "harness" | "hybrid" | "cloud"
| Policy | Summaries come from |
|---|---|
harness |
The Claude Code CLI on the host, with your Claude Code sign-in. |
cloud |
The Anthropic API, with your key. |
hybrid |
The two together, as available. |
With each policy, Anthropic receives the transcript text.
[embeddings]
api_base_url = "" # an OpenAI-compatible endpoint
api_model = "text-embedding-3-small"
local_model = "nomic-embed-text"
Embeddings enable semantic recall. Use an OpenAI-compatible endpoint or an Ollama backend. Set the key in DROVER_EMBEDDINGS_API_KEY. With Ollama, embeddings stay on your hardware.
Analytics lake
[analytics]
backend = "legacy" # or "ducklake"
DuckLake requires the PostgreSQL control store, a catalog database, a data root and a verified serving proof. See The analytics lake.
Context containers
[context_containers]
enabled = false
When enabled, a hub worker builds one container for each session and each project brief. A container holds a summary, the next action and open questions. The worker does not call a model. It requires PostgreSQL.
Session lifecycle
[lifecycle]
mode = "report" # "report" | "off"
idle_after = "12h"
In report mode, the hub reports idle sessions and stale worktrees. It does not stop a process or remove a worktree.
Push notifications
[apns]
enabled = false
Push is off until you configure your own Apple Push Notification service (APNs) key. See the iOS guide.
Updates
[update]
enabled = true
check_interval_hours = 6
pinned_version = ""
By default, the hub asks GitHub for a newer release every six hours.
- To stay on one release, set
pinned_version. - To stop the check, set
enabled = false. - To update manually, run
drover-server update. To go back, rundrover-server rollback.
Favorite directories
The new-session sheet suggests working directories. To add your own:
[harness]
favorite_cwds = [
"/srv/shared",
{path = "/opt/checkouts/example", host_id = "build-mac"},
]
A string applies to each host. An entry with host_id applies to that host only.
Environment variables
| Variable | Purpose |
|---|---|
DROVER_CONTROL_DSN |
The PostgreSQL connection string for the control store. |
DROVER_API_TOKEN |
Replaces the shared API token. |
DROVER_MCP_URL |
The MCP endpoint that clients use. |
DROVER_MCP_TOKEN |
The bearer credential that MCP clients send. |
DROVER_EMBEDDINGS_API_KEY |
The key for the embeddings endpoint. |
DROVER_SUMMARIZER_BACKEND_POLICY |
Replaces [summarizer] backend_policy. |
DROVER_REPO_ROOTS_JSON |
Maps directory prefixes to owner/name repositories. |
DROVER_CLAUDE_CWD_MAP |
Resolves ambiguous Claude Code project directory names. |
DROVER_DEEPSEEK_HARNESS_URL |
The address of the DeepSeek Harness Web RPC service. |
drover-server init writes a starting file with comments. The repository docs describe the other sections.
This page is a summary. The reference is docs/getting-started.md.