What is Vexa?
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.
At a glance
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) |
Who it's for
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 on Top. In Hours, Not Months
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.
π‘οΈ Built for Data Sovereignty
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
π What's new in v0.9 (pre-release)
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: inlineDelete 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
Quickstart
Option 1: Hosted (Fastest)
Just grab your API key at https://vexa.ai/dashboard/api-keys and start using the service immediately.
Option 2: Vexa Lite - For Users (Recommended for Production)
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
Option 3: Docker Compose - For Development
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 storage (local and cloud)
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)
Option 4: Hashicorp Nomad, Kubernetes, OpenShift
For enterprise orchestration platforms, contact vexa.ai
1. Send bot to meeting:
Set API_BASE to your deployment:
Hosted:
https://api.cloud.vexa.aiSelf-hosted Lite:
http://localhost:8056Self-hosted full stack (default):
http://localhost:8056
export API_BASE="http://localhost:8056"Request a bot for Microsoft Teams
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>"
}'Or request a bot for 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"
}'Or request a bot for Zoom
# 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"
}'2. Get transcripts:
Get transcripts over REST
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.
Who Vexa is for
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
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.
Milestones: https://github.com/Vexa-ai/vexa/milestones
For discussion/support, join our Discord.
Architecture
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.
Features:
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
Related Projects
Vexa is part of an ecosystem of open-source tools:
π¨ Vexa Dashboard
100% open-source web interface for Vexa. Join meetings, view transcripts, manage users, and more. Self-host everything with no cloud dependencies.
Contributing
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.
Project Links
π Vexa Website
πΌ LinkedIn
π¦ X (@grankin_d)
π¬ Discord Community
Repository Structure
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.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.