START HERE · v0.4.2.14

Configuration reference

Source: modules/anthill/docs/CONFIGURATION.md, a path from the root of the product's repository — versioned with the code, rendered here at every release.

Settings live in .anthill/config.json, resolved relative to the working directory. anthill --config prints the active path.

Editable keys can be changed live through the settings surface under manage_settings. File-only keys need a file edit and a restart.

Key Type Default Editable Env override Notes
config_version string "config-v1" no —
safety_profile string "SAFE_LOCAL" no — changes what the colony may do
workspace_root string ".anthill" no ANTHILL_HOME
db_path string ".anthill/anthill.db" no —
backup_dir string ".anthill/backups" no —
logs_dir string ".anthill/logs" no —
exports_dir string ".anthill/exports" no —
agent_workspace_dir string ".anthill/workspace" yes —
api_host string "0.0.0.0" no ANTHILL_HOST
api_port int 8713 no ANTHILL_PORT range 1–65535
api_auth_enabled bool true no — changes what the colony may do
api_token_env string "ANTHILL_API_TOKEN" no —
api_job_workers int 1 no —
console_connect_origins string[] [] no — Colonies on other machines this colony's console may sign in to, as exact origins (http://192.168.1.20:8713). The console page's connect-src names these and itself, nothing wider.
api_allowed_origins string[] [] no — Consoles served from other origins that may call this colony's API from a browser, as exact origins (http://192.168.1.10:8713). Answered with CORS for that origin alone, without credentials.; changes what the colony may do
colony_name string "anthill" yes —
conversation_max_missions int 25 yes — changes what the colony may do
conversation_max_turns int 96 yes — changes what the colony may do
conversation_max_tool_calls int 240 yes — changes what the colony may do
conversation_max_seconds int 3600 yes — changes what the colony may do
use_ollama bool true yes —
ollama_model string "" yes ANTHILL_OLLAMA_MODEL
ollama_host string "http://localhost:11434" yes ANTHILL_OLLAMA_HOST
ollama_num_ctx int 8192 yes — Context window asked of Ollama on every call, in tokens; 0 = Ollama's own default (4,096 on most cards), which truncates the planner's prompt; range 0–1048576
model_routes object {} yes —
model_pricing object {} no —
model_pricing_currency string "USD" no —
web_search_enabled bool false yes —
patch_application_enabled bool false yes — changes what the colony may do
file_writing_enabled bool false yes — changes what the colony may do
shell_tool_enabled bool false yes — changes what the colony may do
file_tools_enabled bool true yes — changes what the colony may do
operator_shell_enabled bool false yes — changes what the colony may do
setup_token_required bool false no ANTHILL_REQUIRE_SETUP_TOKEN changes what the colony may do
operator_shell_dir string "" yes —
infrastructure_enabled bool false yes — was: homelab_enabled
infrastructure_scheduler_enabled bool false yes — was: homelab_scheduler_enabled
infrastructure_mock_providers_enabled bool false yes — was: homelab_mock_providers_enabled
infrastructure_max_concurrent_checks int 2 yes — was: homelab_max_concurrent_checks
infrastructure_health_interval_seconds int 60 yes — was: homelab_health_interval_seconds
infrastructure_health_timeout_ms int 5000 yes — was: homelab_health_timeout_ms
infrastructure_notifications_enabled bool false yes — was: homelab_notifications_enabled
infrastructure_automation_enabled bool false no — was: homelab_automation_enabled
dashboard_workspace_enabled bool null no —
answer_synthesis_enabled bool true yes —
sandbox_execution_enabled bool false no — changes what the colony may do
acting_coder_enabled bool false yes — changes what the colony may do
roster_profile string "full" no — changes what the colony may do
disabled_roles string[] [] no — changes what the colony may do
specialist_ant_execution_enabled bool false no — changes what the colony may do
tester_ant_enabled bool false no — changes what the colony may do
soldier_ant_enabled bool false no — changes what the colony may do
medic_ant_enabled bool false no — changes what the colony may do
archivist_ant_enabled bool false no — changes what the colony may do
external_destinations object {} no — changes what the colony may do
ui_cartographer_ant_enabled bool false no — changes what the colony may do
scribe_ant_enabled bool false no — changes what the colony may do
infrastructure_slack_webhook string (secret) yes — was: homelab_slack_webhook
infrastructure_discord_webhook string (secret) yes — was: homelab_discord_webhook
infrastructure_generic_webhook string (secret) yes — was: homelab_generic_webhook
infrastructure_proxmox_enabled bool false yes — was: homelab_proxmox_enabled
infrastructure_proxmox_host string "" yes — was: homelab_proxmox_host
infrastructure_proxmox_port int 8006 yes — was: homelab_proxmox_port
infrastructure_proxmox_credential_id string "proxmox-main" yes — was: homelab_proxmox_credential_id
infrastructure_proxmox_insecure_tls bool false yes — changes what the colony may do; was: homelab_proxmox_insecure_tls
infrastructure_proxmox_protocol string "https" yes — was: homelab_proxmox_protocol
infrastructure_proxmox_write_actions_enabled bool false no — changes what the colony may do; was: homelab_proxmox_write_actions_enabled
infrastructure_proxmox_sync_interval_seconds int 300 yes — was: homelab_proxmox_sync_interval_seconds
infrastructure_arr_sync_interval_seconds int 300 no — was: homelab_arr_sync_interval_seconds
infrastructure_esxi_enabled bool false yes — was: homelab_esxi_enabled
infrastructure_esxi_host string "" yes — was: homelab_esxi_host
infrastructure_esxi_port int 443 yes — was: homelab_esxi_port
infrastructure_esxi_credential_id string "esxi-main" yes — was: homelab_esxi_credential_id
infrastructure_esxi_insecure_tls bool false yes — changes what the colony may do; was: homelab_esxi_insecure_tls
infrastructure_esxi_sync_interval_seconds int 300 yes — was: homelab_esxi_sync_interval_seconds
infrastructure_docker_enabled bool false yes — was: homelab_docker_enabled
infrastructure_docker_host string "" yes — was: homelab_docker_host
infrastructure_docker_port int 2376 yes — was: homelab_docker_port
infrastructure_docker_credential_id string "docker-main" yes — was: homelab_docker_credential_id
infrastructure_docker_insecure_tls bool false yes — changes what the colony may do; was: homelab_docker_insecure_tls
infrastructure_docker_sync_interval_seconds int 300 yes — was: homelab_docker_sync_interval_seconds
infrastructure_hyperv_enabled bool false yes — was: homelab_hyperv_enabled
infrastructure_hyperv_host string "" yes — was: homelab_hyperv_host
infrastructure_hyperv_port int 5986 yes — was: homelab_hyperv_port
infrastructure_hyperv_credential_id string "hyperv-main" yes — was: homelab_hyperv_credential_id
infrastructure_hyperv_insecure_tls bool false yes — changes what the colony may do; was: homelab_hyperv_insecure_tls
infrastructure_hyperv_sync_interval_seconds int 300 yes — was: homelab_hyperv_sync_interval_seconds
infrastructure_risk_interval_seconds int 3600 yes — was: homelab_risk_interval_seconds
infrastructure_incident_sweep_seconds int 300 yes — was: homelab_incident_sweep_seconds
parallel_execution_enabled bool true yes —
max_parallel_workers int 3 yes —
max_web_searches_per_mission int 3 yes —
max_sources_per_mission int 15 yes —
max_context_packet_chars int 7000 yes —
max_agent_message_content_chars int 2200 yes —
spec_ingestion_enabled bool true yes —
long_input_threshold int 6000 yes —
max_section_chars int 3500 yes —
max_section_tasks int 6 yes —
max_db_backups int 10 yes —
event_retention_days int 180 yes — Days agent traffic is kept after its mission ends - agent messages, artifacts, task results, events and source records (W1-10 A3, decision F59); 0 keeps everything, 1-29 are read as 30, more than 3650 as 0; the colony's own API log is not swept; range 0–3650
backup_retention_days int 30 yes — Days a backup is kept before it is deleted, full backups and mission copies alike (decision F66); range 7–90
conversation_retention_days int 0 yes — Days after its last turn a conversation is deleted with its turns and attachments: 0 (never, the default), 90, 180 or 365 (W1-10 A1/A2, decision F59); a number between two choices reads as the longer one, above 365 as never; range 0–365
patch_retention_days int 90 yes — Days a decided patch keeps its old and new content, its pre-apply backups and its workspace's repository index (W1-10 A4, decision F59); held to 30-365, and 0 or less is read as 90; range 30–365
device_evidence_retention_months int 24 yes — Months device evidence and action records are kept after the colony received them (W1-10 section 4.4); never fewer than 12, a floor in code no setting lowers (decision F60): 1-11 are read as 12, and 0 (or more than 120) keeps them; range 0–120
audit_outbox_retention_days int 7 no — Days a row of the audit outbox is kept after the audit sequencer took it (W1-10 E1, decision F59): 7 by default and never fewer, a floor the outbox's own trigger holds; 0 or less, and 1-6, are read as 7. A row the sequencer has not taken is never deleted; range 7–∞
forager_cache_retention_days int null yes — Days a FORAGER parser or extractor cache row is kept after it was last used, for the engine this colony runs (W1-10 F5, F6; decision F59). Unset hands the engine nothing: FORAGER's own 90, or FORAGER_RETENTION_CACHE_DAYS in the colony's environment, applies. Set, it is held to 0-365 and handed to the engine as FORAGER_RETENTION_CACHE_DAYS over the colony's environment; 0 turns both caches off. Applies at the engine's next start; range 0–365
forager_model_log_retention_days int null yes — Days FORAGER keeps a logged model call, with up to 1,000 characters of the model's answer, for the engine this colony runs (W1-10 F8; decision F59). Unset hands the engine nothing: FORAGER's own 7, or FORAGER_RETENTION_MODEL_LOG_DAYS in the colony's environment, applies. Set, it is held to 0-30 and handed over the colony's environment; 0 keeps none of the model's output. Applies at the engine's next start; range 0–30
forager_review_event_retention_years int null yes — Years FORAGER keeps a review event after it was recorded, for the engine this colony runs (W1-10 F14; decision F59). Unset hands the engine nothing: FORAGER's own 2, or FORAGER_RETENTION_REVIEW_EVENT_YEARS in the colony's environment, applies. Set, it is held to 1-7 and handed over the colony's environment. Applies at the engine's next start; range 1–7
forager_job_retention_days int null yes — Days FORAGER keeps a finished job and its stages after it finished, for the engine this colony runs (W1-10 F15; decision F59); a project's latest job is kept and loses only its text. Unset hands the engine nothing: FORAGER's own 90, or FORAGER_RETENTION_JOB_DAYS in the colony's environment, applies. Set, it is held to 30-365 and handed over the colony's environment. Applies at the engine's next start; range 30–365
forager_stale_retention_days int null yes — Days FORAGER keeps a statement, relationship or entity after no live source supports it any more, for the engine this colony runs (W1-10 F9-F11; decision F59). Unset hands the engine nothing: FORAGER's own 180, or FORAGER_RETENTION_STALE_DAYS in the colony's environment, applies. Set, 0 deletes it at the next sweep, any other number is that many days, and -1 (any negative number) keeps it for the life of the project: the engine is handed the word never. Applies at the engine's next start; range -1–∞
forager_export_retention_days int null yes — Days a built FORAGER export's zip is kept, for the engine this colony runs (W1-10 F16; decision F59); the export's record is kept a year. Unset hands the engine nothing: FORAGER's own 7, or FORAGER_RETENTION_EXPORT_DAYS in the colony's environment, applies. Set, it is held to 1-90 and handed over the colony's environment. Applies at the engine's next start; range 1–90
autonomy_enabled bool false yes — changes what the colony may do
autonomy_poll_seconds int 30 yes — changes what the colony may do
autonomy_max_missions_per_hour int 6 yes — changes what the colony may do
autonomy_max_missions_per_day int 60 yes — changes what the colony may do
autonomy_max_consecutive_failures int 3 yes — changes what the colony may do
autonomy_dedupe_similarity number 0.8 yes — changes what the colony may do
autonomy_max_followups_per_run int 1 yes — changes what the colony may do
autonomy_max_objective_depth int 3 yes — changes what the colony may do
autonomy_max_backlog int 40 yes — changes what the colony may do
autonomy_concurrency int 1 yes — changes what the colony may do
autonomy_aging_minutes int 30 yes — changes what the colony may do
autonomy_learning_enabled bool true yes — changes what the colony may do
autonomy_priority_bias_max int 2 yes — changes what the colony may do
autonomy_score_ema_alpha number 0.3 yes — changes what the colony may do
autonomy_retire_min_runs int 5 yes — changes what the colony may do
autonomy_retire_score_threshold number 0.25 yes — changes what the colony may do
autonomy_loop_window int 4 yes — changes what the colony may do
autonomy_escalation_policy string "ask" yes — Escalation policy for missions with no conversation (scheduled, CLI, Director): ask
auto_update string "silent" yes — What to do when a newer release exists: silent
autonomy_autoapply_enabled bool false yes — changes what the colony may do
autonomy_autoapply_paths string[] [] yes — changes what the colony may do
autonomy_autoapply_max_lines int 40 yes — changes what the colony may do
autonomy_autoapply_verify_cmd string "" yes — changes what the colony may do
autonomy_autoapply_verify_timeout int 900 yes — changes what the colony may do
autonomy_autoapply_git_commit bool false yes — changes what the colony may do
mission_replay_enabled bool false no ANTHILL_MISSION_REPLAY_ENABLED changes what the colony may do
mission_replay_vault_path string "" no ANTHILL_MISSION_REPLAY_VAULT_PATH
mission_replay_tag string "anthill/replay" no ANTHILL_MISSION_REPLAY_TAG
mission_replay_learning_enabled bool false no ANTHILL_MISSION_REPLAY_LEARNING_ENABLED changes what the colony may do
knowledge_enabled bool false yes ANTHILL_KNOWLEDGE_ENABLED changes what the colony may do
knowledge_forager_endpoint string "http://127.0.0.1:8790" yes ANTHILL_KNOWLEDGE_FORAGER_ENDPOINT
knowledge_forager_token string (secret) yes ANTHILL_KNOWLEDGE_FORAGER_TOKEN required when knowledge_enabled — FORAGER authenticates every /api route; an fgr_ integration token minted by the FORAGER operator. Empty means 401 on every call
knowledge_forager_allow_remote bool false no ANTHILL_KNOWLEDGE_ALLOW_REMOTE changes what the colony may do
knowledge_auto_study string "off" yes ANTHILL_KNOWLEDGE_AUTO_STUDY changes what the colony may do
knowledge_revision_study string "inherit" yes ANTHILL_KNOWLEDGE_REVISION_STUDY changes what the colony may do
knowledge_probe_timeout_ms int 2000 no ANTHILL_KNOWLEDGE_PROBE_TIMEOUT_MS range 250–60000
knowledge_retrieval_timeout_ms int 5000 no ANTHILL_KNOWLEDGE_RETRIEVAL_TIMEOUT_MS range 500–120000
knowledge_ingestion_timeout_ms int 10000 no ANTHILL_KNOWLEDGE_INGESTION_TIMEOUT_MS range 500–300000
knowledge_default_top_k int 8 no ANTHILL_KNOWLEDGE_TOP_K range 1–50
knowledge_max_context_chars int 12000 no ANTHILL_KNOWLEDGE_MAX_CONTEXT_CHARS range 1000–200000
knowledge_cache_seconds int 30 no ANTHILL_KNOWLEDGE_CACHE_SECONDS range 0–3600
knowledge_project_map object {} no — changes what the colony may do
knowledge_default_project string "" no ANTHILL_KNOWLEDGE_DEFAULT_PROJECT
knowledge_forager_managed bool false no ANTHILL_KNOWLEDGE_FORAGER_MANAGED start and supervise a bundled FORAGER engine instead of attaching to one an operator runs. Off by default; when on, knowledge_forager_endpoint/token are ignored and the host mints the credential; changes what the colony may do
knowledge_forager_runtime_path string "" no ANTHILL_KNOWLEDGE_FORAGER_RUNTIME_PATH path to the Node runtime the managed engine runs under; empty finds node on PATH. Managed mode only
knowledge_forager_entry_path string "" no ANTHILL_KNOWLEDGE_FORAGER_ENTRY_PATH path to the bundled FORAGER server entry (server.mjs). Required when knowledge_forager_managed is on. Managed mode only
knowledge_forager_data_dir string "" no ANTHILL_KNOWLEDGE_FORAGER_DATA_DIR data directory the managed engine owns; empty defaults under the colony state directory. Managed mode only
knowledge_forager_input_roots string[] [] yes — folders the FORAGER engine this colony runs may read for an import by path, handed to it as FORAGER_ALLOWED_INPUT_ROOTS at its next start. Empty (the default) hands it nothing, so FORAGER's own deny-by-default, or FORAGER_ALLOWED_INPUT_ROOTS in the colony's environment, applies. Each folder must lie inside the colony's workspace (agent_workspace_dir), where the colony's own import by path already confines a path. Managed mode only; changes what the colony may do
knowledge_forager_bundled bool true no ANTHILL_KNOWLEDGE_FORAGER_BUNDLED run the FORAGER engine that shipped beside this binary (the forager/ folder) in managed mode, with nothing else configured. On by default; off ignores a bundled engine. An explicit knowledge_forager_entry_path outranks the bundle; changes what the colony may do

Deliberately absent from config.example.json

These are real settings. They are kept out of the example file for the reason given, so that an operator finds out they exist here rather than by reading the source.

Key Why
model_priority_provider console-managed (Routing inspector)
model_priority_model console-managed (Routing inspector)
agent_models console-managed (Integrations → Claude → Claude Code)
user_tools_enabled console-managed (operator-defined tools)
user_tool_allowed_hosts console-managed
workspace_checks file-only by design; see the v0.3.8.73 note on its declaration
deployment_mode detected; the console shows it read-only
docker_execute_enabled module surface, not a general operator setting
micromound_enabled optional compile-time integration
config_schema_version written by the migration, not by an operator
handoff_ingestion_enabled internal wiring, no operator-facing behaviour on its own
adaptive_mission_control_enabled internal wiring
activation_tier console-managed
objective_verification_enabled pending example-file regeneration; surfaced on Settings → Colony
shadow_observation_enabled console-managed (Readiness page)
readiness_min_shadow_sample readiness thresholds, console-managed
readiness_min_diagnosis_precision readiness thresholds, console-managed
readiness_min_action_accuracy readiness thresholds, console-managed
autonomy_oneshot_completion autonomy internals, console-managed
autonomy_autoapply_git_push console-managed (auto-apply panel)
autonomy_autoapply_git_remote console-managed
autonomy_autoapply_git_username console-managed
autonomy_autoapply_git_ssh_key_path console-managed
autonomy_autoapply_keep_without_verify break-glass; documented in AUTONOMY.md,