CoworkkitDocs
Sign inCreate account
© 2026 CoworkkitTerms of ServiceRefund & Cancellation PolicyPrivacy PolicyCookie PolicyData & Security

Start here

  • Getting started
  • How it works

Declaring your app

  • Actions, surfaces & elements
  • Hand mode
  • Control & confirmation
  • Patterns & best practices

Integrate

  • Backends
  • Usage, quotas & webhooks
  • Multiple coworkers
  • Connect your coding agent

Polish & operate

  • Appearance
  • Languages
  • The Watch panel

Reference

  • Advanced
  • Configuration
  • Browser & framework support
  • Network requirements
  • Regions
  • Troubleshooting & FAQ
  • Error codes
All docs

Docs

Multiple coworkers

One account can own several coworkers — one per website, product or persona — each with its own name, persona, voice, look, key and sessions, while the plan, minutes and webhook stay one per account. What's shared, what's per coworker, the plan limits, and the A/B recipe.

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 accountPer coworker
Plan, invoices & the minute balance (one shared wallet)Name & persona (app, glossary, boundaries)
The webhook endpoint & signing secretVoice, languages & the on-page look
Region home & team membersThe API key (one active per coworker) & its sessions API
Close account & MCP consentQuotas, 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:

your token route decides the bucket
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.

PreviousUsage, quotas & webhooksNextConnect your coding agent

Machine-readable: this page as Markdown · all docs (llms.txt) · everything in one file (llms-full.txt)