{"slug": "unreal-agent-an-async-first-agent-harness", "title": "Unreal Agent An async-first agent harness", "summary": "Unreal Labs released Unreal Agent, an async-first agent harness organized into a harness library, cmd executables, and benchmark runners. The harness defines an input/inbox/session model with a coordinator, session store, context builder, LLM adapter, tool registry, tool translator, and operation manager, and it commits to versioned, serializable session-store items and operations with explicit errors on unsupported session versions during resume. Tool translators run synchronously on the coordinator's event loop and must not perform I/O, while operations are dispatched for asynchronous execution and can be proxied to a remote sandbox.", "body_md": "An async-first agent harness from Unreal Labs.\n\n- [harness/](https://github.com/unreallabsai/unreal-agent/blob/main/harness) — the library.\n- [cmd/](https://github.com/unreallabsai/unreal-agent/blob/main/cmd) — executables that use the library.\n- [benchmarks/](https://github.com/unreallabsai/unreal-agent/blob/main/benchmarks) — benchmark runners.\n\n- **Input** : an event with a caller-supplied globally unique ID that remains\nstable across redeliveries.\n- **Inbox** : session-scoped, in-memory deduplication of external, control, and\ncrash inputs.\n- **Session** : append-only persisted history that can be forked.\n- **LLM turn** : the coordinator-managed sequence around one logical LLM request.\n- **Tool** : a capability described by a schema and bound to a translator.\n- **Tool call** : a model-produced request to use a tool.\n- **Tool translator** : validates a tool call and translates it into one or more\noperations. It runs synchronously on the coordinator's event loop and must not\nperform I/O or suspend the loop.\n- **Tool call status** : the translation outcome: a validation error or references\nto submitted operations. Operation execution state is tracked separately;\nthe translator formats these into a model-facing result.\n- **Operation** : a serializable description of work produced by a tool translator\nfor asynchronous execution. Implementations are encouraged to use the available[primitives](https://github.com/unreallabsai/unreal-agent/blob/main/harness/primitives) .\n\n| Component | Responsibility | \n|---|---|\n| Session inbox | Volatile, session-scoped input idempotency. | \n| Coordinator | Persist accepted inputs, run LLM turns, resolve tool translators through the registry, and dispatch committed operations. | \n| Session store | Persist canonical session history and operation state; support recovery and forks; atomically record tool-call status with operations. | \n| Context builder | Statefully assemble model input in memory. Return the model input together with a record of anything omitted, truncated, or compacted. Perform no I/O and accept no persistence dependencies. | \n| LLM Adapter | Send prepared model input to a provider and return a normalized completed response. Own authentication, cancellation, and provider errors. | \n| Tool registry | Own the fixed Bash, ViewImage, and skill-use definitions and their translators; expose the host-selected set. | \n| Tool translator | Validate a tool call and produce its status and operations. Format a recorded call status and prepared operation output into model results. Perform no I/O. | \n| Operation manager | Actor runtime for durable operations. The local implementation is swappable. | \n\nHarness components are composable, and alternative implementations of their interfaces are encouraged.\n\nWe intend to preserve these invariants:\n\n- Session-store items are serializable, and the storage format is versioned.\n- We'll do our best to maintain backwards compatibility for sessions. An unsupported session version will always cause an explicit error on resume.\n- Operations are versioned and always serializable.\n\nFor example, a proxy operations manager can send serialized operations to a local operations manager running in a process inside a remote sandbox, allowing tools to execute there.", "url": "https://wpnews.pro/news/unreal-agent-an-async-first-agent-harness", "canonical_source": "https://github.com/unreallabsai/unreal-agent", "published_at": "2026-09-23 06:19:27+00:00", "updated_at": "2026-09-23 06:53:50.620277+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "large-language-models"], "entities": ["Unreal Labs", "Unreal Agent"], "alternates": {"html": "https://wpnews.pro/news/unreal-agent-an-async-first-agent-harness", "markdown": "https://wpnews.pro/news/unreal-agent-an-async-first-agent-harness.md", "text": "https://wpnews.pro/news/unreal-agent-an-async-first-agent-harness.txt", "jsonld": "https://wpnews.pro/news/unreal-agent-an-async-first-agent-harness.jsonld"}}