Turn meetings into live agent loops. Record, transcribe, and analyze meetings with real-time AI intelligence — before, during, and after calls.
TypeScript
1,553
94 commits
updated Aug 19, 2026
Turn meetings into live agent loops. Record, transcribe, and analyze meetings with real-time AI intelligence — before, during, and after calls.
Explore the docs »
View Demo
·
Install
·
Report Bug
https://github.com/user-attachments/assets/94470e99-c0f6-4e35-9d03-b28efa362b3b
macOS (Apple Silicon & Intel):
curl -fsSL https://artifacts.videodb.io/call.md/install | bash
After installation:
Microphone and screen-recording permissions are required before the first recording. Google Calendar is optional and can be connected or skipped during onboarding.
| Platform | Installer | Status |
|---|---|---|
| macOS 12+ (Apple Silicon & Intel) | curl command above | Supported |
| Windows x64 | Build from source with npm run dist:win | Recording supported; no hosted installer yet |
| Windows ARM64 | — | Recording not supported |
| Linux | Build from source with npm run dist:linux | App features available; recording not supported |
The VideoDB capture SDK now ships recording binaries for darwin-arm64,
darwin-x64, and win32-x64. Call.md verifies that the capture executable and
SQLite native module are present in the packaged app.
Windows x64 recording is supported by the source build, but the project does not currently publish a Windows installer. Linux and Windows ARM64 builds can run the UI, MCP servers, workflows, history, settings, and exports, but the app will reject recording before launch because no capture binary is available. See Building for other platforms.
Call.md turns meetings into live agent loops. It records locally, transcribes in real-time (you vs them), and provides live intelligence during calls. When the meeting ends, it generates summaries with action items and can send data to your workflow automation platforms.
During Recording:
After Recording:
For development: Node.js 22.12+ and npm 10+
Install:
curl -fsSL https://artifacts.videodb.io/call.md/install | bash
Launch the app and enter your VideoDB API key (get one free)
Grant permissions when prompted, or configure them later in Settings
Start Recording - Click "New Meeting" and begin your first session
The app will transcribe in real-time, show live assists, and generate a summary when you're done.
Clone the repository:
git clone https://github.com/video-db/call.md.git
cd call-md
Install dependencies:
npm install
Rebuild native modules for Electron:
npm run rebuild
Start development mode:
npm run dev
Register with your VideoDB API key when the app opens
| Command | Description |
|---|---|
npm run dev | Start development mode (main + renderer with hot reload) |
npm run build | Build TypeScript and React for production |
npm run dist:mac | Build macOS distributable DMG |
npm run dist:win | Build Windows x64 NSIS installer with recording support |
npm run dist:linux | Build Linux AppImage (recording unavailable, see below) |
npm run typecheck | Run TypeScript type checking |
npm run test | Run unit tests |
npm run lint | Run ESLint |
npm run rebuild | Rebuild native modules for Electron |
npm run db:generate | Generate database migration files |
npm run db:migrate | Apply database migrations |
electron-builder is already configured for Windows (NSIS) and Linux (AppImage), so you can produce an installer on those platforms:
npm ci
npm run dist:win
Build and run the release candidate on its target OS. The project uses published
target prebuilds for better-sqlite3 and packaged VideoDB capture binaries, so
a macOS development machine can cross-package a Windows x64 directory build for
structural verification. That does not replace native Windows testing or
installer signing. This follows
electron-builder's multi-platform build guidance,
which requires target prebuilds for native dependencies and still needs
target-platform validation.
Recording support is available on macOS arm64/x64 and Windows x64. On Linux and Windows ARM64, the full UI, MCP servers, workflows, settings, history, and markdown export remain available; starting a recording returns a clear unsupported-platform error.
Release artifacts must be signed with the project's platform credentials. macOS releases also need notarization and stapling. Unsigned local builds can receive a different Keychain or OS-permission identity on every rebuild and are not representative of the installed release.
Connect MCP servers in Settings → MCP Servers:
The MCP agent runs automatically during meetings, detects information needs from conversation, and triggers relevant tools. Results appear inline in the MCP Results panel.
src/
├── main/ # Electron Main Process
│ ├── db/ # Database layer (Drizzle + SQLite)
│ ├── ipc/ # IPC handlers
│ ├── lib/ # Utilities (logger, paths, permissions)
│ ├── server/ # HTTP server (Hono + tRPC)
│ │ └── trpc/ # tRPC router and procedures
│ └── services/ # Business logic
│ ├── copilot/ # Meeting intelligence services
│ │ ├── context-manager.service.ts
│ │ ├── conversation-metrics.service.ts
│ │ ├── nudge-engine.service.ts
│ │ ├── sales-copilot.service.ts # Core orchestrator
│ │ ├── summary-generator.service.ts
│ │ └── transcript-buffer.service.ts
│ ├── mcp/ # MCP orchestration and tool execution
│ │ ├── connection-orchestrator.service.ts
│ │ ├── intent-detector.service.ts
│ │ ├── mcp-agent.service.ts
│ │ ├── tool-aggregator.service.ts
│ │ └── result-handler.service.ts
│ ├── live-assist.service.ts
│ ├── mcp-inference.service.ts
│ ├── llm.service.ts
│ └── videodb.service.ts
├── preload/ # Preload scripts (IPC bridge)
├── renderer/ # React Frontend
│ ├── api/ # tRPC client
│ ├── components/ # UI components
│ │ ├── auth/ # Authentication modal
│ │ ├── calendar/ # Calendar integration UI
│ │ ├── copilot/ # Meeting intelligence UI
│ │ ├── history/ # Recording history views
│ │ ├── home/ # Home screen
│ │ ├── icons/ # Icon components
│ │ ├── layout/ # App layout (sidebar, titlebar)
│ │ ├── mcp/ # MCP results/status components
│ │ ├── meeting-setup/ # Meeting prep wizard
│ │ ├── recording/ # Recording controls & live assist
│ │ ├── settings/ # Settings editors
│ │ ├── transcription/ # Live transcription panel
│ │ └── ui/ # shadcn/ui components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities
│ └── stores/ # Zustand state stores (session, copilot, mcp)
└── shared/ # Shared types & schemas
├── schemas/ # Zod validation schemas
└── types/ # TypeScript types
The app exposes IPC APIs through the preload script:
window.electronAPI.mcp.* - MCP server and tool operationswindow.electronAPI.mcpOn.* - MCP event subscriptionsThe app requires the following permissions before recording:
On macOS, grant them in System Settings → Privacy & Security. Newer macOS versions label the screen permission Screen & System Audio Recording. On Windows, enable microphone access for desktop apps when prompted. You can skip permission setup during onboarding and return to it from Settings, but recording will remain unavailable until the required permissions are granted.
Recording not starting:
Transcription not appearing:
A recording stopped on its own:
MAX_RECORDING_DURATION_MS in
src/shared/constants/recording.ts and rebuildTranscription is in the wrong language:
language_code and falls
back to the engine default rather than failing — see
#25Development issues:
npm run rebuild~/Library/Application Support/call-md/logs/Application data is stored in:
~/Library/Application Support/call-md/
├── config.json # Settings and encrypted desktop access token
├── data/
│ └── call-md.db # SQLite database; sole encrypted API-key authority
├── google_tokens.enc # Encrypted Google OAuth tokens, when connected
└── logs/
└── app-YYYY-MM-DD.log # Daily log files
Windows stores the equivalent files under the Electron application-data directory for the current user.
The application database, settings, and logs stay on your machine. Recording, transcription, and AI inputs are sent to VideoDB when those features are used. If you enable Google Calendar, remote MCP servers, or workflow webhooks, the relevant data is also sent to the services you configure.
config.json. The
desktop access token in the config is encrypted, while the database stores
only its SHA-256 digest. Google OAuth tokens use Electron
safeStorage. MCP
server environment variables and HTTP headers use AES-256-GCM under a
keychain-wrapped key. Storage uses Keychain on macOS, DPAPI on Windows, and a
strong libsecret backend on Linux; credential writes fail closed when strong
OS-backed storage is unavailable or Linux selects the insecure basic_text
backend.127.0.0.1 only and accepts CORS
requests from loopback origins, so nothing on your network can reach it.
Every procedure except registration requires a valid access token.0700 and the database,
config, tokens and logs are 0600.contextIsolation, no Node integration,
and the Chromium sandbox enabled. The API key is never written to
localStorage. These controls follow Electron's
security checklist.Upgrades migrate existing data in place on first launch; you do not need to log in again. Report security vulnerabilities privately to [email protected], not through a public issue.
Made with ❤️ by the VideoDB team
16 followers · starred Aug 2026
166 followers · starred Apr 2026
49 followers · starred Sep 2026
8 followers · starred Mar 2026
Turn meetings into live agent loops. Record, transcribe, and analyze meetings with real-time AI intelligence — before, during, and after calls.
TypeScript
1,553
94 commits
updated Aug 19, 2026
Turn meetings into live agent loops. Record, transcribe, and analyze meetings with real-time AI intelligence — before, during, and after calls.
Explore the docs »
View Demo
·
Install
·
Report Bug
https://github.com/user-attachments/assets/94470e99-c0f6-4e35-9d03-b28efa362b3b
macOS (Apple Silicon & Intel):
curl -fsSL https://artifacts.videodb.io/call.md/install | bash
After installation:
Microphone and screen-recording permissions are required before the first recording. Google Calendar is optional and can be connected or skipped during onboarding.
| Platform | Installer | Status |
|---|---|---|
| macOS 12+ (Apple Silicon & Intel) | curl command above | Supported |
| Windows x64 | Build from source with npm run dist:win | Recording supported; no hosted installer yet |
| Windows ARM64 | — | Recording not supported |
| Linux | Build from source with npm run dist:linux | App features available; recording not supported |
The VideoDB capture SDK now ships recording binaries for darwin-arm64,
darwin-x64, and win32-x64. Call.md verifies that the capture executable and
SQLite native module are present in the packaged app.
Windows x64 recording is supported by the source build, but the project does not currently publish a Windows installer. Linux and Windows ARM64 builds can run the UI, MCP servers, workflows, history, settings, and exports, but the app will reject recording before launch because no capture binary is available. See Building for other platforms.
Call.md turns meetings into live agent loops. It records locally, transcribes in real-time (you vs them), and provides live intelligence during calls. When the meeting ends, it generates summaries with action items and can send data to your workflow automation platforms.
During Recording:
After Recording:
For development: Node.js 22.12+ and npm 10+
Install:
curl -fsSL https://artifacts.videodb.io/call.md/install | bash
Launch the app and enter your VideoDB API key (get one free)
Grant permissions when prompted, or configure them later in Settings
Start Recording - Click "New Meeting" and begin your first session
The app will transcribe in real-time, show live assists, and generate a summary when you're done.
Clone the repository:
git clone https://github.com/video-db/call.md.git
cd call-md
Install dependencies:
npm install
Rebuild native modules for Electron:
npm run rebuild
Start development mode:
npm run dev
Register with your VideoDB API key when the app opens
| Command | Description |
|---|---|
npm run dev | Start development mode (main + renderer with hot reload) |
npm run build | Build TypeScript and React for production |
npm run dist:mac | Build macOS distributable DMG |
npm run dist:win | Build Windows x64 NSIS installer with recording support |
npm run dist:linux | Build Linux AppImage (recording unavailable, see below) |
npm run typecheck | Run TypeScript type checking |
npm run test | Run unit tests |
npm run lint | Run ESLint |
npm run rebuild | Rebuild native modules for Electron |
npm run db:generate | Generate database migration files |
npm run db:migrate | Apply database migrations |
electron-builder is already configured for Windows (NSIS) and Linux (AppImage), so you can produce an installer on those platforms:
npm ci
npm run dist:win
Build and run the release candidate on its target OS. The project uses published
target prebuilds for better-sqlite3 and packaged VideoDB capture binaries, so
a macOS development machine can cross-package a Windows x64 directory build for
structural verification. That does not replace native Windows testing or
installer signing. This follows
electron-builder's multi-platform build guidance,
which requires target prebuilds for native dependencies and still needs
target-platform validation.
Recording support is available on macOS arm64/x64 and Windows x64. On Linux and Windows ARM64, the full UI, MCP servers, workflows, settings, history, and markdown export remain available; starting a recording returns a clear unsupported-platform error.
Release artifacts must be signed with the project's platform credentials. macOS releases also need notarization and stapling. Unsigned local builds can receive a different Keychain or OS-permission identity on every rebuild and are not representative of the installed release.
Connect MCP servers in Settings → MCP Servers:
The MCP agent runs automatically during meetings, detects information needs from conversation, and triggers relevant tools. Results appear inline in the MCP Results panel.
src/
├── main/ # Electron Main Process
│ ├── db/ # Database layer (Drizzle + SQLite)
│ ├── ipc/ # IPC handlers
│ ├── lib/ # Utilities (logger, paths, permissions)
│ ├── server/ # HTTP server (Hono + tRPC)
│ │ └── trpc/ # tRPC router and procedures
│ └── services/ # Business logic
│ ├── copilot/ # Meeting intelligence services
│ │ ├── context-manager.service.ts
│ │ ├── conversation-metrics.service.ts
│ │ ├── nudge-engine.service.ts
│ │ ├── sales-copilot.service.ts # Core orchestrator
│ │ ├── summary-generator.service.ts
│ │ └── transcript-buffer.service.ts
│ ├── mcp/ # MCP orchestration and tool execution
│ │ ├── connection-orchestrator.service.ts
│ │ ├── intent-detector.service.ts
│ │ ├── mcp-agent.service.ts
│ │ ├── tool-aggregator.service.ts
│ │ └── result-handler.service.ts
│ ├── live-assist.service.ts
│ ├── mcp-inference.service.ts
│ ├── llm.service.ts
│ └── videodb.service.ts
├── preload/ # Preload scripts (IPC bridge)
├── renderer/ # React Frontend
│ ├── api/ # tRPC client
│ ├── components/ # UI components
│ │ ├── auth/ # Authentication modal
│ │ ├── calendar/ # Calendar integration UI
│ │ ├── copilot/ # Meeting intelligence UI
│ │ ├── history/ # Recording history views
│ │ ├── home/ # Home screen
│ │ ├── icons/ # Icon components
│ │ ├── layout/ # App layout (sidebar, titlebar)
│ │ ├── mcp/ # MCP results/status components
│ │ ├── meeting-setup/ # Meeting prep wizard
│ │ ├── recording/ # Recording controls & live assist
│ │ ├── settings/ # Settings editors
│ │ ├── transcription/ # Live transcription panel
│ │ └── ui/ # shadcn/ui components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities
│ └── stores/ # Zustand state stores (session, copilot, mcp)
└── shared/ # Shared types & schemas
├── schemas/ # Zod validation schemas
└── types/ # TypeScript types
The app exposes IPC APIs through the preload script:
window.electronAPI.mcp.* - MCP server and tool operationswindow.electronAPI.mcpOn.* - MCP event subscriptionsThe app requires the following permissions before recording:
On macOS, grant them in System Settings → Privacy & Security. Newer macOS versions label the screen permission Screen & System Audio Recording. On Windows, enable microphone access for desktop apps when prompted. You can skip permission setup during onboarding and return to it from Settings, but recording will remain unavailable until the required permissions are granted.
Recording not starting:
Transcription not appearing:
A recording stopped on its own:
MAX_RECORDING_DURATION_MS in
src/shared/constants/recording.ts and rebuildTranscription is in the wrong language:
language_code and falls
back to the engine default rather than failing — see
#25Development issues:
npm run rebuild~/Library/Application Support/call-md/logs/Application data is stored in:
~/Library/Application Support/call-md/
├── config.json # Settings and encrypted desktop access token
├── data/
│ └── call-md.db # SQLite database; sole encrypted API-key authority
├── google_tokens.enc # Encrypted Google OAuth tokens, when connected
└── logs/
└── app-YYYY-MM-DD.log # Daily log files
Windows stores the equivalent files under the Electron application-data directory for the current user.
The application database, settings, and logs stay on your machine. Recording, transcription, and AI inputs are sent to VideoDB when those features are used. If you enable Google Calendar, remote MCP servers, or workflow webhooks, the relevant data is also sent to the services you configure.
config.json. The
desktop access token in the config is encrypted, while the database stores
only its SHA-256 digest. Google OAuth tokens use Electron
safeStorage. MCP
server environment variables and HTTP headers use AES-256-GCM under a
keychain-wrapped key. Storage uses Keychain on macOS, DPAPI on Windows, and a
strong libsecret backend on Linux; credential writes fail closed when strong
OS-backed storage is unavailable or Linux selects the insecure basic_text
backend.127.0.0.1 only and accepts CORS
requests from loopback origins, so nothing on your network can reach it.
Every procedure except registration requires a valid access token.0700 and the database,
config, tokens and logs are 0600.contextIsolation, no Node integration,
and the Chromium sandbox enabled. The API key is never written to
localStorage. These controls follow Electron's
security checklist.Upgrades migrate existing data in place on first launch; you do not need to log in again. Report security vulnerabilities privately to [email protected], not through a public issue.
Made with ❤️ by the VideoDB team
16 followers · starred Aug 2026
166 followers · starred Apr 2026
49 followers · starred Sep 2026
8 followers · starred Mar 2026