Docs
Everything you need to wire Coworkkit into your app and give the agent something to do.
Coworkkit is a multimodal agent runtime that puts an AI co-worker inside your web app. It talks to your users, sees what's on screen, and operates the app as the signed-in user, under that user's permissions. You declare actions, surfaces, elements and cues with the React SDK and add one server-side token route; Coworkkit hosts the speech-to-text, LLM, text-to-speech and transport behind it. So the co-worker speaks and acts through your UI, instead of every action routing through backend tools you wire yourself.
Install the SDK and wire the closed-loop token route: a working AI co-worker in five steps.
The one prompt you paste into your AI coding agent to wire Coworkkit — public, key-placeholdered.
The closed loop, end to end: what your app declares, what Coworkkit runs, and why the key never reaches the browser.
The four primitives: declare what the agent can do, where the user is, what it can see and operate, and how to steer it.
Let the agent operate the page, not just talk about it: arming, the dual-sided gate, and what stays off-limits.
Gate an action by how much it costs to get wrong: open, a spoken confirm, or a hard on-screen click the agent can't fake.
Where to mount actions, how to pick the gate, the cross-page recipe, descriptions the agent picks correctly, and the mistakes worth skipping.
Next.js is a one-line drop-in; every other JS backend mints with mintSession; anything else calls the published POST /session contract, with PHP, Python, Ruby and Go recipes included.
After every session your backend learns what it consumed, for which user, and why it ended — by the sessions API (pull) and signed webhooks (push), on every plan. Plus Quotas: fixed on Free, adjustable on Starter, programmable per session on Growth.
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.
Install the Coworkkit skill (npx skills add coworkkit-ai/skills) to have your coding agent wire and verify the integration for you, or add the Coworkkit MCP server to Claude Code, Cursor, VS Code, Codex, Gemini CLI, Claude Desktop, or any MCP client — one command, one click, or a generic config block: live docs with no account, then session diagnostics and config after a one-time browser sign-in.
Give the button your brand's accent and dot style with a look code: one prop, edited from your Coworker's Appearance tab, no redeploy.
Offer your coworker in more than English: choose the supported languages + a default, pass the user's language at mint, and let end-users switch in the built-in picker.
See what the agent sees and did (live turns, the action timeline, latency): an in-app devtool you drop in during a build.
In a dev build the SDK renders a thin onboarding banner over your app and the co-worker knows it's a dev session — off by construction in production.
Multiple surfaces, the session lifecycle, minutes and metering, and testing your integration, once the basics are wired.
Every CoworkkitProvider prop and its default: button position and drag, the z-index escape valve, the confirmation timeout, the app-wide control baseline, locale, and the wiring props.
Which browsers work (Chromium, Safari, Firefox), the mic + WebRTC requirement, the mobile story, and the React / Next.js versions the SDK supports.
What a Coworkkit-enabled app connects to and from where: the hosts, ports and protocols to allow in a Content-Security-Policy or firewall, and why CORS, a proxy and your WAF need no work.
Where your users' voice sessions run: the account home region, the three modes (Best effort, Region affinity, Edge), what to send from your token route, and what Region affinity does and doesn't guarantee.
The agent connects but is silent, the mic is blocked, the button never appears: the usual first-run snags and their fixes.
Every error you can meet, by layer: the POST /session refusals and their reason tokens, what the button shows for each, the action-level codes your handlers and onActionRecord see, session-end reasons, and the microphone messages.