Triggers & Daemon

Triggers define what wakes an agent up. The daemon (aide up) polls triggers and dispatches tasks.

Trigger types

manual (default)

[trigger]
on = "manual"

Agent only runs when you explicitly call aide run.

issue

[trigger]
on = "issue"

The daemon polls gh issue list --label <agent_name> in the agent's git repo. When a matching issue is found:

  1. The issue title + body become the task
  2. aide runs the agent with that task
  3. On completion, aide comments on the issue and closes it

cron

[trigger]
on = "cron:0 9 * * *"            # daily at 09:00 (5-field cron syntax)

Or combined with issue via array form:

[trigger]
on = ["issue", "cron:*/30 * * * *"]   # poll issues + fire every 30 min

The daemon parses the 5-field expression on each tick and fires when the next scheduled time has passed since the last fire (no catch-up by default — a single missed-fire summary on daemon restart). Each cron fire dispatches a synthesized task "Scheduled run (cron: <expr>)" to the agent.

Validation happens at aide register time — invalid cron expressions fail fast instead of at fire time.

Daemon behavior:

  • Per-agent last_cron_fire map prevents double-dispatch within a single tick window.
  • On first encounter the map is seeded to now so the next minute boundary (not the current tick) decides when the first fire happens — this is by design to avoid an immediate fire when the daemon is restarted mid-minute.
  • The per-agent supervisor (see [daemon] restart = …) wraps cron-fired runs — failed runs can auto-retry on restart = "on-failure".

Observability (new in v2.0.0-alpha.10):

  • Every cron fire writes a matching dispatched + finished pair to ~/.aide/events.jsonl with kind=dispatched/finished, issue="cron:<expr>", routing="cron", and the same telemetry fields (cloud_tokens, reward, task_category) as issue-triggered runs.
  • aide events --limit N surfaces cron fires alongside issue dispatches.
  • aide ab analyze treats "cron" as a third routing arm (separate from "bandit" and "round-robin") so cron-triggered runs don't pollute A/B comparisons.
  • aide review (daily observability) applies MEDS-style failure clustering to cron-triggered failures the same way it does to dispatch-triggered ones.

Daemon

Start

aide up

Starts a background polling loop. The daemon:

  • Reads the registry to find all agents with non-manual triggers
  • Polls each agent's trigger on the configured interval
  • Dispatches aide run when a trigger fires
  • Writes a PID file for lifecycle management

Stop

aide down

Sends SIGTERM to the daemon process and cleans up the PID file.

GitHub repo detection

For issue triggers, aide detects the GitHub repo by parsing the git remote URL in the agent's directory. Both HTTPS and SSH formats are supported: