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

memex

Torne o Claude mais inteligente sobre você.

npm version License Node version

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 com bge-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) ou rule (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_note avisa quando uma nota semanticamente semelhante já existe, incentivando o Claude a atualizar em vez de criar
  • Backlinks, vincule notas com sintaxe [[Title]]; get_note mostra 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 digest resume 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-vec em ~/.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

FerramentaDescrição
save_noteSalva uma nota, exige layer, avisa se uma nota semelhante já existe, exibe flashbacks
search_notesPesquisa semântica; suporta filtros category, tag, date_from, date_to; anexa flashbacks para o melhor resultado
list_notesLista notas recentes
list_tagsLista todas as tags com contagens de notas
list_foldersLista todas as pastas com contagens de notas
get_noteObtém conteúdo completo e backlinks de uma nota por ID
update_noteAtualiza título ou conteúdo. Recusa notas past (com sugestão de [Amendment]) e notas rule (somente usuário)
delete_noteExclui uma nota por ID
get_signalsPadrões determinísticos não sintetizados (hidden_arc / stale_state / dangling_link / tag_burst)
update_signal_statusTriagem de um sinal, dispensar ou adiar
list_inferencesLista hipóteses sintetizadas (verifica obsolescência primeiro)
get_inferenceUma inferência com proveniência completa + marcadores de alteração/exclusão
mint_inferencePersiste 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:

CamadaSignificadoPermissão do Claude
pastRegistro do que aconteceu, retros, reuniões, justificativa de decisões, sessões de depuraçãoSomente anexação. update_note recusa, sugerindo uma nota [Amendment] em vez disso
stateEstado atual ou planos, progresso de projetos, roteiros, função atual de uma pessoaLivremente atualizável
ruleGuia de comportamento para o Claude, estilo de código, política de pesquisaClaude é 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) e memex add (CLI) exigem um layer explí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/heraldstate, codingrule, todo o resto → past. A migração é idempotente.
  • Notas rule també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:

EnvPadrãoComportamento
MEMEX_FLASHBACK_DAYS90diferença mínima de idade, em dias
MEMEX_FLASHBACK_DIST0.4distância vetorial máxima (menor = correspondência mais estrita)
MEMEX_FLASHBACK_LIMIT3má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.

EnvPadrãoComportamento
MEMEX_INJECT_RULEShabilitadoDefina como 0 para desabilitar a injeção completamente
MEMEX_RULES_MAX_CHARS8000Orç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.

ChavePadrãoDescrição
vault_path~/Documents/Second BrainDiretó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)
PacoteFunção
@memex/dbEsquema SQLite, consultas drizzle, integração sqlite-vec + FTS5
@memex/embedEmbedder local via @huggingface/transformers
@memex/rerankReordenador cross-encoder local (opt-in)
@memex/coreServiço de notas compartilhado por CLI e MCP: salvar, editar, pesquisar, indexação vetorial
@memex/utilsConfiguração, utilitários de caminho, utilitários compartilhados
@memex/mcpServidor 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:

MetaStatus
Escrever e editar documentos sem um modelo de IA ou de incorporação prontoem andamento
Histórico de versões para cada documento, sem precisar de git no vaultem 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á escrevendonão iniciado
Uma tela de memória onde um valor incorreto é corrigido no lugarnão iniciado
update_note com expected_revision para que dois escritores não possam sobrescrever silenciosamentenã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