72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
|
|
# Configuration
|
||
|
|
|
||
|
|
Configuration is a single YAML file (`config.yaml`) read at startup.
|
||
|
|
`config.example.yaml` at the repository root is the annotated template —
|
||
|
|
copy and edit.
|
||
|
|
|
||
|
|
## Sections
|
||
|
|
|
||
|
|
### `accounts`
|
||
|
|
|
||
|
|
List of Anthropic accounts the daemon may rotate through.
|
||
|
|
|
||
|
|
| Field | Type | Description |
|
||
|
|
|------------------|----------|-------------|
|
||
|
|
| `name` | string | Short identifier used in logs and metrics. |
|
||
|
|
| `home` | path | Per-account home directory (houses the private `~/.claude` credentials). |
|
||
|
|
| `limits.hourly_msgs` | int | Local soft cap on messages per hour. `0` disables. |
|
||
|
|
| `limits.weekly_msgs` | int | Local soft cap per 7-day window. `0` disables. |
|
||
|
|
| `priority` | int | Lower numbers preferred when selecting a primary. |
|
||
|
|
|
||
|
|
### `pool`
|
||
|
|
|
||
|
|
Session pool layout.
|
||
|
|
|
||
|
|
- `dedicated` — long-lived sessions bound to a specific project path.
|
||
|
|
Each entry has `name` (tmux session) and `project` (absolute path).
|
||
|
|
- `autonomous` — autoscaling pool for the inbox dispatcher.
|
||
|
|
`prefix` + serial → session names; `min`/`max` bound the pool size.
|
||
|
|
- `shared_projects_dir` — canonical Claude Code `projects/` tree,
|
||
|
|
symlinked from every account home (see
|
||
|
|
`docs/session-switch-analysis.md`).
|
||
|
|
|
||
|
|
### `quota`
|
||
|
|
|
||
|
|
Failover thresholds.
|
||
|
|
|
||
|
|
- `poll_interval` — how often the quota-monitor samples usage.
|
||
|
|
- `window_5h_threshold` — fraction (0..1) of the 5h cap above which a
|
||
|
|
swap is requested.
|
||
|
|
- `window_week_threshold` — same idea for the weekly cap.
|
||
|
|
- `reactivate_cooldown` — minimum time before a drained account is
|
||
|
|
eligible again.
|
||
|
|
|
||
|
|
### `checkpoint`
|
||
|
|
|
||
|
|
- `dir` — where per-session snapshots are written.
|
||
|
|
- `interval` — time between snapshots.
|
||
|
|
- `keep` — retention per session (older files are pruned).
|
||
|
|
|
||
|
|
### `mcp_http`
|
||
|
|
|
||
|
|
HTTP control plane for the MCP gateway.
|
||
|
|
|
||
|
|
- `listen` — bind address (keep it loopback unless fronted by a reverse
|
||
|
|
proxy).
|
||
|
|
- `bearer_token_env` — name of the env var from which to read the
|
||
|
|
bearer token required on every request.
|
||
|
|
- `enable_trigger` — gate for mutating routes (`/trigger/*`).
|
||
|
|
|
||
|
|
## Secrets
|
||
|
|
|
||
|
|
The config file itself holds no secrets. Bearer tokens and account
|
||
|
|
credentials are read from the environment. In production deploy via a
|
||
|
|
systemd unit with a drop-in that sources `/run/secrets/claude-failover.env`
|
||
|
|
(populated by `secuops` / OVH KMS at boot).
|
||
|
|
|
||
|
|
## Reload
|
||
|
|
|
||
|
|
Config reload is not supported in the initial version. A SIGHUP handler
|
||
|
|
is planned — the account-switcher makes a clean live reload feasible
|
||
|
|
(drain, reconfigure, resume).
|