# Agent Loop (Current)
The runtime loop is centered on Acheron chat + job processing:
1. Client writes chat input to `/agents/self/chat/control/input`.
2. Runtime queues a chat job and returns a job id.
3. Job status is available at `/agents/self/jobs/<job_id>/status.json`.
4. Job result text is available at `/agents/self/jobs/<job_id>/result.txt`.
5. Optional event waits can be used via `/agents/self/events/*`.
The WebSocket gateway enforces unified-v2 control negotiation and maintains per-session bindings to `(agent_id, project_id)`.
## Implementation Pointers
- Acheron session & jobs: `src/fsrpc_session.zig`
- Runtime server: `src/runtime_server.zig`
- Gateway/session handling: `src/server_piai.zig`