Docs

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 enabled set to true. If you set it to false, the MCP server does not start.
  • Set legacy_token_enabled = false after 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, run drover-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.