Agent Runtime Guide
Status: User-facing guideLast updated: 2026-02-17
Audience: Operators setting up and running agents in AoA
1. What this system does
Agents in AoA do not run continuously.They run in heartbeats: short execution windows triggered by a wakeup. Each heartbeat:
- Starts the configured agent adapter (for example, Claude CLI or Codex CLI)
- Gives it the current prompt/context
- Lets it work until it exits, times out, or is cancelled
- Stores results (status, token usage, errors, logs)
- Updates the UI live
2. When an agent wakes up
An agent can be woken up in four ways:timer: scheduled interval (for example every 5 minutes)assignment: when work is assigned/checked out to that agenton_demand: manual wakeup (button/API)automation: system-triggered wakeup for future automations
3. What to configure per agent
3.1 Adapter choice
Common choices:claude_local: runs your localclaudeCLI (Claude Code)codex_local: runs your localcodexCLI (OpenAI Codex)cursor: runs the Cursor Agent CLIopencode_local: runs OpenCode CLI (multi-providerprovider/model)gemini_local: runs Google’s Gemini CLIhermes_local: runs Hermes Agent (Nous Research) via thehermesCLIopenclaw: wakes a remote OpenClaw agent over HTTP (SSE or webhook)process: generic shell command adapterhttp: calls an external HTTP endpoint
3.2 Runtime behavior
In agent runtime settings, configure heartbeat policy:enabled: allow scheduled heartbeatsintervalSec: timer interval (0 = disabled)wakeOnAssignment: wake when assigned workwakeOnOnDemand: allow ping-style on-demand wakeupswakeOnAutomation: allow system automation wakeups
3.3 Working directory and execution limits
For local adapters, set:cwd(working directory)timeoutSec(max runtime per heartbeat)graceSec(time before force-kill after timeout/cancel)- optional env vars and extra CLI args
- use Test environment in agent configuration to run adapter-specific diagnostics before saving
3.4 Execution targets
AoA currently supports two execution target values inagent.adapterConfig.executionTarget:
{"type":"local"}: default. Runs the adapter command as a local child process.{"type":"sandbox-docker","image":"node:22-bookworm","workdir":"/workspace"}: runs the adapter command through Docker CLI with the workspace bind-mounted at/workspace. The container calls back throughhost.docker.internaland a run-scoped bridge.
remote-ssh, sandbox-e2b, and sandbox-daytona are reserved for a future execution-target expansion. Do not configure them yet.
Execution target configuration stays in the existing adapterConfig JSONB field until a future schema pass. This release does not add a migration.
3.5 Prompt templates
You can set:promptTemplate: used for every run (first run and resumed sessions)
{{agent.id}}, {{agent.name}}, and run context values.
4. Session resume behavior
AoA stores session IDs for resumable adapters.- Next heartbeat reuses the saved session automatically.
- This gives continuity across heartbeats.
- You can reset a session if context gets stale or confused.
- you significantly changed prompt strategy
- the agent is stuck in a bad loop
- you want a clean restart
5. Logs, status, and run history
For each heartbeat run you get:- run status (
queued,running,succeeded,failed,timed_out,cancelled) - error text and stderr/stdout excerpts
- token usage/cost when available from the adapter
- full logs (stored outside core run rows, optimized for large output)
6. Live updates in the UI
AoA pushes runtime/activity updates to the browser in real time. You should see live changes for:- agent status
- heartbeat run status
- task/activity updates caused by agent work
- dashboard/cost/activity panels as relevant
7. Common operating patterns
7.1 Simple autonomous loop
- Enable timer wakeups (for example every 300s)
- Keep assignment wakeups on
- Use a focused prompt template
- Watch run logs and adjust prompt/config over time
7.2 Event-driven loop (less constant polling)
- Disable timer or set a long interval
- Keep wake-on-assignment enabled
- Use on-demand wakeups for manual nudges
7.3 Safety-first loop
- Short timeout
- Conservative prompt
- Monitor errors + cancel quickly when needed
- Reset sessions when drift appears
8. Troubleshooting
If runs fail repeatedly:- Check adapter command availability (e.g.
claude/codex/cursor/opencode/gemini/hermesinstalled and authenticated). - Verify
cwdexists and is accessible. - Inspect run error + stderr excerpt, then full log.
- Confirm timeout is not too low.
- Reset session and retry.
- Pause agent if it is causing repeated bad updates.
- CLI not installed/authenticated
- bad working directory
- malformed adapter args/env
- prompt too broad or missing constraints
- process timeout
- If
ANTHROPIC_API_KEYis set in adapter env or host environment, Claude uses API-key auth instead of subscription login. AoA surfaces this as a warning in environment tests, not a hard error.
9. Security and risk notes
Local CLI adapters run unsandboxed on the host machine. That means:- prompt instructions matter
- configured credentials/env vars are sensitive
- working directory permissions matter
10. Minimal setup checklist
- Choose adapter (
claude_local,codex_local,cursor,opencode_local,gemini_local,hermes_local,openclaw,process, orhttp). See adapter reference docs for prerequisites and config fields. - Set
cwdto the target workspace. - Add bootstrap + normal prompt templates.
- Configure heartbeat policy (timer and/or assignment wakeups).
- Trigger a manual wakeup.
- Confirm run succeeds and session/token usage is recorded.
- Watch live updates and iterate prompt/config.