unreallabsai/unreal-agent

Async-first agent harness

Go

1,761

132 commits

updated Sep 23, 2026

See the code

See what people are saying

SourceMessageScoreDate

Unreal Agent An async-first agent harness

1

Sep 23, 2026

Unreal Agent

238

Sep 22, 2026

README

Unreal Agent

An async-first agent harness from Unreal Labs.

Glossary

  • Input: an event with a caller-supplied globally unique ID that remains stable across redeliveries.
  • Inbox: session-scoped, in-memory deduplication of external, control, and crash inputs.
  • Session: append-only persisted history that can be forked.
  • LLM turn: the coordinator-managed sequence around one logical LLM request.
  • Tool: a capability described by a schema and bound to a translator.
  • Tool call: a model-produced request to use a tool.
  • Tool translator: validates a tool call and translates it into one or more operations. It runs synchronously on the coordinator's event loop and must not perform I/O or suspend the loop.
  • Tool call status: the translation outcome: a validation error or references to submitted operations. Operation execution state is tracked separately; the translator formats these into a model-facing result.
  • Operation: a serializable description of work produced by a tool translator for asynchronous execution. Implementations are encouraged to use the available primitives.

Components

ComponentResponsibility
Session inboxVolatile, session-scoped input idempotency.
CoordinatorPersist accepted inputs, run LLM turns, resolve tool translators through the registry, and dispatch committed operations.
Session storePersist canonical session history and operation state; support recovery and forks; atomically record tool-call status with operations.
Context builderStatefully 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.
LLM AdapterSend prepared model input to a provider and return a normalized completed response. Own authentication, cancellation, and provider errors.
Tool registryOwn the fixed Bash, ViewImage, and skill-use definitions and their translators; expose the host-selected set.
Tool translatorValidate 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.
Operation managerActor runtime for durable operations. The local implementation is swappable.

Extending the harness

Harness components are composable, and alternative implementations of their interfaces are encouraged.

We intend to preserve these invariants:

  • Session-store items are serializable, and the storage format is versioned.
  • We'll do our best to maintain backwards compatibility for sessions. An unsupported session version will always cause an explicit error on resume.
  • Operations are versioned and always serializable.

For 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.

Contributors

g-logunov

64 commits

maxim092001

43 commits

discobot

19 commits

sashabaranov

5 commits

unreallabsai/unreal-agent

Async-first agent harness

Go

1,761

132 commits

updated Sep 23, 2026

See the code

See what people are saying

SourceMessageScoreDate

Unreal Agent An async-first agent harness

1

Sep 23, 2026

Unreal Agent

238

Sep 22, 2026

README

Unreal Agent

An async-first agent harness from Unreal Labs.

Glossary

  • Input: an event with a caller-supplied globally unique ID that remains stable across redeliveries.
  • Inbox: session-scoped, in-memory deduplication of external, control, and crash inputs.
  • Session: append-only persisted history that can be forked.
  • LLM turn: the coordinator-managed sequence around one logical LLM request.
  • Tool: a capability described by a schema and bound to a translator.
  • Tool call: a model-produced request to use a tool.
  • Tool translator: validates a tool call and translates it into one or more operations. It runs synchronously on the coordinator's event loop and must not perform I/O or suspend the loop.
  • Tool call status: the translation outcome: a validation error or references to submitted operations. Operation execution state is tracked separately; the translator formats these into a model-facing result.
  • Operation: a serializable description of work produced by a tool translator for asynchronous execution. Implementations are encouraged to use the available primitives.

Components

ComponentResponsibility
Session inboxVolatile, session-scoped input idempotency.
CoordinatorPersist accepted inputs, run LLM turns, resolve tool translators through the registry, and dispatch committed operations.
Session storePersist canonical session history and operation state; support recovery and forks; atomically record tool-call status with operations.
Context builderStatefully 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.
LLM AdapterSend prepared model input to a provider and return a normalized completed response. Own authentication, cancellation, and provider errors.
Tool registryOwn the fixed Bash, ViewImage, and skill-use definitions and their translators; expose the host-selected set.
Tool translatorValidate 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.
Operation managerActor runtime for durable operations. The local implementation is swappable.

Extending the harness

Harness components are composable, and alternative implementations of their interfaces are encouraged.

We intend to preserve these invariants:

  • Session-store items are serializable, and the storage format is versioned.
  • We'll do our best to maintain backwards compatibility for sessions. An unsupported session version will always cause an explicit error on resume.
  • Operations are versioned and always serializable.

For 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.

Contributors

g-logunov

64 commits

maxim092001

43 commits

discobot

19 commits

sashabaranov

5 commits

Languages

Go

95.4%

Python

4.4%