Meeboter joins video meetings as a bot participant, enabling:
- Chat: Send messages programmatically
- Recording: Capture audio/video to S3
- Events: Real-time participant tracking via webhooks
- Fast deployment: Bot pool system: ~30s vs 7+ min cold start
Supports: Google Meet, Microsoft Teams, and Zoom (chat, recording, participant tracking)
git clone https://github.com/Payme-Works/meeboter.git
cd meeboter
bun install
docker compose up -d
cp apps/milo/.env.example apps/milo/.env
bun turbo db:migrate --filter=@meeboter/milo
bun turbo dev --filter=@meeboter/miloOpen localhost:3000
For manual operations, testing, and monitoring:
- Open the web UI at
localhost:3000 - Navigate to Bots → New Bot
- Paste meeting URL, configure options
- Click Deploy
- Monitor status, logs, and events in real-time
For programmatic automation and product integrations:
# Create a bot
POST /bots
{"meetingUrl": "https://meet.google.com/xxx"}
# Deploy it
POST /bots/{id}/deploy
# Send chat message
POST /chat/messages
{"botId": 123, "message": "Hello!"}
# Get events
GET /events/bot/{botId}| Platform | Model | Cost | Best For |
|---|---|---|---|
| Coolify | Pool-based | ~$50-90/mo | Self-hosted, predictable workloads |
| Kubernetes | Pod-based | ~$60-200/mo | Existing K8s, multi-cloud |
| AWS ECS | Task-based | ~$80-500/mo | Auto-scaling, pay-per-use |
See docs/DEPLOYMENT.md for setup guides and ARCHITECTURE.md for detailed cost analysis.
Your App → Meeboter API → Platform Service → Meeting Platforms
↓ ↓
PostgreSQL S3 (recordings)
Tech Stack:
- API: Next.js 15, tRPC, Drizzle ORM
- Bots: Playwright (Meet), Puppeteer (Teams/Zoom), FFmpeg
- Database: PostgreSQL 15
- Storage: S3-compatible (MinIO, AWS S3)
- Runtime: Bun + Alpine Linux (ARM64/x86)
Multi-Platform Deployment:
| Platform | Model | Deploy Time | Cost Model |
|---|---|---|---|
| Coolify | Pool-based | ~30s | Fixed server |
| Kubernetes | Pod-based | ~30-60s | Fixed cluster |
| AWS ECS | Task-based | ~60-90s | Pay-per-use |
Hybrid Mode — Automatic failover across platforms with PLATFORM_PRIORITY configuration.
Reference Architecture: Proxmox + Coolify + AWS
+-------------------------------------------------------------------------+
| PROXMOX HOST (bare-metal) |
| |
| +-----------------------------+ |
| | CT 100: Coolify | |
| | | |
| | +-----------------------+ | +--------------------------------+ |
| | | Milo API (Next.js) |--+---->| AWS ECS Cluster | |
| | | Port 3000 | | | | |
| | +-----------+-----------+ | | +------+ +------+ +------+ | |
| | | | | |Task A| |Task B| |Task C| | |
| | +-----------+-----------+ | | | Done | | Done | | Run | | |
| | | PostgreSQL | MinIO | | | +------+ +------+ +------+ | |
| | +-----------------------+ | | | |
| | | | Fargate Spot (90%) + ARM64 | |
| | +-----------------------+ | | 0.5 vCPU / 2 GB per task | |
| | | Bot Pool (20 slots) | | | Up to 100 concurrent bots | |
| | | ~30s deploy time | | +--------------------------------+ |
| | +-----------------------+ | |
| +-----------------------------+ |
+-------------------------------------------------------------------------+
Cost Breakdown:
- Proxmox server (Hetzner AX52): ~$80/mo
- AWS ECS (500 bots/day, 45 min avg): ~$100/mo
- Total: ~$180/mo for hybrid setup with overflow capacity
meeboter/
├── apps/
│ ├── milo/ # API server (Next.js + tRPC)
│ │ ├── src/server/api/ # tRPC routers and services
│ │ └── drizzle/ # Database migrations
│ └── bots/ # Bot engine
│ └── providers/
│ ├── Dockerfile # Shared base image
│ ├── google-meet/ # Playwright-based
│ ├── microsoft-teams/ # Puppeteer-based
│ └── zoom/ # Puppeteer-based
├── terraform/
│ └── bots/ # AWS ECS Fargate infrastructure
├── packages/ # Shared packages
└── docs/ # Documentation
- ARCHITECTURE.md: System design and cost analysis
- docs/DEPLOYMENT.md: Platform deployment guides
- apps/milo/README.md: API server documentation
- apps/bots/ARCHITECTURE.md: Bot engine and AWS infrastructure
- API Docs: OpenAPI/Scalar (when running)
bun install
bun turbo dev --filter=@meeboter/milo
bun run lint
bun run typecheck
bun run testMIT — use it however you want.