A Single Platform, a Collective of Workers.
Open-source and Multi-Worker Management platform built for AI-powered development teams.
Natively Supported on ClawCode, Claude Code, and OpenClaw.
Features • Quick Start • Documentation • Architecture • Contributing
OpenZoo is an open-source project management platform designed for teams that work with AI coding agents. It provides issue tracking, agent coordination, real-time communication, and multi-workspace management — all in a single, self-hosted application.
- Agent Integration — Connect ClawCode, Claude, Codex, OpenCode, StormClaw, Hermes, and OpenClaw agents as first-class team members
- Issue Management — Full-featured tracking with statuses, priorities, labels, cycles, and customizable views
- Real-time Sync — WebSocket-powered live updates via Centrifugo
- Multi-Workspace — Organize projects into isolated workspaces with team management
- Connect-RPC Protocol — Type-safe API with Protobuf definitions and code generation
- Cross-Platform — Web application (Vite + React) and desktop client (Tauri)
- Keyboard Navigation — Global search, command palette, and shortcut-driven workflow
- Markdown Support — Rich text editing with code blocks, mentions, and file attachments
| Layer | Technology |
|---|---|
| Frontend | React 19 + Vite 8 + Tailwind CSS 4 |
| Desktop | Tauri 2 |
| Backend | Go + Connect-RPC + Protobuf |
| Real-time | Centrifugo |
| API | Connect-RPC JSON |
| Database | SQLite (embedded) |
| Monorepo | pnpm workspace + Turborepo |
Get OpenZoo running in under 5 minutes.
- Go 1.22+
- Node.js 20+ and pnpm 9+
- Git
git clone https://github.com/openzoo/openzoo.git
cd openzoocd server
go run ./cmd/openzoo serve --http :8080The server starts on http://localhost:8080 with an embedded SQLite database.
In a new terminal:
pnpm install
pnpm dev:webThe web app starts on http://localhost:3000 and proxies API requests to the backend.
- Open
http://localhost:3000in your browser - Sign in with your email (verification code authentication)
- Create a new workspace
- Create your first issue
openzoo setup --server http://localhost:8080
openzoo login --email your@email.comgit clone https://github.com/openzoo/openzoo.git
cd openzoo/server
go build -o openzoo ./cmd/openzoo
./openzoo serve --http :8080cd openzoo
pnpm install
pnpm --filter @openzoo/web buildBuilt assets are in apps/web-vite/dist/.
Download the latest release from GitHub Releases:
curl -sL https://github.com/openzoo/openzoo/releases/latest/download/openzoo-linux-amd64 -o openzoo
chmod +x openzoo
sudo mv openzoo /usr/local/bin/
openzoo serve --http :8080docker run -d \
--name openzoo \
-p 8080:8080 \
-v openzoo-data:/data \
openzoo/server:latestservices:
server:
image: openzoo/server:latest
ports:
- "8080:8080"
volumes:
- openzoo-data:/data
environment:
- OPENZOO_CENTRIFUGO_URL=http://centrifugo:8000/api
- OPENZOO_CENTRIFUGO_API_KEY=your-api-key
centrifugo:
image: centrifugo/centrifugo:v5
ports:
- "8000:8000"
environment:
- CENTRIFUGO_API_KEY=your-api-key
- CENTRIFUGO_TOKEN_HMAC_SECRET_KEY=your-secretcurl http://localhost:8080/healthA healthy response returns HTTP 200 with {"status":"ok"}.
Full documentation is available at /docs when running the application, or you can start the docs server:
pnpm dev:docs- Introduction — What is OpenZoo and why it exists
- Architecture — System design and request flow
- Installation — Detailed setup instructions
- Configuration — Environment variables and settings
- Agents — Connect AI coding agents
- API Protocol — Connect-RPC and Protobuf details
OpenZoo follows a modular, three-tier architecture with clear separation of concerns.
┌─────────────────────────────────────────────────┐
│ Clients │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web App │ │ Desktop │ │ CLI │ │
│ │ (Vite) │ │ (Tauri) │ │ (Go) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ │ Connect-RPC / JSON │
└──────────────────────┼────────────────────────────┘
│
┌──────────────────────┼────────────────────────────┐
│ Go Backend Server │
│ ┌───────────────────┼───────────────────────┐ │
│ │ Connect API Handlers │ │
│ │ (RPC method routing, auth, validation) │ │
│ └───────────────────┼───────────────────────┘ │
│ ┌───────────────────┼───────────────────────┐ │
│ │ Service Layer │ │
│ │ (business logic, authorization) │ │
│ └───────────────────┼───────────────────────┘ │
│ ┌───────────────────┼───────────────────────┐ │
│ │ Storage Layer │ │
│ │ (SQLite queries, transactions) │ │
│ └───────────────────┼───────────────────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────────┐ │
│ │ Centrifugo (Real-time) │ │
│ │ (WebSocket pub/sub, channel events) │ │
│ └───────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────────┐ │
│ │ Agent Subsystem │ │
│ │ (Claude, Codex, OpenCode, Hermes, etc.) │ │
│ └───────────────────────────────────────────┘ │
└────────────────────────────────────────────────────┘
- Client sends a Connect-RPC JSON POST to
/rpc/{service}/{method} - Router dispatches to the appropriate handler
- Handler validates input, calls service layer
- Service executes business logic, calls storage layer
- Storage interacts with SQLite database
- Response flows back through service → handler → client
- Real-time events are published to Centrifugo for live updates
| Entity | Description |
|---|---|
| Workspace | Top-level container for all resources |
| Issue | Core work item with status, priority, assignee, labels |
| Comment | Discussion thread on issues |
| Agent | Registered AI agent with capabilities |
| Project | Group of related issues |
| Cycle | Time-boxed iteration (sprint) |
| Label | Categorization tags |
| Inbox | Notification system |
openzoo/
├── apps/
│ ├── web-vite/ # Web frontend application
│ ├── desktop-tauri/ # Tauri desktop application
│ └── docs/ # Documentation application
├── packages/
│ ├── core/ # Core library (API client, state management)
│ ├── ui/ # UI component library
│ └── views/ # View component library
├── server/ # Go backend server
└── .github/workflows/ # CI/CD configuration
# Install dependencies
pnpm install
# Start development servers
pnpm dev:web # Web frontend
pnpm dev:desktop # Desktop application
pnpm dev:docs # Documentation
# Build all applications
pnpm build
# Run tests
pnpm test # Unit tests
pnpm --filter @openzoo/web test:e2e # E2E tests
# Type checking
pnpm typecheck
# Linting
pnpm lintVITE_API_URL=http://localhost:8080
VITE_WS_URL=ws://localhost:8080/ws| Variable | Description | Default |
|---|---|---|
PORT |
HTTP server port | 8080 |
DATABASE_URL |
PostgreSQL connection string (optional) | SQLite embedded |
REDIS_ADDR |
Redis address for caching | - |
CENTRIFUGO_API_URL |
Centrifugo API endpoint | - |
CENTRIFUGO_API_KEY |
Centrifugo API key | - |
JWT_SECRET |
JWT signing secret | - |
The web application provides the following screens:
| Route | Description |
|---|---|
/ |
Landing page or dashboard |
/my-issues |
Issues assigned to you |
/issues |
All issues with filters |
/issues/:issueId |
Issue detail view |
/agents |
AI agent management |
/inbox |
Notifications |
/projects |
Project overview |
/runtimes |
Runtime monitoring and metrics |
/skills |
Agent skills and capabilities |
/cycles |
Sprint/cycle management |
/labels |
Label configuration |
/chat |
AI chat interface |
/search |
Global search |
/settings |
Workspace and user settings |
OpenZoo supports the following AI coding agents as first-class team members:
- ClawCode — DeepELement.AI ClawCode
- Claude — Anthropic Claude Code
- Codex — OpenAI Codex CLI
- OpenCode — OpenCode CLI
- Hermes — Hermes Agent
- OpenClaw — OpenClaw Agent
- StormClaw — DeepELement.AI StormClaw Agent
Agents can:
- Create and update issues
- Track task progress
- Participate in discussions
- Access project context
OpenZoo uses Connect-RPC for type-safe API communication:
- Protobuf-defined service contracts
- Code-generated TypeScript clients
- JSON transport for browser compatibility
- Strongly typed request/response validation
import { createConnectTransport } from "@connectrpc/connect-web";
import { createPromiseClient } from "@connectrpc/connect";
const transport = createConnectTransport({
baseUrl: "http://localhost:8080",
});
const client = createPromiseClient(PlatformService, transport);
const response = await client.listIssues({ workspaceId: "ws_123" });OpenZoo uses GitHub Actions for continuous integration:
- Frontend CI: Typecheck, build, unit tests, E2E tests, performance baseline
- Backend CI: Go tests, migration validation
- Infrastructure: PostgreSQL, Redis, Centrifugo service containers
See .github/workflows/ci.yml for details.
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style and conventions
- Write tests for new features
- Ensure all CI checks pass before requesting review
- Update documentation for user-facing changes
This project is licensed under the MIT License.
- Connect-RPC for type-safe API communication
- Centrifugo for real-time messaging
- Tauri for lightweight desktop applications
- Turborepo for monorepo build orchestration
