memex
Cérebro secundário local-first para o Claude. Salva notas como Markdown e as recupera entre sessões com busca semântica offline, sem nuvem e sem chaves de API.
Documentação
memex
Torne o Claude mais inteligente sobre você.
npm install -g @evan-moon/memex
Torne o Claude mais inteligente sobre você.
Segundo cérebro local-first que se conecta ao Claude via MCP. As notas são armazenadas como Markdown simples e indexadas com um modelo de ML local, totalmente offline, sem chaves de API, nada sai da sua máquina.
O problema
O Claude só é tão inteligente quanto o que está na conversa. Suas decisões, seu contexto, seu pensamento, invisíveis a menos que você os cole toda vez.
You: What did we decide about the auth approach last sprint?
Claude: I don't have context from previous conversations...
A solução
You: What did we decide about the auth approach last sprint?
Claude: [memex · search_notes · "auth approach decision"]
Found 2 notes:
Auth Architecture Decision Apr 14 #auth #backend
─────────────────────────────────────────────────────
Chose JWT + refresh tokens over sessions. Rationale:
stateless design fits horizontal scaling plan.
Based on your April 14th note: you went with JWT +
refresh tokens. Tom also flagged keeping auth decoupled
from payment logic, separate bounded contexts.
O Claude pesquisa suas notas antes de responder e salva insights ao final de cada conversa, automaticamente, sem ser solicitado.
Instalação
npm install -g @evan-moon/memex
Conecte seus aplicativos:
memex mcp install
Isso registra o memex em todos os clientes MCP desta máquina — Claude, Claude Code, Codex, Cursor — escrevendo o arquivo de configuração de cada um. Reinicie os clientes depois. O mesmo pode ser feito com um botão no aplicativo: execute memex ui e abra Conectar, que também mostra quais aplicativos já conseguem acessar o memex.
É isso. Na primeira execução, o modelo de embeddings (~450MB) é baixado uma vez para ~/.memex/models/.
Recuperação automática (opcional)
memex recall install
Transforma a recuperação de algo que o Claude precisa decidir fazer em algo que simplesmente acontece. Cada prompt que você digita é pesquisado semanticamente nas suas notas, e os 3 títulos principais são injetados como contexto antes de o Claude responder — da mesma forma que a memória nativa funciona. O Claude então puxa as notas completas com get_note quando um título parece relevante.
Um daemon em segundo plano mantém o modelo de embeddings aquecido (~/.memex/recall.sock), então uma consulta custa ~30ms em vez dos ~1,5s que uma pesquisa CLI fria gasta carregando o modelo. Ele fica ocioso após 2 horas.
Custo: ~200MB residentes enquanto aquecido, mais até 3 títulos de notas de contexto por prompt. Remova com memex recall uninstall.
Recursos
- Pesquisa semântica, encontra notas pelo significado, não apenas por palavras-chave. Multilíngue (coreano + inglês), roda totalmente offline via
multilingual-e5-base - Recuperação híbrida, busca vetorial + BM25 de texto completo + correspondência de tags, fundidas via Reciprocal Rank Fusion
- Embeddings em nível de bloco, notas longas são divididas em passagens de ~340 tokens e incorporadas individualmente, então uma resposta enterrada na página três é tão encontrável quanto uma no parágrafo de abertura. A pesquisa retorna a passagem que correspondeu, não as primeiras linhas da nota
- Reordenação por cross-encoder (opt-in,
MEMEX_RERANK=1), recupera o dobro de candidatos e os reordena combge-reranker-v2-m3. Vale ~+20pp hit@1 no conjunto dourado, a ~1,8s por pesquisa — desativado por padrão porque a recuperação automática e a CLI são construídas em torno de consultas instantâneas - Filtro de data, restrinja a pesquisa a um intervalo de tempo com
--from/--to - Camadas de notas, cada nota é
past(registro imutável),state(plano mutável) ourule(guia de comportamento do Claude). Notas passadas recusam atualizações; notas de regra são injetadas automaticamente no prompt de sistema do Claude - Flashback, salvar e pesquisar automaticamente exibem notas mais antigas de uma pasta diferente que são semanticamente relacionadas, "você escreveu sobre isso há 124 dias em um contexto diferente"
- Aplicativo desktop, uma janela Electron que abre o cofre por tópico e divide cada um no que ainda se sustenta e no que ficou desatualizado — corrigido por uma nota posterior, ou um plano com registros mais novos acumulados atrás. Não existe mais comando
memex ui: o aplicativo é a tela - Mecanismo de inferência, sinais determinísticos revelam padrões não sintetizados (arcos entre anos, notas de estado obsoletas, revivals de tags); você promove os bons em inferências (hipóteses com proveniência) que se invalidam automaticamente quando suas notas de origem mudam. Sem LLM no núcleo
- Servidor MCP, o Claude pesquisa e salva automaticamente. Sem configuração extra de CLAUDE.md necessária
- Recuperação automática, hook opt-in que pesquisa suas notas a cada prompt e injeta os resultados antes de o Claude responder, para que a recuperação nunca dependa de o Claude lembrar de procurar
- Detecção de duplicatas,
save_noteavisa quando uma nota semanticamente semelhante já existe, incentivando o Claude a atualizar em vez de criar - Backlinks, vincule notas com sintaxe
[[Title]];get_notemostra quais notas a referenciam - Colapso de séries, um registro de trabalho datado ("… 2026-07-20", "… 2026-07-23") ocupa no máximo dois espaços em uma página de resultados, e a pesquisa informa quantos mais ele reteve
- Emendas, uma correção registra o que corrige (
amends), então a pesquisa sinaliza a nota substituída e aponta para a correção mais recente em vez de retornar uma afirmação que você já sabe estar errada - Resumo,
memex digestresume notas salvas nos últimos N dias, agrupadas por pasta - CLI, adicione, pesquise, marque, navegue e indexe notas pelo terminal
- Compatível com Obsidian, notas salvas como arquivos
.md; funciona junto com cofres existentes - Banco de dados local, SQLite +
sqlite-vecem~/.memex/memex.db
CLI
# Add notes
memex add # interactive prompt (asks for layer)
memex add --title "Note title" --content "..." --layer past
memex add --title "Note title" --file ./note.md --layer state
memex add --title "Note title" --content "..." --folder work/people/tom --layer past
memex add --title "Note title" --content "..." -T typescript -T architecture --layer past
# Layers
memex layer # distribution of past / state / rule
memex layer <id> state # move a note to a different layer
# Search
memex search "semantic search query" # multilingual
memex search "knowledge management" --limit 10 # multilingual: matches Korean/Japanese notes too
memex search "query" --tag typescript # filter by tag
memex search "query" --from 2026-04-01 # notes since a date
memex search "query" --from 2026-04-01 --to 2026-04-30
# Browse
memex list # recent 10 notes
memex list --limit 20
memex show <id>
memex tags # all tags with counts
memex related <id> # semantically related notes
memex digest # last 7 days + signals + inferences
memex digest --days 30 # summary of last 30 days
# Insights (inference engine)
memex signals # detect un-synthesized patterns
memex signals --type hidden_arc # one type only
memex signals dismiss <id> # triage (also: snooze)
memex signals mint <signalId> # print evidence bundle to synthesize
memex signals mint <signalId> --title "..." --summary "..." --confidence 0.7
memex inferences # list inferences (auto-flags stale)
memex schedule # print cron/launchd snippet (no daemon)
# Edit / delete
memex edit <id>
memex delete <id>
memex delete --yes <id> # skip confirmation
# Index external directories
memex source add ~/Documents/My\ Notes # register a vault
memex source list
memex source remove ~/Documents/My\ Notes
memex index # scan vault + all sources
memex index --force # re-index everything
memex reembed # re-embed with current model
# Config
memex config show
memex config set vault-path ~/Documents/Second\ Brain
# MCP
memex mcp install # register with every MCP client on this machine
# Auto-recall
memex recall install # search notes on every prompt, inject hits
memex recall uninstall # remove the hook
memex mcp path # print MCP binary path
Servidor MCP
Claude, Claude Code, Codex, Cursor
memex mcp install
Ou pelo aplicativo: memex ui, depois Conectar.
Ambos escrevem o arquivo de configuração de cada cliente e deixam os servidores já existentes intactos. Se um cliente ainda executa uma cópia mais antiga do memex, ambos a redirecionam. memex mcp path imprime o caminho do servidor para um cliente que o memex ainda não conhece.
Ferramentas disponíveis
| Ferramenta | Descrição |
|---|---|
save_note | Salva uma nota, exige layer, avisa se uma nota semelhante já existe, exibe flashbacks |
search_notes | Pesquisa semântica; suporta filtros category, tag, date_from, date_to; anexa flashbacks para o melhor resultado |
list_notes | Lista notas recentes |
list_tags | Lista todas as tags com contagens de notas |
list_folders | Lista todas as pastas com contagens de notas |
get_note | Obtém conteúdo completo e backlinks de uma nota por ID |
update_note | Atualiza título ou conteúdo. Recusa notas past (com sugestão de [Amendment]) e notas rule (somente usuário) |
delete_note | Exclui uma nota por ID |
get_signals | Padrões determinísticos não sintetizados (hidden_arc / stale_state / dangling_link / tag_burst) |
update_signal_status | Triagem de um sinal, dispensar ou adiar |
list_inferences | Lista hipóteses sintetizadas (verifica obsolescência primeiro) |
get_inference | Uma inferência com proveniência completa + marcadores de alteração/exclusão |
mint_inference | Persiste uma hipótese aprovada, exige confirmação explícita |
As inferências são mantidas separadas das notas (excluídas da pesquisa) e citadas como hipóteses, nunca como fatos. A detecção permanece determinística; a única etapa de LLM é sintetizar o resumo de uma inferência, o que o Claude faz, nunca o memex.
Camadas de notas
Cada nota é classificada em uma de três camadas com base na mutabilidade:
| Camada | Significado | Permissão do Claude |
|---|---|---|
past | Registro do que aconteceu, retros, reuniões, justificativa de decisões, sessões de depuração | Somente anexação. update_note recusa, sugerindo uma nota [Amendment] em vez disso |
state | Estado atual ou planos, progresso de projetos, roteiros, função atual de uma pessoa | Livremente atualizável |
rule | Guia de comportamento para o Claude, estilo de código, política de pesquisa | Claude é somente leitura. Apenas o usuário escreve |
A CLI imprime um distintivo colorido [past] / [state] / [rule] ao lado de cada nota em list, search e show.
save_note(MCP) ememex add(CLI) exigem umlayerexplícito. As regras de classificação estão documentadas na descrição da ferramenta para que o Claude escolha corretamente.- Na primeira execução, as notas existentes recebem um preenchimento baseado em pasta:
projects/dev/herald→state,coding→rule, todo o resto →past. A migração é idempotente. - Notas
ruletambém são injetadas automaticamente nas instruções do servidor MCP, veja Injeção automática da camada de regras abaixo.
Flashback
Quando você salva uma nota ou pesquisa, o memex exibe automaticamente notas mais antigas de uma pasta diferente que são semanticamente semelhantes, "você escreveu sobre isso há 124 dias em um contexto diferente." Armazenadas como backlinks gerados pelo sistema (note_links.source = 'flashback'), separados dos seus [[wikilinks]] (source = 'wiki').
Ajuste via env:
| Env | Padrão | Comportamento |
|---|---|---|
MEMEX_FLASHBACK_DAYS | 90 | diferença mínima de idade, em dias |
MEMEX_FLASHBACK_DIST | 0.4 | distância vetorial máxima (menor = correspondência mais estrita) |
MEMEX_FLASHBACK_LIMIT | 3 | máximo de sugestões por superfície |
Injeção automática da camada de regras
Notas com layer = 'rule' são anexadas às instruções do servidor MCP na inicialização, sob uma seção ## House Rules. O Claude as vê no início de cada conversa, sem necessidade de chamada search_notes. Este é o lugar certo para guias de estilo de código ou outras orientações comportamentais.
| Env | Padrão | Comportamento |
|---|---|---|
MEMEX_INJECT_RULES | habilitado | Defina como 0 para desabilitar a injeção completamente |
MEMEX_RULES_MAX_CHARS | 8000 | Orçamento de bytes para a seção injetada; o excesso é truncado com um console.warn |
Atualizações em notas de regra são captadas no próximo reinício do Claude Desktop / Claude Code.
Configuração
A configuração fica em ~/.memex/config.json.
| Chave | Padrão | Descrição |
|---|---|---|
vault_path | ~/Documents/Second Brain | Diretório onde os arquivos .md são salvos |
sources | [] | Diretórios adicionais para indexar (ex.: cofres Obsidian existentes) |
aliases | {} | Mapa de aliases de pesquisa, ex.: { "js": ["javascript", "ecmascript"] }, valores podem ser em qualquer idioma para fazer a ponte entre scripts |
memex config set vault-path ~/my-vault
Arquitetura
~/.memex/
config.json, vault path, sources, and aliases
memex.db, SQLite DB (notes + note/chunk vec embeddings + FTS5 index)
models/, cached embedding model
<vault>/
*.md, notes (Obsidian-compatible)
| Pacote | Função |
|---|---|
@memex/db | Esquema SQLite, consultas drizzle, integração sqlite-vec + FTS5 |
@memex/embed | Embedder local via @huggingface/transformers |
@memex/rerank | Reordenador cross-encoder local (opt-in) |
@memex/core | Serviço de notas compartilhado por CLI e MCP: salvar, editar, pesquisar, indexação vetorial |
@memex/utils | Configuração, utilitários de caminho, utilitários compartilhados |
@memex/mcp | Servidor MCP (empacotado na distribuição CLI) |
O ecossistema
memex é uma das três ferramentas local-first que compartilham um princípio: seus dados permanecem na sua máquina, e a IA vem até eles. Elas interoperam por qualquer cliente MCP, e nenhuma depende das outras.
flowchart TB
U([You])
subgraph I["Interfaces, talk to your tools"]
direction LR
CD[Claude Desktop]
CC[Claude Code]
CU[Cursor]
end
subgraph T["Local-first tools, each owns its data, on your machine"]
direction LR
F["firma · money<br/>~/.firma"]
M["memex · memory<br/>~/.memex"]
S["skope · news<br/>~/.skope"]
end
U --> I
I -- MCP --> F & M & S
F <-. never call each other .-> M
M <-.-> S
- firma · dinheiro, portfólio, patrimônio líquido, fluxo de caixa
- memex · memória, notas e o contexto por trás delas, entre sessões
- skope · notícias, uma lente personalizada sobre o mundo
Você as acessa pelo Claude Desktop, Claude Code, Cursor ou qualquer outro cliente MCP. As ferramentas se compõem pelo modelo, nunca chamando umas às outras.
Para onde isso está indo
O memex hoje é o que a lista acima descreve: a memória de uma IA, com uma janela de desktop para supervisioná-la. A direção que está sendo construída agora é um segundo cérebro pessoal no qual você também lê e escreve diretamente — o mesmo cofre, usado por uma pessoa escrevendo a partir do próprio material e por uma IA trabalhando a partir da mesma prateleira.
O design está em docs/plans/2026-09-08-second-brain-product-redesign.md
e nos dois documentos que ele vincula. Nada do que segue está construído ainda, e esta
seção existe para que a lista de recursos acima permaneça honesta sobre o que é lançado hoje:
| Meta | Status |
|---|---|
| Escrever e editar documentos sem um modelo de IA ou de incorporação pronto | em andamento |
| Histórico de versões para cada documento, sem precisar de git no vault | em andamento |
Editar o texto de uma nota past (suas afirmações ainda são corrigidas, não reescritas) | não iniciado |
| Painel de referências — leia suas próprias fontes ao lado do que você está escrevendo | não iniciado |
| Uma tela de memória onde um valor incorreto é corrigido no lugar | não iniciado |
update_note com expected_revision para que dois escritores não possam sobrescrever silenciosamente | não iniciado |
Fora do escopo para esta direção: sincronização, colaboração, publicação, um sistema de plugins e um canvas de grafo.
llms.txt
llms.txt é um resumo legível por máquina deste projeto para agentes de LLM, uma descrição concisa com links de documentação, seguindo o padrão llms.txt.
Licença
MIT