crm-cli

Um CRM pessoal local-first para o terminal — gerencie contatos, negócios, interações e tarefas a partir do Claude com 18 ferramentas integradas, tudo armazenado em um arquivo SQLite local.

Documentação

crm — seus contatos, no seu terminal.

crm banner

CI Go Report Card License: MIT

Um CRM pessoal local-first que vive no seu terminal. Gerencie contatos, organizações, interações, negócios e tarefas — tudo pela linha de comando. Inclui um servidor MCP integrado para que agentes de IA como o Claude possam ler e atualizar seu CRM diretamente.

Binário estático único. Banco de dados SQLite. Sem nuvem. Sem contas. Seus dados permanecem na sua máquina.

Recursos

  • Pessoas e Organizações — contatos com perfis completos, vinculados a empresas
  • Registro de Interações — acompanhe ligações, e-mails, reuniões, anotações e mensagens
  • Negócios e Pipeline — oportunidades de vendas com etapas, valores e visualização de pipeline
  • Tarefas — acompanhamentos com datas de vencimento, prioridades e rastreamento de conclusão
  • Tags — etiquetas em qualquer entidade para organização flexível
  • Relacionamentos — vínculos entre pessoas (colega, mentor, indicado por, …)
  • Pesquisa de Texto Completo — encontre qualquer coisa em todas as entidades instantaneamente
  • Briefing de Contexto — um comando para obter tudo sobre uma pessoa antes de uma reunião
  • Pronto para IA — servidor MCP integrado para Claude e outros agentes de IA
  • Múltiplos Formatos de Saída — tabela, JSON, CSV, TSV — encaminhe para qualquer ferramenta
  • Zero Dependências — binário único, SQLite em Go puro, roda em qualquer lugar

Instalação

# 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

Início 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

Pessoas

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)

Organizações

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

Interações

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

Negócios

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

Tarefas

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

Tags

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

Relacionamentos

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 relacionamento: colleague, friend, manager, mentor, referred-by

Pesquisa

crm search "jane"                        # searches people, orgs, interactions, deals
crm search "roadmap" --type interaction  # filter by entity type

Briefing de Contexto

crm context 1                            # full briefing by person ID
crm context "Jane Smith"                 # or by name

Retorna perfil da pessoa, organização, interações recentes, negócios abertos, tarefas pendentes, relacionamentos e tags — tudo o que você precisa antes de uma reunião.

Painel

crm status

Mostra contagens de contatos/orgs, negócios abertos com valor total, contagens de tarefas, itens atrasados, detalhamento do pipeline e atividade recente.

Formatos de Saída

Cada comando suporta --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

Use -q / --quiet para saída mínima (apenas IDs), útil para scripts:

crm person list --tag vip -q | xargs -I{} crm tag apply person {} "priority"

Pipes e Composição

crm segue convenções Unix — dados para stdout, mensagens para stderr, códigos de saída estruturados — então funciona bem com outras ferramentas:

# 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 saída: 0 sucesso, 1 erro, 2 uso, 3 não encontrado, 4 conflito, 10 erro de banco de dados.

Integração com IA (Servidor MCP)

crm inclui um servidor MCP integrado para que agentes de IA possam consultar e atualizar seu CRM por meio de um protocolo estruturado.

Claude Code

claude mcp add crm -- crm mcp serve

Em seguida, copie AGENT.md para o seu projeto como CLAUDE.md para que o Claude saiba como usar o CRM de forma eficaz.

Claude Desktop (macOS)

  1. Abra o arquivo de configuração em ~/Library/Application Support/Claude/claude_desktop_config.json

  2. Adicione o servidor CRM (se o arquivo já tiver outros servidores, adicione a entrada "crm" dentro do objeto mcpServers existente):

{
  "mcpServers": {
    "crm": {
      "command": "/opt/homebrew/bin/crm",
      "args": ["mcp", "serve"]
    }
  }
}

Nota: Use o caminho completo para o binário. O Homebrew em Apple Silicon instala em /opt/homebrew/bin/crm, em Macs Intel em /usr/local/bin/crm. Execute which crm para encontrar o seu.

  1. Reinicie o Claude Desktop

  2. Crie um novo Projeto, clique nas configurações do projeto e cole o conteúdo de AGENT.md nas instruções do projeto. Isso ensina ao Claude quando registrar interações, como manter resumos de contatos, convenções de tags e muito mais.

Ferramentas Disponíveis

FerramentaDescrição
crm_person_searchBuscar pessoas por nome, e-mail, tag, org
crm_person_getObter detalhes completos de uma pessoa
crm_person_createCriar uma nova pessoa
crm_person_updateAtualizar campos de uma pessoa
crm_person_deleteExcluir (arquivar) uma pessoa
crm_person_relateCriar relacionamento entre pessoas
crm_org_searchBuscar organizações
crm_org_getObter detalhes da org com membros
crm_interaction_logRegistrar uma ligação, e-mail, reunião ou anotação
crm_interaction_listListar interações de uma pessoa
crm_searchPesquisa de texto completo entre entidades
crm_contextBriefing completo da pessoa
crm_deal_createCriar um negócio
crm_deal_updateAtualizar etapa/campos do negócio
crm_task_createCriar uma tarefa
crm_task_listListar tarefas abertas
crm_tag_applyAplicar uma tag
crm_statsEstatísticas resumidas do CRM

Exemplo de Fluxo de Trabalho com IA

Após uma reunião, diga ao Claude:

"Acabei de ter uma ótima reunião com a Jane. Combinamos o cronograma, ela vai assinar na próxima semana."

O Claude pode:

  1. Registrar a interação com crm_interaction_log
  2. Atualizar a etapa do negócio com crm_deal_update
  3. Criar uma tarefa de acompanhamento com crm_task_create
  4. Atualizar o resumo da Jane com crm_person_update

O campo summary nos contatos funciona como um dossiê vivo que os agentes de IA mantêm — lendo-o antes das reuniões para contexto, atualizando-o após interações com novos fatos e preferências.

Configuração

O banco de dados fica em ~/.crm/crm.db por padrão. Substitua com:

# Flag (highest priority)
crm --db /path/to/crm.db person list

# Environment variable
export CRM_DB=/path/to/crm.db

O banco de dados e o diretório são criados automaticamente no primeiro uso.

Sincronização com iCloud (macOS)

Aponte seu banco de dados para o iCloud Drive para backup automático entre máquinas:

export CRM_DB="$HOME/Library/Mobile Documents/com~apple~CloudDocs/crm/crm.db"

O modo WAL do SQLite lida bem com leituras concorrentes, mas evite gravar de duas máquinas simultaneamente.

Compilando a partir do Código-Fonte

git clone https://github.com/jdanielnd/crm-cli.git
cd crm-cli
go build -o crm ./cmd/crm
go test ./...

Requer Go 1.23+. Sem CGO — compila em qualquer lugar onde o Go roda.

Stack Tecnológica

ComponenteEscolha
LinguagemGo
Banco de dadosSQLite via modernc.org/sqlite (Go puro, sem CGO)
CLICobra
MCPmcp-go
PesquisaSQLite FTS5

Licença

MIT