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.

crm banner

CI Go Report Card License: MIT

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)

  1. Abre el archivo de configuración en ~/Library/Application Support/Claude/claude_desktop_config.json

  2. Agrega el servidor CRM (si el archivo ya tiene otros servidores, agrega la entrada "crm" dentro del objeto mcpServers existente):

{
  "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. Ejecuta which crm para encontrar la tuya.

  1. Reinicia Claude Desktop

  2. Crea un nuevo Proyecto, haz clic en la configuración del proyecto y pega el contenido de AGENT.md en 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

HerramientaDescripción
crm_person_searchBuscar personas por nombre, correo, etiqueta, org
crm_person_getObtener detalles completos de una persona
crm_person_createCrear una nueva persona
crm_person_updateActualizar campos de una persona
crm_person_deleteEliminar (archivar) una persona
crm_person_relateCrear relación entre personas
crm_org_searchBuscar organizaciones
crm_org_getObtener detalles de org con miembros
crm_interaction_logRegistrar una llamada, correo, reunión o nota
crm_interaction_listListar interacciones de una persona
crm_searchBúsqueda de texto completo entre entidades
crm_contextResumen completo de una persona
crm_deal_createCrear un negocio
crm_deal_updateActualizar etapa/campos de un negocio
crm_task_createCrear una tarea
crm_task_listListar tareas abiertas
crm_tag_applyAplicar una etiqueta
crm_statsEstadí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:

  1. Registrar la interacción con crm_interaction_log
  2. Actualizar la etapa del negocio con crm_deal_update
  3. Crear una tarea de seguimiento con crm_task_create
  4. 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

ComponenteElección
LenguajeGo
Base de datosSQLite vía modernc.org/sqlite (Go puro, sin CGO)
CLICobra
MCPmcp-go
BúsquedaSQLite FTS5

Licencia

MIT