Vexa
Open-source meeting transcription API for Google Meet, Microsoft Teams & Zoom. Auto-join bots, real-time WebSocket transcripts, MCP server for AI agents. Self-host or use hosted SaaS.
Installation
npx vexaAsk AI about Vexa
Powered by Claude Β· Grounded in docs
I know everything about Vexa. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Vexa
Open-source meeting bot API & transcription API
meeting bots β’ real-time transcription β’ interactive bots β’ MCP server β’ self-hosted
Google Meet
Β Β Β Β β’Β Β Β Β
Microsoft Teams
Β Β Β Β β’Β Β Β Β
Zoom
What's new β’ Quickstart β’ API β’ Docs β’ Roadmap β’ Discord
Vexa is an open-source, self-hostable meeting bot API and meeting transcription API for Google Meet, Microsoft Teams, and Zoom. Alternative to Recall.ai, Otter.ai, and Fireflies.ai β self-host so meeting data never leaves your infrastructure, or use vexa.ai hosted.
Data sovereignty β self-host so meeting data never leaves your infrastructure
Cost β replace $20/seat SaaS with your own infrastructure
Embed in your product β multi-tenant meeting bot API with scoped tokens
AI agents β MCP server with 17 tools
Capabilities
| Meeting bot API | Send a bot to any meeting: auto-join, record, speak, chat, share screen. Open-source alternative to Recall.ai. |
| Meeting transcription API | Real-time transcripts via REST API and WebSocket. Self-hosted alternative to Otter.ai and Fireflies.ai. |
| Real-time transcription | Sub-second per-speaker transcripts during the call. 100+ languages via Whisper. WebSocket streaming. |
| Interactive bots | Make bots speak, send/read chat, share screen content, and set avatar in live meetings. |
| Browser bots | CDP + Playwright browser automation with persistent authenticated sessions via S3. |
| MCP server | 17 meeting tools for Claude, Cursor, Windsurf. AI agents join calls, read transcripts, speak in meetings. |
| Multi-tenant | Users, scoped API tokens, isolated containers. Deploy once, serve your team. |
| Dashboard | Open-source Next.js web UI β meetings, transcripts, agent chat, browser sessions. Ready to use out of the box. |
| Self-hostable | Run on your infra. Meeting data never leaves your infrastructure. |
Every feature is a separate service. Pick what you need, skip what you don't. Self-host everything or use vexa.ai hosted.
Why Self-Host Meeting Transcription?
For regulated industries β banks, financial services, healthcare β meeting data can't leave your infrastructure. Self-hosting Vexa means zero external data transmission and full audit trail on your own infrastructure.
For cost-conscious teams β replace per-seat SaaS pricing. A team paying $17/seat/mo for meeting transcription can self-host Vexa and drop that to infrastructure cost.
For developers β embed a meeting bot API in your product. Multi-tenant, scoped API tokens, no per-user infrastructure.
Build meeting assistants like Otter.ai, Fireflies.ai, or Fathom β or build a meeting bot API like Recall.ai β self-hosted on your infrastructure.
- Vexa (self-host) β your infra cost. Data never leaves your infrastructure. Meeting bot API, real-time transcription, interactive bots, MCP server. Open source, Apache 2.0. Google Meet, Teams, Zoom.
- Recall.ai β $0.50/hr. No self-hosting. Meeting bot API, real-time transcription. No MCP, limited interactive bots. Closed source. Meet, Teams, Zoom, Webex.
- Otter.ai β $17-20/seat/mo. No self-hosting. No API. Limited real-time transcription. Closed source. Meet, Teams, Zoom.
Or use vexa.ai hosted β get an API key and start sending bots immediately, no infrastructure needed.
Built for Data Sovereignty
Meeting data never leaves your infrastructure. Self-host for complete control. Modular architecture scales from edge devices to millions of users.
1. Hosted service At vexa.ai β get an API key and start sending bots. No infrastructure needed. Ready to integrate
2. Self-host with Vexa transcription Run Vexa yourself, use vexa.ai for transcription β ready to go, no GPU needed. Control with minimal DevOps β see deploy/ for setup guides.
3. Fully self-host Run everything including your own GPU transcription service. Meeting data never leaves your infrastructure β see deploy/ for setup guides.
What's new
v0.10.4
- Zoom (via web) β
platform=zoomworks out of the box, no SDK setup.
v0.10 β full architecture refactor
- Services refactored β runtime-api as infrastructure layer (container orchestration), meeting-api as data layer, agent-api as high-level intelligence layer. Clean separation of concerns.
- Real-time pipeline moved into bots β transcription pipeline now runs inside bot containers, eliminating external dependencies
- Agent API (experimental) β ephemeral containers for AI agents. See services/agent-api/.
- Helm/K8s β production Kubernetes deployment with built images and global.imageTag support
v0.9
- Zoom (experimental) β initial Zoom Meeting SDK support
- Interactive Bots API β speak, chat, screen share, avatar controls during live meetings
- MCP server β 17 tools for AI agents
- Recordings β S3-compatible storage
See full release notes: https://github.com/Vexa-ai/vexa/releases
Quickstart
Self-host with Docker
On a fresh Linux machine (Ubuntu 24.04):
apt-get update && apt-get install -y make git curl
curl -fsSL https://get.docker.com | sh
git clone https://github.com/Vexa-ai/vexa.git && cd vexa
Then choose:
| Command | What you get | Best for |
|---|---|---|
make lite | Single container, all services | Quick evaluation, small teams |
make all | Full stack, each service separate | Development, production |
Both prompt for a transcription token on first run. Get one at vexa.ai/account, or self-host transcription with a GPU.
Guides: Vexa Lite | Docker Compose | Helm (K8s)
Hosted (no deployment needed)
Get your API key at vexa.ai/account and start sending bots immediately.
Meeting API β Send Bots, Get Transcripts
Send a bot, get real-time transcripts with per-speaker audio and interactive controls (speak, chat, share screen).
# Send a bot to Google Meet
curl -X POST "$API_BASE/bots" \
-H "Content-Type: application/json" \
-H "X-API-Key: <API_KEY>" \
-d '{"platform": "google_meet", "native_meeting_id": "abc-defg-hij"}'
# Get transcripts
curl -H "X-API-Key: <API_KEY>" \
"$API_BASE/transcripts/google_meet/abc-defg-hij"
Works with Google Meet, Microsoft Teams, and Zoom. Set API_BASE to https://api.cloud.vexa.ai (hosted) or http://localhost:8056 (self-hosted).
For real-time WebSocket streaming, see the WebSocket guide. For full REST details, see the User API Guide.
Browser Bots β Persistent Browser Containers for Agents
Remote browser containers with CDP + Playwright access and persistent session storage via S3. Agents get a real browser that stays logged in across restarts β Google, Microsoft, or any web session.
- CDP + Playwright β full browser automation via Chrome DevTools Protocol
- Persistent sessions β authenticated browser state saved to S3, restored on next spin-up
- VNC access β humans can observe and control the browser in real time alongside agents
- On-demand containers β spin up in seconds, auto-reclaim when idle
See features/browser-session/ and features/remote-browser/ for details.
MCP Server β Meeting Tools for AI Agents
17 tools that let AI agents join meetings, read transcripts, speak, chat, and share screen. Works with Claude, Cursor, Windsurf, and any MCP-compatible client.
Your AI agent can join a meeting, listen to the conversation, and participate β all through MCP tool calls. See services/mcp/ for setup and tool reference.
Modular β Pick What You Need
Vexa is a toolkit, not a monolith. Every feature works independently. Use one or all β they compose when you need them to.
| You're building... | Features you need | Skip the rest |
|---|---|---|
| Self-hosted Otter replacement | transcription + multi-platform + webhooks | agent runtime, scheduler, MCP |
| Meeting data pipeline | transcription + webhooks + post-meeting | speaking-bot, chat, agent runtime |
| AI meeting assistant product | transcription + MCP + speaking-bot + chat | remote-browser, scheduler |
| Meeting bot API (like Recall.ai) | multi-platform + transcription + token-scoping | agent runtime, workspaces |
You don't pay complexity tax for features you don't use. Each service is a separate container. Don't need agents? Don't run agent-api. Don't need TTS? Don't run tts-service. Services communicate via REST and Redis, not tight coupling.
Roadmap
For the up-to-date roadmap and priorities, see GitHub Issues and Milestones. Issues are grouped by milestones to show what's coming next, in what order, and what's currently highest priority.
- Issues: https://github.com/Vexa-ai/vexa/issues
- Milestones: https://github.com/Vexa-ai/vexa/milestones
For discussion/support, join our Discord.
Architecture & Feature Status
Each service and feature has its own README with architecture, DoD table, and evidence-based confidence scores.
- Services: api-gateway β’ meeting-api β’ admin-api β’ runtime-api β’ vexa-bot β’ transcription-service β’ tts-service β’ mcp β’ dashboard β’ agent-api (experimental)
- Features: realtime-transcription β’ bot-lifecycle β’ browser-session β’ remote-browser β’ speaking-bot β’ meeting-chat β’ webhooks β’ authenticated-meetings
- Deploy: Docker Compose β’ Vexa Lite β’ Helm/K8s
- Guides: Vexa Lite Deployment β’ Docker Compose Deployment β’ Self-Hosted Management β’ Recording Storage
Contributing
We use GitHub Issues as our main feedback channel β triaged within 72 hours. Look for good-first-issue to get started. Join Discord to discuss ideas and get assigned.
Links
Website β’ Docs β’ Discord β’ LinkedIn β’ X (@grankin_d) β’ Meet Founder
Related: vexa-lite-deploy β’ Vexa Dashboard
