Quickstart (5 min)
1. Clone the repo
Section titled “1. Clone the repo”git clone https://github.com/workforce0/workforce0cd workforce02. Set your first API key
Section titled “2. Set your first API key”The stack only needs one AI provider key to boot. Pick the one you already have.
cp .env.example .env# Open .env in your editor and set ONE of:# GEMINI_API_KEY=... (recommended for quickstart — free tier exists)# ANTHROPIC_API_KEY=...# OPENAI_API_KEY=...Set two other required values:
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/workforce0POSTGRES_PASSWORD=postgresREDIS_URL=redis://redis:6379JWT_SECRET=change-me-to-something-32-chars-longThe JWT_SECRET must be at least 32 characters. Use openssl rand -hex 32
if you don’t want to think about it.
3. Bring the stack up
Section titled “3. Bring the stack up”docker compose -f docker-compose.prod.yml up -dThis boots five containers:
| Container | Port | What it is |
|---|---|---|
workforce0-postgres | 5432 | Your primary database |
workforce0-redis | 6379 | Queue + cache + pub/sub |
workforce0-backend | 3000 | Fastify API + orchestration runtime |
workforce0-frontend | 3001 | Next.js audit UI |
workforce0-agent | — | Local code-gen daemon (optional) |
First boot runs migrations and seeds the default skill / subagent library. It takes ~45 seconds on a warm machine.
4. Open the setup wizard
Section titled “4. Open the setup wizard”Point your browser at:
http://localhost:3001Create the first admin account (workspace owner). The wizard walks you through:
- Workspace name — cosmetic, used in Slack messages.
- AI providers — paste the same key(s) you put in
.envso the UI knows what’s available. (You can skip this if you trust the env.) - First integration — connect Slack / Google Chat / Teams so the chief-of-staff agent has somewhere to post.
5. Upload a meeting transcript
Section titled “5. Upload a meeting transcript”From the dashboard:
- Click Upload meeting.
- Paste the transcript of any meeting — a real one you just had, or
a sample like
docs/samples/pm-review-meeting.txt. - Give it a project (“Acme Mobile Redesign” is fine).
- Click Generate brief.
Within ~30 seconds the chief-of-staff agent:
- Drafts a brief from the transcript.
- Posts a summary to your connected Slack / Teams channel.
- Asks a clarifying question if anything’s ambiguous.
6. Approve from Slack
Section titled “6. Approve from Slack”The posted message has three buttons: Approve, Redirect, and Pause. Tap Approve.
The chief-of-staff responds in the same thread within 5 seconds:
Plan accepted (4 steps). Dispatching to the team. I’ll post back when the first ticket comes back with a result.
Open the web UI’s Activity page and you’ll see the 4 child tickets,
each assigned to a role (ba_agent, architect, dev_agent, qa_agent).
Congratulations — your first brief is live. From here:
- Connect Jira so
dev_agenttickets sync to your tracker: Jira integration. - Add a second AI provider for AI Council quorum: AI Council.
- Enable voice dial-in for phone-first meetings: Voice dial-in.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Fix |
|---|---|
docker compose up fails on postgres | Port 5432 is taken — stop your host Postgres. |
| Setup wizard keeps asking for a key | The .env provider key is malformed; paste it again. |
| No Slack messages arrive | Check the Integrations page — webhook URL not set. |
| Brief generation hangs > 2 min | Free-tier Gemini rate-limits; add an OpenAI / Anthropic key. |
If nothing here matches, open an issue
with your docker compose logs backend output.