Skip to content

Configuration reference

Settings come from defaults, then config.toml in the data directory, then RELAYBAY_* environment variables, then command-line flags (a later source wins). An invalid value stops relaybay serve with a message that names the key.

Settings

Key (config.toml) Default Environment Flag Meaning
— per-user data dir (platformdirs) RELAYBAY_HOME --home Data directory: relaybay.sqlite, token, config.toml.
host 127.0.0.1 RELAYBAY_HOST --host Bind address. Anything but loopback prints a warning.
port 8765 RELAYBAY_PORT --port Port.
allowed_hosts [] RELAYBAY_ALLOWED_HOSTS — Extra names accepted in the Host header (LAN names); the environment variable is comma-separated.
[stages.labels] the stage keys — — Display names per stage (plan, dev, review, test, live, done).
[reports.labels] built-in — — Display names of report states and sizes.
[reports.hints] built-in — — Tooltips of report badges.
desktop_link_template claude://claude.ai/epitaxy/{id} RELAYBAY_DESKTOP_LINK_TEMPLATE — Link for a desktop session id; must contain {id}.
done_window_days 7 RELAYBAY_DONE_WINDOW_DAYS — Days a done task stays in the done column (whole number >= 1).
require_tracker_log false RELAYBAY_REQUIRE_TRACKER_LOG — Done tasks without the tracker mark show "not logged" and are never archived.
owner_names ["owner", "me", "you"] RELAYBAY_OWNER_NAMES — Names that mean you in a task's waiting_on (case-insensitive): those tasks are listed in the Inbox. The environment variable is comma-separated.
[rules] built-in rules — — Global working rules merged over the defaults (SPEC §6).
rules_mode warn RELAYBAY_RULES_MODE — warn or strict: what a stage move that misses a rule does.
[permission_defaults] local = "full", test = "full", live = "read" — — Legacy: agents' level per environment kind (none, read, ask, full); a layer under policy.json (policy reference).
guard_mode warn RELAYBAY_GUARD_MODE — Legacy: off, log, warn or block, the guard mode; a layer under policy.json (policy reference).
policy_file policy.json in the data directory RELAYBAY_POLICY_FILE — The global policy layer (JSON, policy reference); a relative path is read from the data directory. A missing file means the default preset.
attachment_roots [] RELAYBAY_ATTACHMENT_ROOTS — Extra folders attach_file may read screenshots from, besides the project's repo_path and the temp folder (for example a screenshots folder). The environment variable is comma-separated.
attachments_max_mb 10 RELAYBAY_ATTACHMENTS_MAX_MB — Largest screenshot in MB (whole number >= 1).
attachments_task_max_mb 200 RELAYBAY_ATTACHMENTS_TASK_MAX_MB — Screenshots of one task in all, in MB (whole number >= 1).
plan_reminder_every 30 RELAYBAY_PLAN_REMINDER_EVERY — Remind a linked agent of its current plan step every this many tool calls (PostToolUse events); 0 turns the periodic reminder off (session start and todo changes still remind).
claude_home your home directory RELAYBAY_CLAUDE_HOME --claude-home Folder with Claude Code's .claude/ and .claude.json (setup, doctor, Integrations).

Example config.toml

port = 8765
allowed_hosts = ["my-laptop.lan"]   # needed only when you bind to a LAN address
desktop_link_template = "claude://claude.ai/epitaxy/{id}"
done_window_days = 7
require_tracker_log = false
rules_mode = "warn"
owner_names = ["owner", "me", "alex"]   # waiting_on values listed in the Inbox

[stages.labels]
dev = "in progress"
done = "shipped"

[reports.labels]
verified = "checked"

[reports.hints]
M = "medium change"

[rules]
guidance = "Ask the owner before anything goes live."
description_template = "Goal:\nWhy:\nDone when:"

[rules.report_format]
sizes = ["S", "M", "L"]

[rules.stage_requirements]
test = [{ kind = "report_since_stage_change" }]
done = [{ kind = "field_present", field = "progress" }]