Skip to content

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:

TabWhat it editsAPI
SettingsWritable config keysGET/PATCH /api/config
UsersAllowed GitHub logins and the fallback orgGET/PUT /api/access
CredentialsEncrypted secretsGET /api/credentials, GET /api/credentials/catalog, PUT, DELETE /api/credentials/{id}
Health checksSafety checks per environmentGET/POST /api/health-checks, PATCH/DELETE /api/health-checks/{id}
SkillsAgent skills and their stepsGET/POST /api/skills, PATCH/DELETE /api/skills/{id}
ToolingRead-only readiness reportGET /api/tooling

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), and staging_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, and pentest_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 like staging,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.

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.

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.

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.

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.

  • A PATCH /api/config with 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.