Three identities
A new attempt does not imply a new prompt. A new prompt does imply a new turn. This is what lets OpenGeni recover the same logical turn after a worker dies without duplicating external effects.
The event log
Every session event is appended to a Postgres event log with a contiguous sequence number. Clients read it two ways:- Replay: fetch events after a sequence.
- Stream: subscribe over Server-Sent Events. The SDK resumes by sequence after a drop, backfills gaps from the replay endpoint, and suppresses duplicates, so a browser reload, a new client, or an audit sees the same history.
Sending input
- Send appends a prompt. If a turn is running, the message queues behind it. Queued messages stay visible, editable, and reorderable until the worker claims them.
- Steer delivers now: it moves your message to the front and interrupts the running turn.
- Pause and Resume hold and release the workstream without creating queue items.
- Cancel is terminal. It drains queued work for the session and its children and fences the subtree.
Attached context
A session can carry repositories, uploaded files, workspace documents, selected tools, and Skills. Tool selection is durable session state: an explicit tool list is taken verbatim, and omitting it selects the workspace default.Child sessions
An agent can spawn child sessions for parallel or delegated work. Children run as ordinary sessions, and their terminal results are delivered back to the parent as durable input the parent’s next turn sees.Visibility
Workspaces are shared by their members, and sessions in a shared workspace are visible to members by default. An organization owner can allow members to create “Only me” sessions that only their owner can see. Personal workspaces belong to one person.Agent access in product integrations
agentAccess controls how an agent reaches other session trees within its workspace:
The more restrictive side wins across trees. Children inherit the parent’s scope and can only narrow it. These rules do not make product-created chats invisible to authorized human workspace members or organization API keys. The product backend must still authorize each user’s requests.
The chat API defaults to
agentAccess: "session", while raw session creation defaults to "workspace". An integration can separately choose where the agent saves Memory. Access scope and memory are frozen when a conversation is created; reopening the same conversation does not reconfigure them. See Integrate your product.