Skip to main content
brv ships with operational defaults that suit most users. The brv settings command group lets you inspect those defaults and override them when you need more (or less) headroom. Changes apply after brv restart. The daemon reads settings.json once at startup so every agent it spawns runs against the same configuration for the lifetime of the process.

Subcommands

Every subcommand accepts --format json for scripting. Validation errors (unknown key, value out of range, wrong unit) exit with code 1 and a message naming the offending key.

Available keys

Most settings require brv restart to take effect — the Restart column flags the exceptions. Keys in the Updates category take effect on the next brv invocation, no restart needed.

Concurrency

LLM

Task history

Updates

Value formats

brv settings set parses the value differently depending on the key’s unit:
  • Count keys (e.g. agentPool.maxSize, taskHistory.maxEntries) — plain integer.
  • Duration keys (llm.iterationBudgetMs, llm.requestTimeoutMs) — duration string or raw milliseconds. Accepted suffixes are ms, s, m, h; multi-part durations are written with the largest unit first. Whitespace between parts is optional. Fractional values (1.5h) are rejected.

Where settings live

Settings persist in settings.json under the global ByteRover data directory: Set the BRV_DATA_DIR environment variable to override the directory. The file is rewritten atomically (temp + rename) on every brv settings set / reset, so a crash mid-write cannot leave a half-written file. If the daemon encounters a malformed settings.json at startup, it logs one warning per problem and falls back to the registered defaults — the bad file is left in place for you to inspect or repair.

When to change a setting

Most users never need to touch these. The cases worth changing them for:
  • Raise llm.iterationBudgetMs when a single brv curate or brv query on a slow local LLM (Ollama on CPU, heavy quantization, cold model load) routinely hits the default 10-minute cap on legitimate work. Lower it on cloud providers when you want a stuck task to surface as an error faster.
  • Tune llm.requestTimeoutMs in lockstep with the iteration budget when you change profile. Suggested presets: The constraint llm.requestTimeoutMs <= llm.iterationBudgetMs is enforced both on set and at daemon startup; a file that violates it falls back to defaults for both keys.
  • Raise agentPool.maxSize if you actively switch between more than 10 projects in a single daemon session and want them all to keep warm.
  • Lower taskHistory.maxEntries if disk usage from the per-project task journals starts mattering, or raise it if you want deeper history for audit.
  • Set update.checkForUpdates to false if you manage brv versions on your own schedule (pinned in CI, controlled rollouts, air-gapped environments) and don’t want the y/n update prompt at startup. Unlike the other keys, this one takes effect on the next brv invocation — no restart needed. See also Installation & Updates FAQ.

--timeout migration

Earlier versions of brv curate, brv query, and brv dream accepted a --timeout flag. The flag is still accepted for back-compat but now prints --timeout is deprecated and has no effect. to stderr and is ignored. Use llm.iterationBudgetMs instead:

Example session

Next steps

CLI Reference

Full command-by-command reference for brv.

Daemon-First Architecture

Why agentPool.* settings exist and how the pool reuses processes.

Tasks tab

What taskHistory.maxEntries retains and how it surfaces in the WebUI.

Local Web UI Configuration

Browse and edit the same settings from brv webui.