Repository navigation
Configuration
Two places: environment variables for the server, and config.yaml for each project.
Set them in your shell, or copy .env.example
to .env, which VibeBoard loads on start. A variable exported in your shell wins over .env.
| Variable | Default | What it does |
|---|---|---|
VIBEBOARD_PORT |
4610 |
Port for the web UI and the API |
VIBEBOARD_HOST |
127.0.0.1 |
Interface to bind. 0.0.0.0 opens it to your network: see Security
|
VIBEBOARD_ROOT |
the parent of the working directory | Folder scanned for existing projects, and where new ones go |
VIBEBOARD_LOG_LEVEL |
info |
fatal to trace, or silent. info logs every request and every route error |
VIBEBOARD_LOG_DIR |
logs/ in the install |
One JSON-lines file per day. Empty writes to stdout instead |
VIBEBOARD_LOG_KEEP |
14 |
Daily log files to keep; older ones are deleted on start |
VIBEBOARD_CLAUDE_BIN |
claude |
The Claude Code executable |
VIBEBOARD_OPENCODE_BIN |
opencode |
The OpenCode executable |
VIBEBOARD_OPENCODE_PORT |
0 (the OS picks) |
Port for the opencode serve VibeBoard starts |
VIBEBOARD_OPENCODE_URL |
unset | Use an opencode serve you run yourself instead |
VIBEBOARD_COPILOT_TIMEOUT_MS |
180000 |
How long one copilot turn may take |
VIBEBOARD_RUN_TIMEOUT_MS |
1800000 |
Fallback run timeout, for a project that sets none |
VIBEBOARD_COPILOT_HOME |
~/.vibeboard/copilot |
The clean config home the copilot runs in |
VIBEBOARD_COPILOT_ISOLATE |
on |
0 lets the copilot load your personal CLI config, plugins and hooks |
Rarely needed, but there: VIBEBOARD_AGENT_IMAGE (the agent image, vibeboard-agent:latest),
VIBEBOARD_TOKEN_FILE and VIBEBOARD_STATE_FILE (sign-in and app state, under ~/.vibeboard/),
and VIBEBOARD_API_SOCKET_DIR (where agent boxes reach the API, ~/.vibeboard/run). Keep the token
file outside every project: an agent's box mounts the project it works on.
Each project keeps its settings in .vibeboard/config.yaml. Settings and the auto-pilot bar write it
for you, and it is plain YAML if you would rather edit it by hand.

| Key | Default | What it does |
|---|---|---|
name |
set at creation | The project's display name |
boards.<board>.columns |
see Boards and cards | Column names, in order |
maxConcurrentRuns |
3 |
Runs in flight at once; more are queued, not refused |
miniatureChars |
140 |
How much of a card's body its miniature shows |
idPadding |
3 |
Digits in a card id: E-001
|
keepChats |
20 |
Copilot chats kept; older ones are pruned |
contextBudget |
200000 |
Tokens the copilot's context bar treats as full |
enforceOneParent |
false |
Limit a card to one parent link. Agents are held to it either way |
box.kind |
web |
The agent image: web has a browser for smoke tests; game and research do not |
box.packages |
none | System packages installed into the project's agent box |
copilot.backend |
claude-code |
The default backend: claude-code or opencode
|
copilot.backends.<backend> |
The saved model and effort for each backend |
|
autopilot.mode |
mini for new projects |
mini, express or standard
|
autopilot.idleMinutes |
10 |
Mini: stop a run that has produced nothing for this long |
autopilot.runTimeoutMs |
1800000 |
Standard and Express: the longest one run may take |
autopilot.attemptCap |
3 |
Attempts a card gets on a skill before it is parked |
autopilot.budgetUsd |
20 |
Stop once the project's spend reaches this; 0 turns it off |
autopilot.maxIterations |
250 |
Stop after this many steps |
autopilot.focus |
unset | Express: the one feature auto-pilot is confined to |
See Auto-pilot for what the auto-pilot settings do in each mode.