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
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.
inboxes: (_agent, ctx) =>
ctx.messageText.includes("approve")
? loadApprovalInbox(ctx.workspaceId, ctx.agentId)
: [],Shared workspace primitives
| Primitive | What it carries |
|---|---|
| Workspace entries | Structured shared state such as briefs, decisions, research signals, and artifact references. |
| Shared inbox | Handoffs, review requests, external results, and background-work reconvening. |
| Tasks | Owned, status-bearing units of work correlated to an agent and optionally a conversation. |
| Data environment | Scoped 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.