crm-cli
Un CRM personal de prioridad local para la terminal: gestiona contactos, acuerdos, interacciones y tareas desde Claude con 18 herramientas integradas, todo almacenado en un archivo SQLite local.
Documentación
crm — tus contactos, en tu terminal.

Un CRM personal local-first que vive en tu terminal. Gestiona contactos, organizaciones, interacciones, negocios y tareas, todo desde la línea de comandos. Incluye un servidor MCP integrado para que agentes de IA como Claude puedan leer y actualizar tu CRM directamente.
Un único binario estático. Base de datos SQLite. Sin nube. Sin cuentas. Tus datos permanecen en tu máquina.
Características
- Personas y Organizaciones — contactos con perfiles completos, vinculados a empresas
- Registro de Interacciones — registra llamadas, correos, reuniones, notas y mensajes
- Negocios y Pipeline — oportunidades de venta con etapas, valores y una vista de pipeline
- Tareas — seguimientos con fechas de vencimiento, prioridades y seguimiento de finalización
- Etiquetas — etiquetas en cualquier entidad para una organización flexible
- Relaciones — vínculos entre personas (colega, mentor, referido por, …)
- Búsqueda de Texto Completo — encuentra cualquier cosa en todas las entidades al instante
- Resumen de Contexto — un comando para obtener todo sobre una persona antes de una reunión
- Listo para IA — servidor MCP integrado para Claude y otros agentes de IA
- Múltiples Formatos de Salida — tabla, JSON, CSV, TSV — canaliza a cualquier herramienta
- Cero Dependencias — un solo binario, SQLite puro en Go, funciona en cualquier lugar
Instalación
# Homebrew (macOS/Linux)
brew install jdanielnd/tap/crm
# Go
go install github.com/jdanielnd/crm-cli/cmd/crm@latest
# Or download a binary from GitHub Releases
# https://github.com/jdanielnd/crm-cli/releases
Inicio Rápido
# Add a company
crm org add "Acme Corp" --domain acme.com
# Add a contact and link them to the org
crm person add "Jane Smith" --email jane@example.com --org 1
# Log a call
crm log call 1 --subject "Intro call"
# Get a full briefing before your next meeting
crm context 1
# See your dashboard
crm status
Comandos
Personas
crm person add "Jane Smith" --email jane@example.com --phone 555-1234 --org 1
crm person list # all contacts
crm person list --tag vip --limit 10 # filtered
crm person show 1 # full details
crm person edit 1 --title "CTO" --company "Acme Corp"
crm person delete 1 # soft-delete (recoverable)
Organizaciones
crm org add "Acme Corp" --domain acme.com --industry SaaS
crm org list
crm org show 1 --with-people # show org + its members
crm org edit 1 --domain acme.io
crm org delete 1
Interacciones
crm log call 1 --subject "Discussed roadmap" --content "Agreed on Q2 timeline"
crm log email 1 --subject "Follow-up" --direction outbound
crm log meeting 1 2 --subject "Product demo" --at "2026-03-05 14:00"
crm log note 1 --subject "Quick check-in" --content "Seemed interested"
crm log list --person 1 --limit 5 # recent interactions with person
Negocios
crm deal add "Website Redesign" --value 15000 --person 1 --stage proposal
crm deal list --open # exclude won/lost
crm deal list --stage proposal
crm deal show 1
crm deal edit 1 --stage won --closed-at 2026-03-15
crm deal delete 1
crm deal pipeline # summary by stage
Tareas
crm task add "Follow up on proposal" --person 1 --due 2026-03-14 --priority high
crm task list # open tasks
crm task list --overdue # past due
crm task list --all # include completed
crm task show 1
crm task edit 1 --priority medium
crm task done 1 # mark completed
crm task delete 1
Etiquetas
crm tag apply person 1 "vip"
crm tag apply deal 1 "q2"
crm tag show person 1 # tags on a person
crm tag remove person 1 "vip"
crm tag list # all tags
crm tag delete "old-tag" # remove tag entirely
Relaciones
crm person relate 1 2 --type colleague --notes "Met at ReactConf"
crm person relationships 1 # list all relationships
crm person unrelate 1 # remove by relationship ID
Tipos de relación: colleague, friend, manager, mentor, referred-by
Búsqueda
crm search "jane" # searches people, orgs, interactions, deals
crm search "roadmap" --type interaction # filter by entity type
Resumen de Contexto
crm context 1 # full briefing by person ID
crm context "Jane Smith" # or by name
Devuelve el perfil de la persona, organización, interacciones recientes, negocios abiertos, tareas pendientes, relaciones y etiquetas — todo lo que necesitas antes de una reunión.
Panel de Control
crm status
Muestra conteos de contactos/orgs, negocios abiertos con valor total, conteos de tareas, elementos vencidos, desglose del pipeline y actividad reciente.
Formatos de Salida
Cada comando admite --format / -f:
crm person list # table (default in TTY)
crm person list -f json # JSON (default when piped)
crm person list -f csv # CSV
crm person list -f tsv # TSV
Usa -q / --quiet para salida mínima (solo IDs), útil para scripting:
crm person list --tag vip -q | xargs -I{} crm tag apply person {} "priority"
Canalización y Composición
crm sigue las convenciones de Unix — datos a stdout, mensajes a stderr, códigos de salida estructurados — por lo que se integra bien con otras herramientas:
# Bulk tag everyone at an org
crm person list -f json | jq '.[] | select(.org_id == 1) | .id' | xargs -I{} crm tag apply person {} "acme-team"
# Interactive selection with fzf
crm person list -f tsv | fzf | cut -f1 | xargs crm person show
# Export contacts to CSV
crm person list -f csv > contacts.csv
# Overdue task notifications
crm task list --overdue -f json | jq -r '.[] | "OVERDUE: \(.title)"'
Códigos de salida: 0 éxito, 1 error, 2 uso, 3 no encontrado, 4 conflicto, 10 error de base de datos.
Integración con IA (Servidor MCP)
crm incluye un servidor MCP integrado para que los agentes de IA puedan consultar y actualizar tu CRM mediante un protocolo estructurado.
Claude Code
claude mcp add crm -- crm mcp serve
Luego copia AGENT.md en tu proyecto como CLAUDE.md para que Claude sepa cómo usar el CRM de manera efectiva.
Claude Desktop (macOS)
-
Abre el archivo de configuración en
~/Library/Application Support/Claude/claude_desktop_config.json -
Agrega el servidor CRM (si el archivo ya tiene otros servidores, agrega la entrada
"crm"dentro del objetomcpServersexistente):
{
"mcpServers": {
"crm": {
"command": "/opt/homebrew/bin/crm",
"args": ["mcp", "serve"]
}
}
}
Nota: Usa la ruta completa al binario. Homebrew en Apple Silicon instala en
/opt/homebrew/bin/crm, en Macs Intel en/usr/local/bin/crm. Ejecutawhich crmpara encontrar la tuya.
-
Reinicia Claude Desktop
-
Crea un nuevo Proyecto, haz clic en la configuración del proyecto y pega el contenido de
AGENT.mden las instrucciones del proyecto. Esto enseña a Claude cuándo registrar interacciones, cómo mantener resúmenes de contactos, convenciones de etiquetado y más.
Herramientas Disponibles
| Herramienta | Descripción |
|---|---|
crm_person_search | Buscar personas por nombre, correo, etiqueta, org |
crm_person_get | Obtener detalles completos de una persona |
crm_person_create | Crear una nueva persona |
crm_person_update | Actualizar campos de una persona |
crm_person_delete | Eliminar (archivar) una persona |
crm_person_relate | Crear relación entre personas |
crm_org_search | Buscar organizaciones |
crm_org_get | Obtener detalles de org con miembros |
crm_interaction_log | Registrar una llamada, correo, reunión o nota |
crm_interaction_list | Listar interacciones de una persona |
crm_search | Búsqueda de texto completo entre entidades |
crm_context | Resumen completo de una persona |
crm_deal_create | Crear un negocio |
crm_deal_update | Actualizar etapa/campos de un negocio |
crm_task_create | Crear una tarea |
crm_task_list | Listar tareas abiertas |
crm_tag_apply | Aplicar una etiqueta |
crm_stats | Estadísticas resumidas del CRM |
Ejemplo de Flujo de Trabajo con IA
Después de una reunión, dile a Claude:
"Acabo de tener una gran reunión con Jane. Acordamos el cronograma, firmará la próxima semana."
Claude puede:
- Registrar la interacción con
crm_interaction_log - Actualizar la etapa del negocio con
crm_deal_update - Crear una tarea de seguimiento con
crm_task_create - Actualizar el resumen de Jane con
crm_person_update
El campo summary en los contactos actúa como un expediente vivo que los agentes de IA mantienen — leyéndolo antes de las reuniones para contexto, actualizándolo después de las interacciones con nuevos hechos y preferencias.
Configuración
La base de datos vive en ~/.crm/crm.db por defecto. Sobrescribe con:
# Flag (highest priority)
crm --db /path/to/crm.db person list
# Environment variable
export CRM_DB=/path/to/crm.db
La base de datos y el directorio se crean automáticamente en el primer uso.
Sincronización con iCloud (macOS)
Apunta tu base de datos a iCloud Drive para copias de seguridad automáticas entre máquinas:
export CRM_DB="$HOME/Library/Mobile Documents/com~apple~CloudDocs/crm/crm.db"
El modo WAL de SQLite maneja bien lecturas concurrentes, pero evita escribir desde dos máquinas simultáneamente.
Compilación desde el Código Fuente
git clone https://github.com/jdanielnd/crm-cli.git
cd crm-cli
go build -o crm ./cmd/crm
go test ./...
Requiere Go 1.23+. Sin CGO — compila en cualquier lugar donde Go funcione.
Stack Tecnológico
| Componente | Elección |
|---|---|
| Lenguaje | Go |
| Base de datos | SQLite vía modernc.org/sqlite (Go puro, sin CGO) |
| CLI | Cobra |
| MCP | mcp-go |
| Búsqueda | SQLite FTS5 |
Licencia
MIT