Free · MIT · Open source
Open Coworkers
Open-source AI coworkers: specialist agents with their own roles and tool permissions, a shared workspace of documents, and explicit hand-offs between them.
Features
What it does
A team out of the box
Ria, a Researcher (web search, page reading, workspace notes), and Wes, a Writer, who works only from the workspace.
Permissions per coworker
Each coworker has a policy per tool. Wes cannot search the web because his policy denies it on the server, not because a prompt asks him not to.
Shared workspace with versions
Coworkers create and revise documents in one workspace, and old versions are kept.
Explicit hand-offs
Ria saves cited notes and hands off; Wes's turn starts in the same view when hers ends.
Approvals and audit
Every save Wes makes waits for your approval, and every tool call writes an audit row first.
Change the team in one file
coworkers.config.ts defines each coworker's name, role, instructions and tool policies. Add a coworker by adding an entry.
One key, every model
Use with your CompanyFabric key
- 1
Create an account and make a key on the keys page. New accounts get starter credit.
- 2
Put it in the template's
.env.companyfabric/autopicks a suitable model per request, and the exact charge of each turn comes back with the answer. - 3
Run it:
pnpm devfor lite (Vercel works), ordocker compose upfor Hermes. With no key it runs a clearly labelled demo.
OPENAI_BASE_URL=https://api.companyfabric.com/v1
OPENAI_API_KEY=sk-cf-…
MODEL=companyfabric/autoOpenAI directly, or a local server such as Ollama, LM Studio or vLLM, works too: any OpenAI-compatible endpoint with tool calling.
Runtimes
Lite or Hermes
Lite runs the agent loop in the Next.js server. Hermes runs each turn in a Hermes Agent container (v0.22.5, pinned by digest), which calls the app's tools back over MCP, so policies, approvals and the audit log are the same.
| Capability | Lite | Hermes |
|---|---|---|
| Specialist coworkers with their own tool permissions | Yes | Yes |
| Shared workspace documents, with versions | Yes | Yes |
| Hand-offs between coworkersQueued: the next coworker starts when the current one finishes | Yes | Yes |
| Approval before side effects | Yes | Yes |
| Audit row before every tool call | Yes | Yes |
| Web search with numbered citations | Yes | Yes |
| Memory across threadsHermes memory is shared by the whole team (one Hermes profile) | No | Yes |
| Files, terminal, browser in a sandboxEnable toolsets in hermes/config.yaml | No | Off by default |
| Recurring responsibilities (cron)Hermes cron works; this UI does not manage schedules yet | No | Not in the UI yet |
| Runs on serverless hosting (Vercel) | Yes | No |
What is proven
Status
Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI); Contract tests: permissions per coworker, approvals, workspace versions, hand-offs.
- implemented-untestedA live Ria to Wes hand-off with a real model
- implemented-untestedSearch through Parallel or Exa
- implemented-untestedA Hermes turn with a real model
- not yetManaging recurring responsibilities from the UI
Configuration
Environment
| Variable | Default | What it is |
|---|---|---|
OPENAI_BASE_URL | https://api.companyfabric.com/v1 | Any OpenAI-compatible chat.completions endpoint with tool calling. |
OPENAI_API_KEY | none | The model key. With none set, the app runs a labelled DEMO. |
MODEL | companyfabric/auto | The model id. companyfabric/auto picks a suitable model per request. |
SEARCH_PROVIDER | parallel | parallel (free, rate-limited, no key) or exa. companyfabric is not released yet. |
PARALLEL_API_KEY | none | Lifts Parallel's free-tier limits. |
EXA_API_KEY | none | Needed when SEARCH_PROVIDER=exa. |
COMPANYFABRIC_SEARCH_ENABLED | false | CompanyFabric search is not released yet; leave it off. |
RUNTIME | none | lite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise. |
HERMES_URL | none | Set for you by docker-compose.yml. |
HERMES_API_KEY | none | Hermes only. Generate with: openssl rand -hex 32 |
TOOL_TOKEN | none | Hermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32 |
DATA_DIR | ./data | Where the SQLite database lives. |
MIT
License
Open Coworkers is MIT-licensed, © 2026 Creative Tim. Its UI is adapted from AI Elements (Apache-2.0) and shadcn/ui (MIT).
Not affiliated with any company whose products offer AI coworkers.