Configuration Reference

All daemon configuration lives in .aiwg/daemon.json. This file is created by aiwg daemon-init with d

Daemon Configuration Reference

Prompt-first procedure: Describe the outcome you want in your agent conversation. The agent should select and load the appropriate AIWG assets, explain material changes, request any needed approval, and report verification evidence. Exact commands and flags appear only in the CLI reference.

All daemon configuration lives in `.aiwg/daemon.json`. This file is created by the agent-owned daemon-init operation with defaults, then customized per project.

Full Configuration Structure

{
  "daemon": {
    "heartbeat_interval_seconds": 30,
    "max_parallel_actions": 3,
    "action_timeout_minutes": 120,
    "log": {
      "max_size_mb": 50,
      "max_files": 5
    }
  },
  "supervisor": {
    "max_concurrent": 4,
    "max_queue_depth": 20,
    "restart_intensity": {
      "max_restarts": 3,
      "window_seconds": 300
    },
    "circuit_breaker": {
      "failure_threshold": 5,
      "cooldown_ms": 120000
    },
    "daily_budget_usd": 0,
    "behaviors": []
  },
  "interface": {
    "web": {
      "enabled": false,
      "port": 7474,
      "host": "127.0.0.1"
    }
  },
  "watch": {
    "enabled": false,
    "paths": [],
    "ignore": ["node_modules/", ".git/", "*.log"],
    "debounce_ms": 1000
  },
  "schedule": {
    "enabled": false,
    "jobs": []
  },
  "rules": [],
  "behaviors": {}
}

daemon

Core process settings.

KeyTypeDefaultDescription
`daemon.heartbeat_interval_seconds`number30How often the daemon writes a heartbeat to `.aiwg/daemon/heartbeat.json`
`daemon.max_parallel_actions`number3Maximum concurrent actions in the base action runner (not the supervisor)
`daemon.action_timeout_minutes`number120Kill an action after this many minutes regardless of state
`daemon.log.max_size_mb`number50Log file size before rotation
`daemon.log.max_files`number5Number of rotated log files to keep

supervisor

The DaemonSupervisor wraps the base agent supervisor and adds governance policy.

KeyTypeDefaultDescription
`supervisor.max_concurrent`number4Maximum simultaneous agent sessions
`supervisor.max_queue_depth`number20Maximum queued tasks; rejections above this threshold
`supervisor.restart_intensity.max_restarts`number3Restarts allowed within the window before marking a task permanently failed
`supervisor.restart_intensity.window_seconds`number300Sliding window for restart counting (seconds)
`supervisor.circuit_breaker.failure_threshold`number5Consecutive failures that open the circuit breaker
`supervisor.circuit_breaker.cooldown_ms`number120000Time the circuit stays open before a half-open probe (ms)
`supervisor.daily_budget_usd`number0Daily spend cap across all agent loops. 0 = no cap. Resets at midnight local time.
`supervisor.behaviors`string[]`[]`Behavior names to activate at session initialization

Circuit breaker states:

  • Closed (normal): tasks run normally
  • Open: new tasks are blocked until `cooldown_ms` elapses
  • Half-open: one probe task runs; if it succeeds, the circuit closes; if it fails, the cooldown resets

Budget behavior: At 90% of `daily_budget_usd`, a warning is emitted. At 100%, new agent spawns are blocked. Token cost is aggregated across all supervised loops.


interface

Web UI settings.

KeyTypeDefaultDescription
`interface.web.enabled`booleanfalseEnable the operator web UI
`interface.web.port`number7474Port to listen on
`interface.web.host`string`"127.0.0.1"`Bind address. Keep as `127.0.0.1` unless you need remote access.

The web UI at `http://localhost:7474` shows: active sessions, task queue, subsystem health, supervisor state, and session logs. It is read-only by default.


watch

File system monitoring. Triggers automation rules when files change.

KeyTypeDefaultDescription
`watch.enabled`booleanfalseEnable file system monitoring
`watch.paths`string[]Directories to watch (relative to project root)
`watch.ignore`string[]Glob patterns to exclude from watching
`watch.debounce_ms`number1000Wait this long after the last change before firing triggers

Example: Watch source and test directories:

{
  "watch": {
    "enabled": true,
    "paths": ["src/", "test/", ".aiwg/requirements/"],
    "ignore": ["node_modules/", ".git/", "*.log", "*.tmp"],
    "debounce_ms": 2000
  }
}

schedule

Cron-based job scheduling.

KeyTypeDefaultDescription
`schedule.enabled`booleanfalseEnable the scheduler
`schedule.jobs`object[]Array of cron job definitions

Job schema:

KeyTypeRequiredDescription
`name`stringyesUnique job identifier
`cron`stringyesCron expression (5-field: minute hour day month weekday)
`action`stringyesAction name to run
`timeout_minutes`numbernoJob-specific timeout (overrides daemon default)

Example jobs:

{
  "schedule": {
    "enabled": true,
    "jobs": [
      {
        "name": "health-check",
        "cron": "*/30 * * * *",
        "action": "health-check"
      },
      {
        "name": "daily-security-audit",
        "cron": "0 9 * * 1-5",
        "action": "security-audit",
        "timeout_minutes": 60
      },
      {
        "name": "weekly-test-run",
        "cron": "0 8 * * 1",
        "action": "run-tests"
      }
    ]
  }
}

rules

Automation rules: event-driven trigger → condition → action.

Each rule is an object with:

KeyTypeDescription
`id`stringUnique rule identifier
`trigger.type`string`"file_change"`, `"schedule"`, or `"task_complete"`
`trigger.pattern`stringGlob pattern (for `file_change`)
`condition.type`string`"debounce"`, `"always"`, or `"on_error"`
`condition.interval_ms`numberDebounce interval (for `debounce` condition)
`action.type`string`"submit_task"` or `"run_skill"`
`action.prompt`stringTask prompt (for `submit_task`)
`action.skill`stringSkill name (for `run_skill`)

Example rule: Run tests when TypeScript files change:

{
  "rules": [
    {
      "id": "auto-test-on-ts-change",
      "trigger": {
        "type": "file_change",
        "pattern": "src/**/*.ts"
      },
      "condition": {
        "type": "debounce",
        "interval_ms": 5000
      },
      "action": {
        "type": "submit_task",
        "prompt": "Run the TypeScript tests for the changed files"
      }
    }
  ]
}

behaviors

Per-behavior configuration blocks. Each key corresponds to a behavior name listed in `supervisor.behaviors`.

concierge

{
  "behaviors": {
    "concierge": {
      "enabled": true,
      "tone": "professional-warm",
      "verbosity": "concise",
      "escalation": "absorb-by-default",
      "memory": {
        "cross_session": true,
        "store": ".aiwg/daemon/concierge-memory.json"
      }
    }
  }
}
KeyTypeDefaultDescription
`enabled`booleantrueActivate the concierge
`tone`string`"professional-warm"``"professional-warm"`, `"technical-authority"`, or `"friendly-explainer"`
`verbosity`string`"concise"``"minimal"`, `"concise"`, or `"detailed"`
`escalation`string`"absorb-by-default"``"absorb-by-default"` (handle errors silently) or `"surface-immediately"` (show all errors)
`memory.cross_session`booleantruePersist session context across restarts
`memory.store`stringPath to the memory file

Tone options:

  • `professional-warm` — Hotel concierge register; the default. Warm but not casual; professional but not cold.
  • `technical-authority` — Direct, precise. For teams that prefer unmediated technical communication.
  • `friendly-explainer` — Approachable, patient. For less technical users or onboarding contexts.

Minimal Configuration Example

For a development project with file watching and no spend cap:

{
  "daemon": {
    "heartbeat_interval_seconds": 30
  },
  "supervisor": {
    "max_concurrent": 2,
    "behaviors": ["concierge"]
  },
  "interface": {
    "web": {
      "enabled": true,
      "port": 7474
    }
  },
  "watch": {
    "enabled": true,
    "paths": ["src/", "test/"],
    "ignore": ["node_modules/", ".git/"],
    "debounce_ms": 1000
  },
  "behaviors": {
    "concierge": {
      "enabled": true,
      "tone": "technical-authority",
      "verbosity": "concise"
    }
  }
}

References

  • `@$AIWG_ROOT/agentic/code/addons/daemon/docs/quickstart.md` — Start and stop the daemon
  • `@$AIWG_ROOT/agentic/code/addons/daemon/docs/daemon-addon-guide.md` — Architecture and provider support
  • `@$AIWG_ROOT/docs/daemon-guide.md` — Supervisor architecture and headend details