Give agents a world / 06

Conversations, inboxes, and shared work

The agent instance is an identity. A conversation is a data primitive. One instance can hold many simultaneous conversations while sharing selected memory, workspace entries, tasks, and inbox items across them.

Conversations are first-class

conversation.tstypescript
const campaign = await foundry.createConversation(lead.id, {
  title: "Winter launch",
  workspaceId: "brand-q4",
});

const retail = await foundry.createConversation(lead.id, {
  title: "Retail activation",
  workspaceId: "brand-q4",
});

await Promise.all([
  foundry.send(lead.id, campaign.id, "Develop three creative territories."),
  foundry.send(lead.id, retail.id, "Adapt the approved platform for stores."),
]);

The messages are isolated by conversation. The instance can still resolve the same durable brand memory and shared workspace, enabling parallel campaigns without copying context between prompts.

Inboxes are lazily loaded

An inbox is not a static global mailbox. The definition resolves the relevant inboxes for the current agent instance, conversation, message, and policy. An approval inbox might mount only for production work; a private operations inbox might mount only for the lead.

agent.tstypescript
inboxes: (_agent, ctx) =>
  ctx.messageText.includes("approve")
    ? loadApprovalInbox(ctx.workspaceId, ctx.agentId)
    : [],

Shared workspace primitives

PrimitiveWhat it carries
Workspace entriesStructured shared state such as briefs, decisions, research signals, and artifact references.
Shared inboxHandoffs, review requests, external results, and background-work reconvening.
TasksOwned, status-bearing units of work correlated to an agent and optionally a conversation.
Data environmentScoped values available to the workspace, instance, or conversation without turning them into environment variables.

Pass artifacts, not copied prompt context

Agents should hand off a workspace path, entry, or artifact reference. The next agent reads the canonical file in its mounted environment. That preserves provenance and lets the inspector show who produced, reviewed, and changed it. Messages explain intent; artifacts carry the work.

Background work can reconvene

glove_foundry_background creates correlated work without blocking the current pass. With reconvene: true, its outcome returns through the shared inbox and wakes the parent conversation with a visible handoff rather than hiding another model call inside one tool result.