Your AI Project Manager That Actually Manages
OpenCaptain is a self-hosted, open-source project management agent that communicates through WhatsApp and Telegram. Unlike traditional PM tools where you check dashboards, OpenCaptain proactively reaches out, conducts check-ins, escalates blockers, and keeps your projects moving—all through natural conversation.
Traditional PM tools are passive—they wait for you to update them. OpenCaptain is different:
- Proactive: Sends daily standups, deadline reminders, and escalation alerts
- Conversational: Manage tasks through WhatsApp/Telegram, not another dashboard
- Context-Aware: Remembers project history and understands your team's workflow
- Composable: Build your workflow from modular blocks, not rigid templates
- Self-Hosted: Your data stays on your infrastructure. Bring your own LLM tokens.
- Natural language task creation: "Add task: Fix login bug, assign to @john, due Friday"
- Query your projects: "What's overdue?", "Show Sarah's tasks"
- Update status through chat: "Mark #123 as done"
Assemble your workflow from six composable block types:
| Block | Purpose |
|---|---|
| Role | Define team structure, permissions, reporting lines |
| Deliverable | Custom fields, status flows, task types |
| Check-in | Scheduled prompts (standups, output counts, mood) |
| Escalation | Time-based chains, auto-routing, fallback approvers |
| Visibility | Squad-scoped, cross-squad, or project-wide access |
| Integration | Connect Linear, GitHub, and external tools |
- Memory: Maintains project knowledge across conversations
- Auto-Detection: Creates tasks when it spots actionable items
- Summarization: Generates recaps for stakeholders
- BYOT: Bring your own tokens for Claude, GPT, or local models
- Multi-project support with per-person role assignments
- Hierarchical roles: Creator → Squad Lead → Op Lead → PM
- Squad-scoped visibility for sensitive projects
- Activity feed and notifications
- WhatsApp (primary channel)
- Telegram (secondary channel)
- Linear (bidirectional task sync)
- GitHub (PR/issue tracking)
| Layer | Technology |
|---|---|
| Runtime | Bun |
| Framework | Hono |
| Database | PostgreSQL + Drizzle ORM |
| Vector Store | pgvector (for RAG/memory) |
| Queue | BullMQ + Redis |
| LLM | OpenAI, Anthropic Claude, or local models |
| Auth | JWT + Argon2 |
| Validation | Zod |
| Docs | OpenAPI 3.1 + Swagger UI |
- Bun 1.0+
- PostgreSQL 15+ (with pgvector extension)
- Redis 7+
- LLM API key (OpenAI, Anthropic, or compatible)
# Clone the repository
git clone https://github.com/yourusername/openminion.git
cd openminion
# Install dependencies
bun install
# Copy environment template
cp .env.example .env
# Configure your environment (see Configuration below)
nano .env
# Start services
docker-compose up -d
# Run database migrations
bun run db:migrate
# Start the server
bun run devCreate a .env file with:
# Server
PORT=3000
NODE_ENV=development
# Database
DATABASE_URL=postgres://user:password@localhost:5432/openminion
# Redis
REDIS_URL=redis://localhost:6379
# Auth
JWT_SECRET=your-super-secret-key
JWT_REFRESH_SECRET=your-refresh-secret
# LLM (choose one or more)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
# Messaging
WHATSAPP_VERIFY_TOKEN=your-webhook-verify-token
WHATSAPP_ACCESS_TOKEN=your-whatsapp-token
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
# Email (for invitations)
RESEND_API_KEY=re_...
# Optional
CORS_ORIGIN=http://localhost:3000
LINEAR_API_KEY=lin_api_...Once connected, your team interacts naturally:
You: What's on my plate today?
OpenCaptain: Good morning! Here's your day:
Due Today:
• Fix auth redirect bug (#142) - High priority
• Review Sarah's PR for payment flow
Upcoming:
• API documentation update - Due tomorrow
You have standup in 2 hours. Want me to remind you?
You: Create task: Update landing page copy, assign to @marketing, due next Monday
OpenCaptain: Created task #156: "Update landing page copy"
• Assigned to: Marketing Team
• Due: Monday, Feb 10
• Priority: Normal
Should I add any details or subtasks?
Full REST API available at /api/v1:
# Create a task
curl -X POST http://localhost:3000/api/v1/tasks \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Fix login bug",
"assigneeId": "user_123",
"dueDate": "2026-02-10",
"priority": "high"
}'API documentation: http://localhost:3000/docs
┌─────────────────────────────────────────────────────────────┐
│ Messaging Channels │
│ (WhatsApp, Telegram, API) │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────┐
│ Hono API Layer │
│ (Routes, Middleware, Validation) │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────┐
│ Feature Modules │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Tasks │ │ Teams │ │ Roles │ │Check-ins │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Visibility│ │Escalation│ │ Recaps │ │ Memory │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────┐
│ LLM Layer │
│ (RAG, Conversations, Summarization) │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────┐
│ Infrastructure │
│ PostgreSQL + pgvector │ Redis │ BullMQ │
└─────────────────────────────────────────────────────────────┘
# Development
bun run dev # Start with hot reload
bun run start # Production start
bun run build # Build for production
# Database
bun run db:generate # Generate migrations
bun run db:migrate # Run migrations
bun run db:studio # Open Drizzle Studio
# Quality
bun run typecheck # TypeScript check
bun run lint # Lint code
bun run lint:fix # Fix lint issues
bun run format # Format code
bun run check # Full check (lint + format)
# Testing
bun run test # All tests
bun run test:unit # Unit tests only
bun run test:integration # Integration tests only
bun run test:coverage # With coverage report| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/auth/register |
Create account |
| POST | /api/v1/auth/login |
Login with email/password |
| POST | /api/v1/auth/refresh |
Refresh access token |
| POST | /api/v1/auth/logout |
Revoke all refresh tokens |
| POST | /api/v1/auth/magic-link/request |
Request magic link |
| GET | /api/v1/auth/magic-link/verify |
Verify magic link |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/teams |
Create team |
| GET | /api/v1/teams |
List user's teams |
| POST | /api/v1/projects |
Create project |
| GET | /api/v1/projects |
List projects |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/tasks |
Create task |
| GET | /api/v1/tasks |
List tasks |
| PATCH | /api/v1/tasks/:id |
Update task |
| DELETE | /api/v1/tasks/:id |
Delete task |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/conversations |
Start conversation |
| POST | /api/v1/conversations/:id/messages |
Send message |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/webhooks/telegram |
Telegram updates |
| POST | /api/v1/webhooks/whatsapp |
WhatsApp updates |
Full documentation at http://localhost:3000/docs
- Core infrastructure (auth, teams, roles)
- Team access & visibility controls
- LLM infrastructure (RAG, memory, conversations)
- Tasks & deliverables system
- Messaging channels (WhatsApp, Telegram)
- Check-ins & escalations
- Web UI & analytics dashboard
- Workflow builder & integrations
- Block marketplace
- Custom block creation tools
- Mobile PWA optimization
- Plugin system for community extensions
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Areas where we'd love help:
- New integration blocks (Slack, Discord, Notion)
- UI/UX improvements for the web dashboard
- Documentation and tutorials
- Translations
- Bug fixes and performance improvements
OpenCaptain is designed for self-hosting. Recommended specs:
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 4 GB | 8 GB |
| Storage | 20 GB SSD | 50 GB SSD |
| Database | PostgreSQL 15 | PostgreSQL 16 |
docker-compose up -d- Install Bun, PostgreSQL, Redis on your VPS
- Clone repo and configure
.env - Run migrations:
bun run db:migrate - Start with process manager:
pm2 start bun -- run start - Configure reverse proxy (nginx/caddy)
- Composable, modular systems
- Conversation-first interfaces
- Self-hosted, privacy-respecting software
- AI that suggests, humans confirm
- Time tracking / surveillance features
- Complex Gantt charts (integrate if needed)
- Native mobile apps (messaging apps are the interface)
- Autonomous AI without human approval
- Gamification that breeds toxic competition
MIT License - see LICENSE for details.
Built with inspiration from:
- n8n - Visual workflow philosophy
- Plane - Open-source PM approach
- Linear - Developer-first UX
- DailyBot - Conversational standups
OpenCaptain — Your AI captain steers the project, you build the ship.