Skip to content

Quickstart (5 min)

Terminal window
git clone https://github.com/workforce0/workforce0
cd workforce0

The stack only needs one AI provider key to boot. Pick the one you already have.

Terminal window
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:

.env
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/workforce0
POSTGRES_PASSWORD=postgres
REDIS_URL=redis://redis:6379
JWT_SECRET=change-me-to-something-32-chars-long

The JWT_SECRET must be at least 32 characters. Use openssl rand -hex 32 if you don’t want to think about it.

Terminal window
docker compose -f docker-compose.prod.yml up -d

This boots five containers:

ContainerPortWhat it is
workforce0-postgres5432Your primary database
workforce0-redis6379Queue + cache + pub/sub
workforce0-backend3000Fastify API + orchestration runtime
workforce0-frontend3001Next.js audit UI
workforce0-agentLocal code-gen daemon (optional)

First boot runs migrations and seeds the default skill / subagent library. It takes ~45 seconds on a warm machine.

Point your browser at:

http://localhost:3001

Create the first admin account (workspace owner). The wizard walks you through:

  1. Workspace name — cosmetic, used in Slack messages.
  2. AI providers — paste the same key(s) you put in .env so the UI knows what’s available. (You can skip this if you trust the env.)
  3. First integration — connect Slack / Google Chat / Teams so the chief-of-staff agent has somewhere to post.

From the dashboard:

  1. Click Upload meeting.
  2. Paste the transcript of any meeting — a real one you just had, or a sample like docs/samples/pm-review-meeting.txt.
  3. Give it a project (“Acme Mobile Redesign” is fine).
  4. 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.

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_agent tickets 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.
SymptomFix
docker compose up fails on postgresPort 5432 is taken — stop your host Postgres.
Setup wizard keeps asking for a keyThe .env provider key is malformed; paste it again.
No Slack messages arriveCheck the Integrations page — webhook URL not set.
Brief generation hangs > 2 minFree-tier Gemini rate-limits; add an OpenAI / Anthropic key.

If nothing here matches, open an issue with your docker compose logs backend output.