Self-hosted meeting intelligence platform
bots • real-time transcription • storage • API • user interface
Google Meet
•
Microsoft Teams
•
Zoom
What’s new • Quickstart • API • Docs • Roadmap • Discord
Vexa is an open-source, self-hostable API for real-time meeting transcription. It automatically joins Google Meet, Microsoft Teams, and Zoom meetings, captures audio, and provides real-time transcriptions via REST API and WebSocket.
| Capability | What it means |
|---|---|
| Meeting bots | Automatically joins Google Meet, Microsoft Teams, and Zoom meetings |
| Real-time transcription | Sub-second transcript delivery during the call |
| Interactive bots | Make bots speak, send/read chat, share screen content, and set avatar in live meetings |
| Multilingual | 100+ languages via Whisper (transcription + translation) |
| API-first | REST API + WebSocket streaming for integrations |
| MCP-ready | Connect AI agents (Claude/Cursor/etc.) through the MCP server |
| Storage | Persist transcripts + meeting metadata in your database |
| Multi-user | Team-ready: users, API keys/tokens, admin operations |
| Self-hostable | Run on your infra for complete data sovereignty |
| User interfaces | Open-source frontends (currently: Vexa Dashboard) |
| You are... | You want... |
|---|---|
| Enterprises | Self-hosted transcription with strict privacy requirements |
| Small & medium teams | Simple deployment (Vexa Lite) with an open-source UI |
| Developers | Build meeting products (assistants, automations, analytics) on top of the API |
| Automation builders | Integrate with tools like n8n via webhooks / APIs |
Build powerful meeting assistants (like Otter.ai, Fireflies.ai, Fathom) for your startup, internal use, or custom integrations.
The Vexa API provides powerful abstractions and a clear separation of concerns, enabling you to build sophisticated applications on top with a safe and enjoyable coding experience.
Vexa is open-source and self-hostable — ideal for regulated industries and teams that cannot compromise on privacy.
Modular architecture scales from edge devices to millions of users. You choose what to self-host and what to use as a service.
You control everything:
1. Full self-hosting
Run Vexa, database, and transcription service entirely on your infrastructure
For regulated industries like fintech, medical, etc.
2. GPU-free self-hosting
Self-host Vexa, but plug into external transcription service
Perfect privacy with minimal DevOps
3. Fully hosted service
At vexa.ai — just grab API key
Ready to integrate
- Zoom: initial Zoom Meeting SDK support (requires Zoom app setup/approval; see docs)
- Recordings: persist recording artifacts to S3-compatible storage (or local)
- Post-meeting playback: stream recordings via
/recordings/.../rawwithRangeseeking (206) +Content-Disposition: inline - Delete semantics: deleting a meeting also purges recording objects/artifacts (best-effort) before anonymizing the meeting
- Interactive Bots API: live controls for speak/chat/screen/avatar during active meetings
- MCP integration docs: end-to-end guide for connecting AI agents to Vexa tools
See full release notes: https://github.com/Vexa-ai/vexa/releases
Just grab your API key at https://vexa.ai/dashboard/api-keys and start using the service immediately.
Self-hosted, multiuser service for teams. Run as a single Docker container for easy deployment.
Vexa Lite is a single-container deployment perfect for teams who want:
- Self-hosted multiuser service - Multiple users, API tokens, and team management
- Quick deployment on any platform - Single container, easy to deploy
- No GPU required - Transcription runs externally
- Choose your frontend - Pick from open-source user interfaces like Vexa Dashboard
- Production-ready - Stateless, scalable, serverless-friendly
Quick start:
docker run -d \
--name vexa \
-p 8056:8056 \
-e DATABASE_URL="postgresql://user:pass@host/vexa" \
-e ADMIN_API_TOKEN="your-admin-token" \
-e TRANSCRIBER_URL="https://transcription.service" \
-e TRANSCRIBER_API_KEY="transcriber-token" \
vexaai/vexa-lite:latestDeployment options:
- 🚀 One-click platform deployments: vexa-lite-deploy repository
- ✅ Fly.io - Implemented
- 🚧 Railway, Render, etc. - To be added (contribute by adding your platform of choice!)
- 📖 Complete setup guide: Vexa Lite Deployment Guide - Environment variables, storage, TTS, and all configuration options
- 🎨 Frontend options: Choose from open-source user interfaces like Vexa Dashboard
Full stack deployment with all services. Perfect for development and testing.
All services are saved in docker-compose.yml and wrapped in a Makefile for convenience:
git clone https://github.com/Vexa-ai/vexa.git
cd vexa
make all # Default: remote transcription (GPU-free)What make all does:
- Builds all Docker images
- Spins up all containers (API, bots, transcription services, database)
- Runs database migrations
- Starts a simple test to verify everything works
- Full guide: Deployment Guide
Recording is implemented and supports local filesystem, MinIO, and cloud S3-compatible backends.
See Recording Storage for:
- Storage backends and environment variables (
STORAGE_BACKEND) - Docker Compose / Lite / Kubernetes deployment notes
- Browser playback details (
/recordings/{recording_id}/media/{media_file_id}/raw,Range/206,Content-Disposition: inline)
For enterprise orchestration platforms, contact vexa.ai
Set API_BASE to your deployment:
- Hosted:
https://api.cloud.vexa.ai - Self-hosted Lite:
http://localhost:8056 - Self-hosted full stack (default):
http://localhost:8056
export API_BASE="http://localhost:8056"curl -X POST "$API_BASE/bots" \
-H "Content-Type: application/json" \
-H "X-API-Key: <API_KEY>" \
-d '{
"platform": "teams",
"native_meeting_id": "<NUMERIC_MEETING_ID>",
"passcode": "<MEETING_PASSCODE>"
}'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"
}'# Caveat: Zoom Meeting SDK apps typically require Marketplace approval to join other users' meetings.
# Before approval, expect you can reliably join only meetings created by you (the authorizing account).
#
# From URL: https://us05web.zoom.us/j/YOUR_MEETING_ID?pwd=YOUR_PWD
# Extract meeting ID and optional passcode separately.
curl -X POST "$API_BASE/bots" \
-H "Content-Type: application/json" \
-H "X-API-Key: <API_KEY>" \
-d '{
"platform": "zoom",
"native_meeting_id": "YOUR_MEETING_ID",
"passcode": "YOUR_PWD",
"recording_enabled": true,
"transcribe_enabled": true,
"transcription_tier": "realtime"
}'curl -H "X-API-Key: <API_KEY>" \
"$API_BASE/transcripts/<platform>/<native_meeting_id>"For real-time streaming (sub‑second), see the WebSocket guide. For full REST details, see the User API Guide.
Note: Meeting IDs are user-provided (Google Meet code like xxx-xxxx-xxx or Teams numeric ID and passcode). Vexa does not generate meeting IDs.
- Enterprises (self-host): Data sovereignty and control on your infra
- Teams using hosted API: Fastest path from meeting to transcript
- n8n/indie builders: Low-code automations powered by real-time transcripts
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.
- api-gateway: Routes API requests to appropriate services
- mcp: Provides MCP-capable agents with Vexa as a toolkit
- bot-manager: Handles bot lifecycle management
- vexa-bot: The bot that joins meetings and captures audio
- WhisperLive: Real-time audio transcription service (uses transcription-service as backend in remote mode)
- transcription-service: Basic transcription service (WhisperLive uses it as a real-time wrapper)
- transcription-collector: Processes and stores transcription segments
- Database models: Data structures for storing meeting information
💫 If you're building with Vexa, we'd love your support! Star our repo to help us reach 2000 stars.
- Real-time multilingual transcription supporting 100 languages with Whisper
- Real-time translation across all 100 supported languages
- Google Meet integration - Automatically join and transcribe Google Meet calls
- Microsoft Teams integration - Automatically join and transcribe Teams meetings
- Zoom integration - Automatically join and transcribe Zoom meetings
- REST API - Complete API for managing bots, users, and transcripts
- Interactive meeting controls - Bot speak/chat/screen/avatar endpoints for active meetings
- WebSocket streaming - Sub-second transcript delivery via WebSocket
- MCP server - Expose Vexa APIs as agent tools for MCP-compatible clients
- Multiuser support - User management, API tokens, and team features
- Self-hostable - Full control over your data and infrastructure
- Open-source frontends - Choose from user interfaces like Vexa Dashboard
Deployment & Management Guides:
- Vexa Lite Deployment Guide - Single container deployment
- Docker Compose Deployment - Full stack for development
- Self-Hosted Management Guide - Managing users and API tokens
- Recording Storage - S3, MinIO, and local storage configuration
Vexa is part of an ecosystem of open-source tools:
100% open-source web interface for Vexa. Join meetings, view transcripts, manage users, and more. Self-host everything with no cloud dependencies.
We use GitHub Issues as our main feedback channel. New issues are triaged within 72 hours (you'll get a label + short response). Not every feature will be implemented, but every issue will be acknowledged. Look for good-first-issue if you want to contribute.
Contributors are welcome! Join our community and help shape Vexa's future. Here's how to get involved:
-
Understand Our Direction:
-
Engage on Discord (Discord Community):
- Introduce Yourself: Start by saying hello in the introductions channel.
- Stay Informed: Check the Discord channel for known issues, feature requests, and ongoing discussions. Issues actively being discussed often have dedicated channels.
- Discuss Ideas: Share your feature requests, report bugs, and participate in conversations about a specific issue you're interested in delivering.
- Get Assigned: If you feel ready to contribute, discuss the issue you'd like to work on and ask to get assigned on Discord.
-
Development Process:
- Browse available tasks (often linked from Discord discussions or the roadmap).
- Request task assignment through Discord if not already assigned.
- Submit pull requests for review.
- Critical Tasks & Bounties:
- Selected high-priority tasks may be marked with bounties.
- Bounties are sponsored by the Vexa core team.
- Check task descriptions (often on the roadmap or Discord) for bounty details and requirements.
We look forward to your contributions!
Licensed under Apache-2.0 — see LICENSE.
This is the main Vexa repository containing the core API and services. For related projects:
- vexa-lite-deploy - Deployment configurations for Vexa Lite
- Vexa-Dashboard - Web UI for managing Vexa instances (first in a planned series of UI applications)
The Vexa name and logo are trademarks of Vexa.ai Inc.