Config
Config is where an operator changes how an agent behaves. It has five tabs, matching the TUI and GUI surfaces and the JSON API:
| Tab | What it edits | API |
|---|---|---|
| Settings | Writable config keys | GET/PATCH /api/config |
| Users | Allowed GitHub logins and the fallback org | GET/PUT /api/access |
| Credentials | Encrypted secrets | GET /api/credentials, GET /api/credentials/catalog, PUT, DELETE /api/credentials/{id} |
| Health checks | Safety checks per environment | GET/POST /api/health-checks, PATCH/DELETE /api/health-checks/{id} |
| Skills | Agent skills and their steps | GET/POST /api/skills, PATCH/DELETE /api/skills/{id} |
| Tooling | Read-only readiness report | GET /api/tooling |
Settings
Section titled “Settings”Settings renders every key in WRITABLE_CONFIG_KEYS that the API accepts. Select a row to edit it inline; the editor shape depends on the key:
- Select — enumerated keys such as
delivery_profile(live/source),pr_merge_method(squash/rebase/merge),coding_runtime(pi; legacy values fall back),monitor_environment(staging/production), andstaging_deploy_strategy(workflow/merge_pr). - Number — intervals and limits such as
max_workers,worker_timeout_minutes,worker_model_stall_timeout_secs,github_sync_minutes,harness_converge_minutes,docs_converge_minutes,watchdog_interval_secs,production_monitor_minutes,optimize_performance_hours, andpentest_hours. - Bool —
self_heal_codehealth,mcp_enabled. - Text — everything else, including paths, URLs, and free-form values such as
monitor_environments(a comma-separated list likestaging,production).
Representative keys by area:
- GitHub:
github_repo,github_app_id,pickup_labels. - Delivery:
delivery_profile,pr_merge_method,staging_deploy_strategy,staging_deploy_workflow,prod_deploy_workflow,staging_soak_minutes,deploy_workflow_inputs,repo_merge_strategy,landing_max_attempts. - Capacity:
max_workers,worker_timeout_minutes,worker_model_stall_timeout_secs,worker_checkpoint_minutes,dispatch_min_available_mb,queue_stall_minutes,db_memory_limit,max_compile_slots,worker_memory_max,memory_recycle_mb,max_parallel_tasks,repo_max_in_flight,dispatch_overlap,overlap_unknown,github_rate_floor. - Sandbox:
sandbox_provider,sandbox_endpoint,sandbox_template,sandbox_work_dir,sandbox_max_concurrency,sandbox_reap_minutes. See Sandbox providers. - Monitoring:
monitor_environment(the primary environment),monitor_environments(every environment the periodic monitor samples),production_monitor_minutes. See Health checks. - Cadence:
github_sync_minutes,harness_converge_minutes,docs_converge_minutes,watchdog_interval_secs,production_monitor_minutes,self_heal_minutes,optimize_performance_hours,pentest_hours. - Session memory:
memory_s3_endpoint,memory_s3_bucket,memory_s3_prefix,memory_embed_model,memory_embed_cache_dir,memory_retrieve_limit,memory_retrieve_candidates. - Self-heal:
self_heal_minutes,self_heal_max_issues,self_heal_codehealth. - Security audit:
pentest_target_url,pentest_timeout_minutes,pentest_instruction. - Misc:
external_url,mcp_enabled.
Patching is validated before any write: if one key is not writable, the whole patch is rejected and nothing changes. An empty value deletes the key. A successful patch broadcasts config_changed and is recorded as config.patch in the audit log.
Branding
Section titled “Branding”The top of the Settings tab edits the project’s identity for the GUI:
- Project logo — upload a PNG, JPEG, WebP, GIF, or SVG (at most 512 KiB). It replaces the Steelframe mark in the sidebar, the sign-in card, and the web tab icon. Reset returns to the bundled mark.
- Theme colors — six tokens: Accent, Background, Surface, Elevated, Text, and Muted text. Save theme applies them to every operator’s GUI for this project; Reset to defaults clears every override.
These are the brand_* config keys (brand_logo plus one key per color). They are API-only in the TUI because it cannot paint a logo or a custom palette; see Configuration for the defaults.
The Users tab manages who may sign in. It lists the allowed GitHub logins (add one, remove one) and the fallback org; the sign-in gate state is shown at the top. An empty list means org-only access, and clearing the org restores the built-in default. The tab is backed by GET/PUT /api/access — see Auth for the access rule and how the first operator is provisioned.
Credentials
Section titled “Credentials”The Credentials tab shows the well-known service catalog with each service marked Set or Not set, plus the master-key status. Pick a service to edit its target URL and secret, or delete it. Secrets are written encrypted; listing never returns secret material. See Credentials for the service list and shapes.
Health checks
Section titled “Health checks”The Health checks tab lists safety checks with a required / optional Tag. New health check… and Edit… open a modal for name, kind, environment, required flag, and JSON config. Kinds are http_health, ci_workflow, metric_threshold, and smoke_test. See Health checks for config shapes and how they gate deploys.
Skills
Section titled “Skills”The Skills tab lists builtins (read-only, viewable) and DB-backed skills (editable). Click a row to view. New skill… and Edit… open a modal for the full SKILL.md text (including the name: frontmatter); tag it to worker-spawning steps. See Skills.
Gotchas
Section titled “Gotchas”- A
PATCH /api/configwith an empty value deletes that config row rather than storing an empty string. - A failed config write reports the key that failed and returns
500; the config is not reported as persisted unless it was. - The tooling report is derived from credentials and installed binaries; adding a credential can change readiness immediately.