The ReAct loop coordinator for Astrid OS.
In the OS model, this capsule is the shell. It drives the reasoning-and-action cycle that makes an agent an agent: fetch context, think, act, observe, repeat.
Idle -> AwaitingIdentity -> AwaitingPromptBuild -> Streaming -> AwaitingTools -> Streaming -> ... -> Idle
The react loop contains no inference logic. It is pure control flow that coordinates five other capsules over the IPC event bus:
- Session - fetch conversation history, persist turn results
- Identity - build the system prompt from workspace config
- Prompt Builder - merge plugin contributions into the final prompt
- Provider (e.g. Anthropic) - stream LLM responses
- Tool Router - dispatch tool calls and collect results
This capsule does not call LLMs, execute tools, build prompts, or store messages. It orchestrates the capsules that do. Replacing this capsule with a different orchestration strategy (debate, MCTS, chain-of-verification) changes the agent's behaviour without touching any other capsule.
Ephemeral per-turn state is stored in the capsule KV store:
react.turn.{session_id}- current turn statereact.req2sess.{request_id}- request-to-session correlationreact.call2sess.{call_id}- tool call-to-session correlation
This is control flow state, not conversation history. History lives in the session capsule.
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown --releaseDual-licensed under MIT and Apache 2.0.
Copyright (c) 2025-2026 Joshua J. Bouw and Unicity Labs.