nvoken
DocumentationYour app owns the state

Concepts

Your app owns the state

nvoken owns durable agent execution while your application remains authoritative for customers, permissions, and product data.

Your application and nvoken have different jobs.

Your application ownsnvoken owns
Users, memberships, plans, and permissionsOwner-namespaced Agents and immutable revisions
Product records and business rulesDurable Turns and execution checkpoints
Which actions a user may takeOptional Conversations and their transcripts
Product-level orchestration and UIOptional MemorySpaces and memory entries
Customer billing and entitlementsModel routing, tool coordination, usage, and limits

Coordinates are explicit

An App-scoped credential operates only inside its App. Every Turn states a tenant. An optional user attributes the actor, but it is not a user record or an authentication boundary.

Agent ownership, Conversation ownership, Turn actor, and MemorySpace scope are independent. For example, an App-owned Agent can run for tenant acme, attribute the Turn to user alice, continue a tenant-owned Conversation, and use a shared tenant MemorySpace named support. None of those choices implies another.

Agent keys are unique only inside their exact owner namespace:

await client.agent("support");
await client.agent("support", { ownedBy: { tenant: "acme" } });
await client.agent("support", {
  ownedBy: { tenant: "acme", user: "alice" },
});

There is no App-to-tenant-to-user key precedence. The caller selects the owner namespace before key lookup.

Tool authorization stays with the host

nvoken can prove which App, tenant, actor, Agent revision, Conversation, and MemorySpace belong to a Turn. It cannot decide whether that actor may refund an order or read a particular product record. Check product authorization in your application before starting work and again when executing host tools.