Configuration¶
The backend reads environment variables prefixed with AGENTIC_, or the same keys from a .env file in the directory you start the server from (the repository root when you use the Makefile).
.env.example in the repository root lists every key with its default.
Environment variables¶
| Variable | Default | Purpose |
|---|---|---|
AGENTIC_DATA_DIR |
~/.agentic |
Directory holding the SQLite database. |
AGENTIC_DATABASE_URL |
sqlite:///<data_dir>/agentic.db |
Full database URL. Overrides AGENTIC_DATA_DIR when set. |
AGENTIC_WORKTREE_ROOT |
~/.agentic/worktrees |
Where git worktrees are created. |
AGENTIC_FS_ROOT |
~ |
Root the repository picker may browse. Use / to allow browsing anywhere. |
AGENTIC_SDLC_DIR |
~/.sdlc |
User-global SDLC reviews store the item view reads PR review reports from. |
AGENTIC_STATIC_DIR |
backend/static |
Built SPA for the API to serve. |
AGENTIC_CORS_ORIGINS |
["http://localhost:5173","http://127.0.0.1:5173"] |
CORS origins allowed for the Vite dev server. |
AGENTIC_DEFAULT_HARNESS |
opencode |
Fallback harness by name, used when no harness is marked default. |
AGENTIC_AUTO_APPROVE_PERMISSIONS |
true |
Auto-approve ACP permission requests. |
AGENTIC_QUEUE_URL |
sqlite:///<data_dir>/queue.db |
Agent-run queue. Use a redis:// or postgres:// URL to share the queue across machines. |
AGENTIC_WORKER_CONCURRENCY |
4 |
Agent runs a worker processes concurrently. |
AGENTIC_WORKER_SWEEP |
60 |
Seconds between sweeps for stuck jobs left by a dead worker. |
AGENTIC_JOB_TIMEOUT |
0 |
Per-run job timeout in seconds. 0 disables it. |
AGENTIC_JOB_HEARTBEAT |
120 |
Seconds a job may go untouched before a sweep retries it. |
AGENTIC_JOB_RETRIES |
1 |
Times a run is retried after a failure or a dead worker. |
AGENTIC_OPENCHAMBER_URL |
(unset) | Base URL for Open in OpenChamber links. |
AGENTIC_OPENCHAMBER_SESSION_PATH |
/?session={session} |
Path appended to the OpenChamber base. |
AGENTIC_TERMINAL_URL_TEMPLATE |
(unset) | URL template for Open in terminal links. |
AGENTIC_EDITOR_URL_TEMPLATE |
(unset) | URL template for the worktree Open in editor button. |
AGENTIC_SLACK_REFRESH_POLICY |
(empty) | When to re-fetch Slack threads, for example 1d=1h,7d=6h,30d=1d,*=7d. Empty disables it. |
AGENTIC_GITHUB_REFRESH_POLICY |
(empty) | When to re-fetch GitHub issues and pull requests, in the same format. Empty disables it. |
AGENTIC_ITEM_REFRESH_TICK |
300 |
Seconds between checks for items that are due. 0 disables the loop. |
AGENTIC_SCHEDULED_TASK_TICK |
30 |
Seconds between checks for scheduled shell tasks that are due. 0 disables the loop. |
AGENTIC_SCHEDULED_TASK_TIMEOUT |
3600 |
Seconds a scheduled shell task may run before it is stopped and marked failed. |
Template placeholders:
| Setting | Placeholders |
|---|---|
AGENTIC_OPENCHAMBER_SESSION_PATH |
{session} |
AGENTIC_TERMINAL_URL_TEMPLATE |
{session}, {cwd}, {harness} |
AGENTIC_EDITOR_URL_TEMPLATE |
{path} |
| A harness resume command template | {session}, {cwd}, {harness} |
Settings overrides¶
The session-link settings (OpenChamber URL and path, terminal URL template, and editor URL template) can also be set on the Settings page. A stored override wins over the matching environment variable.
The refresh policies are editable under Settings → Refresh.
Agent prompts are editable under Settings → Agent prompts.
Each prompt appears as a button in the agent panel when a task has exactly one associated issue or pull request of the prompt's kind, and clicking it starts a run with the resolved template.
Placeholders: {owner}, {repository}, {number} (filled from the associated GitHub item).
Two prompts are seeded by default: Review PR ($review-pr-full {number} {owner}/{repository}) and Triage issue ($triage-issue {number} {owner}/{repository}).
There is no environment variable for these; they live only in the settings store.
Refresh policy format¶
A refresh policy is a comma-separated list of age=interval bands, with an optional * fallback, for example:
Omit the * band, or write *=never, to stop refreshing once an item outgrows the last band.
An empty policy disables that source.
An item's age is its upstream creation time when known, and otherwise the time it was recorded.