One account can own several coworkers — one per website, product or persona. Each coworker has its own name, persona, voice, look, API key, sessions and usage; the plan, the minute balance, the region home, your team and the webhook endpoint stay one per account. A one-coworker account behaves exactly as before — nothing changes until you add a second.
What is per account, what is per coworker
The rule: money, identity and integrations are per account; behaviour and traffic are per coworker.
| Per account | Per coworker |
|---|---|
| Plan, invoices & the minute balance (one shared wallet) | Name & persona (app, glossary, boundaries) |
| The webhook endpoint & signing secret | Voice, languages & the on-page look |
| Region home & team members | The API key (one active per coworker) & its sessions API |
| Close account & MCP consent | Quotas, sessions, usage records & dashboard |
How many you can have
Your plan sets the number of coworkers you can create:
- Free: 1 coworker
- Starter: 2 coworkers
- Growth: 5 coworkers
- Scale: unlimited coworkers
- Enterprise: unlimited coworkers
The card row at the top of every coworker page is the persona strip: one card per coworker (the selector — the page below follows it), then a New coworker slot. Under your limit the slot opens an inline name field and hands you the new coworker's key once; at your limit it shows a neutral upgrade note linking to Plan & Billing. Dropping to a lower plan never deletes a coworker — every existing one keeps working; you just can't add another until you're back under the limit.
Keys, webhooks & deleting
Each coworker has its own API key — a key is a coworker, so your token route picks which coworker to mint against by which key it holds. There is still one webhook endpoint per account: every event carries a top-level coworker ({ id, name }) naming which coworker it came from, so a single receiver serves them all (see Usage & webhooks). Deleting a coworker from its card menu removes it and its session history for good; the account's wallet, webhook and invoices are untouched. You always keep at least one coworker — closing the whole account is a separate Danger-zone action.
Recipe: A/B test two coworkers in one app
Coworkkit doesn't run experiments for you — but two coworkers make an A/B test easy to wire yourself. Create two coworkers (say a control and a variant persona), hold both keys in your token route, and pick which to mint against from your own bucketing — a stable hash of your user's id, or whatever your experiment tool already decides:
import { createHash } from "node:crypto";
// Two coworkers, two keys — held server-side, never in the browser.
const KEYS = { control: process.env.CK_KEY_CONTROL!, variant: process.env.CK_KEY_VARIANT! };
function bucketFor(userId: string): "control" | "variant" {
// Stable per user: the same user always lands in the same bucket.
const n = createHash("sha256").update(userId).digest()[0];
return n % 2 === 0 ? "control" : "variant";
}
export async function POST(req: Request) {
const { userId } = await getVerifiedUser(req); // your auth
const apiKey = KEYS[bucketFor(userId)];
return Response.json(await mintSession({ apiKey, user: { id: userId } }));
}Compare the two on the dashboard (switch coworkers in the strip) and split your webhook results by coworker.id. What Coworkkit does not do: no bucketing in the SDK, no experiment UI, and one shared wallet pays for both coworkers. The takeover lock is per coworker, so a user whose bucket flips mid-day could briefly hold one live session on each — enable and guide, you wire the experiment.