Fale, não digite
⌥Espaço — o mesmo atalho do Raycast e dos apps de desktop do Claude e do Gemini — traz a janela e ativa o ditado. Fale, aperte de novo, confirme.
whisper.cpp · large-v3-turbo · Metal · no dispositivo
Memória capturada por voz · busca vetorial no DynamoDB
The Second Brain for Developers
Aperte ⌥Espaço e fale — ou salve dados por meio de agentes como Claude CLI, Codex CLI e Antigravity CLI. Três semanas depois, pergunte usando palavras que você nunca usou — e a recupere.
Ainda não há release publicada — o botão abre a página de releases. Os builds têm assinatura ad-hoc, sem notarização.
Fale
⌥Espaço abre o microfone. A fala é transcrita na sua máquina, por whisper.cpp sobre Metal — o áudio nunca sai dela.
O problema
Gemini para Mac, os apps de desktop do Claude e do ChatGPT, e as ferramentas de terminal Claude CLI, Codex CLI e Antigravity CLI compartilham a mesma limitação: você conta algo hoje e amanhã eles não sabem nada a respeito.
“A gente preferiu índice vetorial no DynamoDB a OpenSearch por causa do custo por byte.”
Toda sessão começa vazia. O que você explicou ontem sumiu, e você precisa explicar de novo.
Busca textual só acha o que você já sabe formular. A nota que você não consegue nomear é a nota que você não alcança.
O que você fala vira uma memória buscável por significado — então “por que a gente não foi de OpenSearch?” encontra a frase acima, com quase nenhuma palavra em comum.
No aplicativo
A transcrição cai no campo de captura para você confirmar antes de qualquer coisa ser guardada — a transcrição erra nomes, e uma memória que você nunca viu é uma memória que você não tem como corrigir.
Recursos
Tudo aqui está no código que já roda. Nada nesta página é a maquete de um recurso que ainda não existe.
⌥Espaço — o mesmo atalho do Raycast e dos apps de desktop do Claude e do Gemini — traz a janela e ativa o ditado. Fale, aperte de novo, confirme.
whisper.cpp · large-v3-turbo · Metal · no dispositivo
A recuperação é busca vetorial de verdade, não casamento de palavras. Cada resultado mostra o quão perto ele realmente ficou, então um resultado ruim se lê como uma busca ruim, e não como uma resposta errada com ar de certeza.
distância COSINE, invertida uma única vez, no domínio
O microfone continua aberto. Um detector decide quando você parou de falar, e falar por cima da resposta a interrompe no meio da palavra — esse comportamento é o que separa uma conversa de uma URA.
quadros em streaming · endpointing · barge-in
Uma voz cadastrada descarta o que a televisão disse e carimba quem falou na memória. Não é uma tranca, então está ligada a exatamente essas duas coisas — e apertar ⌥Espaço nunca é filtrado.
desligado até você cadastrar
Guardar e buscar custam um embedding. Sem um modelo de resposta configurado — o padrão — o app não gasta um token sequer. Perguntar por voz é o único caminho que chega a um modelo.
um piso de similaridade barra o modelo, e as fontes sempre aparecem
O crate de domínio não tem Tauri, nem cpal, nem SQLite, nem AWS. Um import acidental quebra o build em vez de corroer a fronteira em silêncio — e o frontend espelha isso, então a UI inteira roda sem toolchain Rust e sem conta AWS.
core · audio · llm · app · ui
Como funciona
O aplicativo acessa e busca memórias armazenadas localmente ou gravadas por agentes de terminal. Para que agentes (Claude CLI, Codex CLI, Antigravity CLI) acessem ou gravem memórias, é necessária a instalação do servidor MCP.
cpal captura, rubato reamostra para 16 kHz mono.
whisper.cpp sobre Metal, inteiramente na sua máquina.
Frases-guia decidem entre guardar e perguntar — antes de qualquer modelo, então rotear nunca custa um token. O palpite aparece como um chip editável.
A frase vira um vetor, pela API de memória.
Vetor e registro caem no mesmo item. A busca percorre ele.
A busca é eventualmente consistente, então a captura aparece na hora como “indexando” e um reconciliador a promove. Uma interface que escondesse a memória até o índice alcançar só pareceria quebrada.
Arquitetura
Não há código de backend neste repositório — nem código de embedding, nem SDK da AWS para armazenamento. O EchoBrain é um terceiro adaptador condutor sobre a porta do serviço de memória, ao lado do Lambda e do servidor MCP que integra a mesma memória semântica a agentes no terminal (Claude CLI, Codex CLI e Antigravity CLI) via Model Context Protocol (MCP).
Lambda
API HTTP
Servidor MCP
stdio, para agentes (Claude CLI, Codex CLI, Antigravity CLI)
EchoBrain
macOS
MemoryService
a porta, em agent-memory-core
API Gateway → Lambda → DynamoDB + Bedrock
A lista curta de dependências do crate de domínio é a arquitetura. Os componentes falam com uma interface de gateway, e é por isso que a UI inteira pode ser desenvolvida contra fixtures, sem rede e sem custo.
Instalar
macOS hoje.
macOS 13 Ventura ou superior · Apple Silicon ou Intel
Ainda não há release publicada, então o botão abre a página de releases. Quando houver, o build terá assinatura ad-hoc e não será notarizado — o Gatekeeper irá recusá-lo em qualquer Mac que não seja o que o compilou. Você pode contornar isso removendo o atributo de quarentena do macOS com `xattr -d com.apple.quarantine EchoBrain.app` (e garantindo permissão de execução com `chmod +x`), embora compilar do código seja o caminho suportado até que a notarização esteja disponível.
Um arquivo, e não variáveis de ambiente: um app aberto pelo Finder não herda perfil de shell. Todo campo é opcional — deixe o modelo de resposta de fora e o app nunca gasta um token.
endpoint = "https://memory-mcp-example.execute-api.us-east-1.amazonaws.com/"
region = "us-east-1" # the API's region — this is what SigV4 signs for
profile = "rfsales"
github_login = "dmux" # attribution only, never authorizationStatus
Verificado de ponta a ponta contra a API implantada. Clippy sem warnings (tratados como erros), 174 testes, export estático compilando.
Workspace, domínio, UI e Tauri ligados à API real.
cpal → rubato → whisper-rs sobre Metal.
Respostas faladas sobre Bedrock, roteamento guardar-ou-perguntar, configurações.
Quadros em streaming, endpointing, barge-in, janela de acompanhamento.
Diário em SQLite, visão de biblioteca, reconciliador, avaliação e desativação.
NSPanel, vibrancy, ícone na barra de menus, animação.
E o modelo de embedding por trás da identidade de quem fala.