Call.md: el copiloto de reuniones open source que transcribe, te sopla qué decir y guarda todo en Markdown
Call.md es una app de escritorio open source que convierte tus reuniones en un bucle de agente en directo: graba la llamada, la transcribe en tiempo real separando lo que dices tú de lo que dicen ellos, te propone frases y preguntas mientras hablas, consulta tus herramientas MCP cuando la conversación lo pide y, al colgar, deja un resumen con tareas en una carpeta de archivos Markdown. La publica VideoDB con licencia MIT y funciona en macOS y Windows x64.
Es lo más parecido a Gong, Otter o Granola que puedes leer línea a línea. Hemos revisado el código del repositorio video-db/call.md (versión 1.0.4, commit ba53ebe del 19 de agosto de 2026) para contarte qué hace de verdad durante la llamada, qué reglas usan sus avisos, qué datos salen de tu ordenador y qué necesitas para instalarlo. Spoiler: el código es abierto, pero la transcripción y la IA dependen del servicio de VideoDB y de su API key.

Qué es Call.md y quién lo hace
| Dato | Valor |
|---|---|
| Repositorio | [video-db/call.md](https://github.com/video-db/call.md) |
| Autor | VideoDB, una plataforma de vídeo para agentes de IA |
| Versión analizada | 1.0.4 (`package.json`), commit `ba53ebe`, 19 de agosto de 2026 |
| Licencia | MIT (declarada en `package.json` y en el README) |
| Plataformas | macOS 12+ (Apple Silicon e Intel) con instalador; Windows x64 compilando desde el código |
| Stack | Electron 42, React 19, TypeScript, tRPC, SQLite con Drizzle, shadcn/ui |
| Requiere | API key de VideoDB, permisos de micrófono y grabación de pantalla |
El proyecto nació en febrero de 2026 como un copiloto de ventas (el commit inicial se llama literalmente "init: meeting copilot" y el servicio central sigue llamándose sales-copilot.service.ts). Al día siguiente lo renombraron a un uso general, y de ahí sale el nombre: cada reunión termina siendo un puñado de archivos .md que tú, o tu agente, podéis leer después.
Una nota sobre la licencia: el repositorio no incluye un archivo LICENSE. La licencia MIT figura en el campo "license" del package.json y en el distintivo del README. Para usarlo o modificarlo es suficiente en la práctica, pero si vas a redistribuirlo dentro de un producto, conviene guardar una copia de esa declaración con la versión que uses.
Qué hace antes, durante y después de la reunión
Antes: preparar la llamada
Al crear una reunión escribes un nombre y una descripción. Con eso, la app genera 3 preguntas de opción múltiple (4 opciones cada una) sobre qué sería un buen resultado, qué riesgos hay y qué decisiones se esperan. Con tus respuestas crea una checklist de cosas que vigilar durante la llamada. Si conectas Google Calendar, también sincroniza tus próximas reuniones.
Durante: transcripción, sugerencias y herramientas
- Transcripción en dos canales. El micrófono se etiqueta como "tú" y el audio del sistema como "ellos". Así sabe quién habla sin tener que adivinar voces.
- Live Assist. Cada 20 segundos manda el último fragmento de la transcripción al modelo y recibe hasta 3 frases para decir (
say_this) y hasta 3 preguntas (ask_this), siempre en primera persona y ligadas a algo que se acaba de decir. Si la conversación va bien, devuelve listas vacías. - Herramientas MCP en segundo plano. Otro bucle, también cada 20 segundos, decide si lo que se está hablando pide un dato que tus servidores MCP pueden dar ("¿en qué fase está el trato con Acme?") y llama hasta 3 herramientas por ronda. El resultado aparece en un panel en Markdown. Su prompt de sistema le prohíbe inventar datos y le pide avisar si algo "no es seguro decirlo en voz alta".
- Métricas y avisos. Ratio de conversación, palabras por minuto, preguntas, monólogos e interrupciones. Esto es estadística pura, sin IA (lo detallamos abajo).
- Marcadores para señalar momentos importantes.
Después: resumen, Markdown y webhooks
Al parar la grabación lanza tres extracciones en paralelo: un resumen narrativo, los puntos clave por tema y las tareas concretas. Luego escribe la reunión en tu carpeta personal:
~/.call_md/
├── index.md índice cronológico de todas las reuniones
└── meetings/2026/10/25/<reunion>/
├── summary.md resumen, puntos clave y tareas
├── transcript.md transcripción completa con tiempos
├── visual.md descripción de lo que hubo en pantalla
└── metrics.md ratio de conversación y ritmoSi configuras webhooks, envía a n8n, Zapier o tu CRM un JSON con el título, la duración, el resumen, los temas, las tareas, la checklist, la transcripción y el enlace al reproductor de VideoDB.

Cómo funciona por dentro
La app es Electron con dos procesos. El proceso principal (Node) captura audio y pantalla con el SDK de VideoDB, guarda todo en SQLite y expone una API tRPC local; el renderer (React) solo pinta la interfaz. Lo interesante está en src/main/services:
| Servicio | Qué hace |
|---|---|
| `videodb.service.ts` y `rtstream-transcript.service.ts` | Abren la sesión de captura y reciben la transcripción por WebSocket. |
| `live-assist.service.ts` | El bucle de 20 s que propone qué decir y qué preguntar. |
| `mcp-inference.service.ts` | El bucle de 20 s que llama a tus herramientas MCP con *tool calling*. |
| `copilot/conversation-metrics.service.ts` y `nudge-engine.service.ts` | Métricas y avisos, sin modelo. |
| `copilot/summary-generator.service.ts` | Las tres extracciones del final. |
| `markdown-export.service.ts` | Escribe `~/.call_md`. |
| `workflow-webhook.service.ts` | Envía los webhooks con protección SSRF. |
Un detalle que no cuenta el README: todas las llamadas al modelo van a la API de VideoDB (https://api.videodb.io, compatible con el SDK de OpenAI) con el modelo ultra. No hay un ajuste para usar tu propia clave de Anthropic u OpenAI; para eso tendrías que tocar llm.service.ts.
Las reglas de los avisos: qué mide y cuándo te interrumpe
Los avisos ("nudges") no los decide una IA. Son reglas fijas en nudge-engine.service.ts y conversation-metrics.service.ts, con un máximo de un aviso cada 2 minutos para no distraerte:

La puntuación de salud de la captura oficial cuadra con la fórmula: tú hablas el 10 % y ellos el 90 %, el desvío respecto al 50/50 es 0,4 y eso resta 40 puntos. De ahí el 60/100.
Dos cosas a tener en cuenta si tus llamadas son en español:
- Las preguntas se cuentan buscando el carácter
?en tus frases. Si la transcripción no pone signos de interrogación (en la captura oficial el texto sale sin puntuación), el contador se queda corto y el aviso de "pocas preguntas" saltará de más. - Los textos de los avisos están escritos en inglés dentro del código, y los prompts de Live Assist y del resumen no indican el idioma de salida. La transcripción sí admite español (
esen Ajustes → Transcription). No lo hemos podido comprobar con una llamada real, así que no sabemos si el resumen sale en español sin tocar los prompts.
Requisitos e instalación
En macOS
El instalador oficial descarga el .dmg de tu arquitectura y lo copia a Aplicaciones:
curl -fsSL https://artifacts.videodb.io/call.md/install | bashDespués abre Call.md, concede micrófono y Grabación de pantalla y audio del sistema en Ajustes del Sistema → Privacidad y seguridad, y pega tu API key de VideoDB (se saca en console.videodb.io; el README dice que hay una gratuita). Google Calendar es opcional.
Antes de ejecutar un curl | bash, léelo: el script del repositorio está en scripts/install.sh, solo funciona en macOS y no usa sudo (si no puede copiar la app a Aplicaciones, te sugiere repetirlo con sudo).
En Windows x64 (desde el código)
No hay instalador publicado para Windows, pero la grabación sí funciona si lo compilas. Necesitas Node.js 22.12 o superior y npm 10:
git clone https://github.com/video-db/call.md.git
cd call.md
npm ci
npm run dist:winEso genera un instalador NSIS sin firmar. Para desarrollar en lugar de empaquetar: npm install, npm run rebuild (recompila better-sqlite3 para Electron) y npm run dev. En Linux y Windows ARM64 la interfaz, los MCP, los webhooks y el historial funcionan, pero la app rechaza grabar porque VideoDB no publica el binario de captura para esas plataformas.
Nosotros no lo hemos instalado: en nuestro entorno de pruebas (Linux, sin cuenta de VideoDB) no se puede grabar, así que este análisis sale del código, no de una llamada real.
Conectar tus herramientas MCP
En Settings → MCP Servers → Add Server eliges el transporte: stdio para un servidor local (un comando) o http para uno remoto. Las variables de entorno y cabeceras de cada servidor se guardan cifradas con AES-256-GCM. Durante la reunión, el bucle MCP ve todas las herramientas conectadas y elige cuál llamar.
Privacidad: qué se queda en tu equipo y qué sale
El README dice "local-first" y es verdad para el almacenamiento, pero no para el procesamiento:
- Se queda en tu equipo: la base SQLite, los ajustes, los logs (con credenciales tachadas), las claves cifradas con el llavero del sistema y la carpeta
~/.call_md. - Sale hacia VideoDB: el audio de los dos canales, la pantalla, la grabación exportada (con un enlace de reproductor) y todo lo que se manda al modelo.
- Sale si lo activas: Google Calendar, servidores MCP remotos y webhooks.
Lo demás está bien resuelto: la API local solo escucha en 127.0.0.1, la carpeta de datos tiene permisos 0700, los webhooks bloquean IPs privadas y de metadatos de la nube, y las grabaciones se cortan solas a las 2 horas (con aviso 5 minutos antes; la pausa no cuenta).
Grabar una llamada con terceros tiene implicaciones legales: en muchos países necesitas avisar o pedir consentimiento, y aquí además la grabación pasa por un proveedor externo. Si lo vas a usar con clientes, repasa nuestra guía de riesgos legales de las apps hechas con IA.
Usar las notas de Call.md con Claude Code
Como cada reunión acaba en Markdown, tu agente de código puede leerla sin integraciones. Desde cualquier proyecto en Claude Code:
Lee ~/.call_md/index.md y la carpeta de la reunión de hoy con el cliente.
Con summary.md y transcript.md, crea un issue por cada tarea acordada
que afecte a este repositorio, citando el minuto de la transcripción.También puedes al revés: conectar a Call.md un servidor MCP de tu tablero de tareas o tu CRM para que, cuando alguien pregunte "¿cómo va el ticket del login?", el dato aparezca en pantalla sin que tengas que buscarlo.
Errores frecuentes
La grabación no arranca. Revisa los permisos de micrófono y de grabación de pantalla, que la API key de VideoDB sea válida y que estés en macOS (arm64 o x64) o Windows x64.
No aparece la transcripción. Comprueba que el micrófono y el audio del sistema estén activados en Ajustes y espera 5-10 segundos: los primeros fragmentos tardan. Necesita conexión a internet.
La transcripción sale en inglés. Elige el idioma en Settings → Transcription; se aplica a la siguiente grabación, no a la que está en curso. Si aun así sale en inglés, el motor de VideoDB no admite ese idioma y la app vuelve al idioma por defecto (está documentado en el issue #25).
La grabación se paró sola. Llegaste al límite de 2 horas. Se guarda y se resume igual que si pulsaras Stop. Para cambiarlo, edita MAX_RECORDING_DURATION_MS en src/shared/constants/recording.ts y recompila.
Tus frases aparecen también como "ellos". El micrófono está captando lo que sale por los altavoces. Usa auriculares: en la propia captura oficial se ven frases duplicadas en los dos canales.
Errores de módulos nativos al desarrollar. Ejecuta npm run rebuild y confirma que usas Node.js 22.12 o superior. Los logs están en ~/Library/Application Support/call-md/logs/ en macOS.
Preguntas frecuentes
¿Call.md es gratis? El código sí, con licencia MIT. La transcripción y la IA usan la API de VideoDB, que tiene su propio plan de precios.
¿Funciona sin internet? No para lo importante: la transcripción, las sugerencias y el resumen necesitan conexión con VideoDB.
¿Puedo usarlo con Claude o con GPT directamente? No sin cambiar el código: todas las llamadas al modelo pasan por la API de VideoDB.
¿Se une a la reunión como un bot? No. Graba desde tu ordenador lo que oyes y lo que dices, así que funciona con Zoom, Meet, Teams o cualquier otra app sin que entre un participante extra.
¿Sirve para Linux? Para ver la interfaz, el historial y los MCP sí; para grabar, no.
¿Lo puedo modificar y venderlo? La licencia MIT lo permite. Ten en cuenta que seguirá dependiendo de VideoDB salvo que sustituyas la captura y la transcripción.
Conclusión
Call.md es una base muy completa para un copiloto de reuniones propio: transcripción por canales, sugerencias en directo, herramientas MCP durante la llamada y, sobre todo, una salida en Markdown que cualquier agente entiende. Lo que no es: una herramienta autoalojada. El código es tuyo, pero el audio y la IA pasan por VideoDB. Si te encaja, pruébalo en una llamada interna, ajusta los umbrales de los avisos a tu forma de trabajar y apunta tu agente a ~/.call_md.
Si te interesa grabar tu pantalla para vídeos de demo en lugar de reuniones, mira Recordly. Y para otro agente open source que trabaja por ti, tienes nuestra prueba de OpenMuse.
// código fuente
// kit para agencias
// implementación
Más sobre Agentes de IA

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code