Skip to main content
Glama

Expert Brain

Um grafo de conhecimento pessoal (latticework) que roda 100% na sua conta Cloudflare e conversa com o Claude via MCP.

Open source, criado por Eric Luciano na Mentoria Automações Inteligentes (Expert Integrado).

CI npm License: MIT

→ Como funciona o Expert Brain — a página do projeto, com o sistema explicado visualmente.

Você conversa com o Claude sobre uma ideia. Ele chama recall, varre o vault atrás de analogias em outros domínios, e só então oferece salvar a nota — atomizada, com tldr de uma frase e edges que nomeiam o mecanismo compartilhado com o que você já tinha guardado. Não é um app de notas: é uma disciplina de pensamento cross-domain embrulhada num servidor MCP, com um dashboard web por cima.

O que é

Single-user, self-hosted, sem terceiros: seus dados vivem no D1/Vectorize/R2 da sua própria conta Cloudflare, não numa API de alguém.

  • ~32 tools MCP — conhecimento (save_note, recall, expand, link, get_note, update_note, delete_note/restore_note, reembed, stats), tasks em kanban (save_task, list_tasks, list_tasks_due_today, update_task, complete_task, comment_task, share_task/unshare_task), captura rápida (capture, list_inbox, resolve_inbox), digest de resurfacing, mídia em notas (opcional, via R2) e um vault de contatos embutido (módulo src/contacts/, roda no mesmo Worker).

  • Console web (/app) — home, busca global Ctrl+K, grafo interativo 2D (Sigma.js + d3-force em Web Worker) e 3D, kanban de tasks com colunas e projetos customizáveis, journal, notas com comentários, contatos com dossiê/timeline, página de configuração (domínios, instruções do dono, API keys com escopo, backup manual).

  • Grafo com 9 tipos de edge (analogous_to, same_mechanism_as, causes, contradicts, refines, …) e 7 kinds de nota (concept, decision, insight, fact, pattern, principle, question) — task mora na mesma tabela mas fica fora do grafo e do recall (decisão de design, não bug: task é operacional, não conhecimento — ver specs 10-backend/12 e 10-backend/15).

  • Recall híbrido balanceado por domínio: embedding (bge-m3 via Workers AI, multilíngue) + FTS5, no máximo 3 notas por domínio até 5 domínios distintos — o objetivo é trazer a conexão inesperada, não só o hit mais óbvio. Isso é só pra notas (conhecimento); para achar uma task sem saber o id, use list_tasks({ query: "..." }) (busca textual dedicada, sem teto de tempo, cobre título+corpo, abertas e fechadas) — nunca recall.

  • Privacidade por nota/task (mark_private) e PATs com escopo (full / read / +private) — uma credencial com escopo read nem enxerga as tools de escrita no tools/list.

  • Share público read-only de nota ou task por link (/s/<token>), com expiração e revogação.

  • Backup automático: snapshot semanal D1 → R2 via cron (segunda-feira), mais backup manual pelo console.

  • PWA: manifest + share target — dá pra instalar o console e mandar conteúdo pra ele direto de outro app.

  • 12 domínios canônicos trancados por validação (management, sales, marketing, education, ai-applied, leadership, product, operations, personal-development, entrepreneurship, music, cognitive-science), com escape hatch (allow_new_domain) e domínios customizados via /app/config.

Related MCP server: Segundo Cérebro

Arquitetura

                    ┌──────────────────────────┐
   Claude Code /    │                          │
   Desktop / Web  ─▶│   /mcp   (OAuth 2.1 ou   │
   (cliente MCP)    │           PAT eb_pat_*)  │
                    │                          │
   Browser        ─▶│   /app/*  (sessão por    │      Cloudflare Worker
   (console web)     │           cookie)        │      (endpoint único)
                    │                          │
                    │   /s/<token>  (share      │
                    │    público read-only)     │
                    └────────────┬─────────────┘
                                 │
              ┌──────────────────┼──────────────────┬───────────────┐
              ▼                  ▼                  ▼               ▼
        ┌──────────┐      ┌────────────┐     ┌────────────┐  ┌──────────┐
        │    D1     │      │ Vectorize  │     │ Workers AI │  │    R2    │
        │ (SQLite)  │      │ 1024-dim   │     │  bge-m3    │  │  mídia + │
        │ notas +   │      │  cosine    │     │ embeddings │  │  backup  │
        │ edges+FTS5│      │            │     │            │  │(opcional)│
        └──────────┘      └────────────┘     └────────────┘  └──────────┘
                                 │
                          ┌────────────┐
                          │     KV     │
                          │ OAuth +    │
                          │ cache do   │
                          │   grafo    │
                          └────────────┘

Um único Worker (src/index.ts) serve as três superfícies acima na mesma URL. Bindings (declarados em wrangler.toml, gerados pelo setup):

Binding

Serviço

Função

DB

D1

Notas, edges, tags, tasks, FTS5

VECTORIZE

Vectorize

Índice 1024-dim cosine, um vetor por nota

AI

Workers AI

Embeddings multilíngues (@cf/baai/bge-m3)

OAUTH_KV

KV

Grants/tokens/registros de cliente OAuth

GRAPH_CACHE

KV

Layout pré-computado do grafo, cacheado

MEDIA (opcional)

R2

Anexos de nota — exige billing habilitado; sem ele o Brain sobe sem mídia

DB_CONTACTS

D1

Vault de contatos: pessoas, empresas, timeline (obrigatório pro módulo)

VECTORIZE_CONTACTS (opcional)

Vectorize

Índice expert-contacts-vec; sem ele a busca de contatos degrada pra SQL LIKE

KV_CONTACTS

KV

Estado/cache do módulo de contatos (obrigatório pro módulo)

MEDIA_CONTACTS (opcional)

R2

Avatares/mídia + backup do vault de contatos — exige billing; sem ele degrada sem mídia

MCP_OBJECT

Durable Object

Estado da sessão MCP (ExpertBrainMCP)

Dois crons ([triggers] no wrangler.toml): digest diário de tasks vencendo/atrasadas (dormente até você configurar TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID) e snapshot semanal de backup pro R2.

Instalação

O caminho ideal: deixe o Claude Code instalar pra você. Abra o Claude Code numa pasta vazia e cole o prompt abaixo. Ele confere os pré-requisitos, roda os comandos desta seção e, a cada etapa que acontece no navegador, pergunta se você quer que ele mesmo faça (dirigindo o browser) ou se prefere fazer à mão com ele guiando clique a clique. Os passos manuais desta seção continuam valendo pra quem prefere fazer tudo sozinho.

Clone https://github.com/Expert-Integrado/expert-brain e faça a instalação guiada completa do Expert Brain na minha conta Cloudflare, seguindo este protocolo:

1. PRÉ-REQUISITOS: confira Node 18+ (node --version) e o wrangler (npx wrangler --version). Se faltar algo, resolva comigo antes de seguir.

2. ETAPAS DE NAVEGADOR: o setup tem etapas que acontecem num navegador real — criar a conta Cloudflare (https://dash.cloudflare.com/sign-up), autorizar o "npx wrangler login" (abre o browser pra clicar Allow), conferir o account_id no dash se não der pra extrair do "npx wrangler whoami", criar um API token em https://dash.cloudflare.com/profile/api-tokens (só na rota alternativa via CLOUDFLARE_API_TOKEN, em vez do login), habilitar o billing pro R2 (opcional, mídia/backup) e autorizar o OAuth na primeira conexão do MCP. Para CADA uma delas, me pergunte com botões (AskUserQuestion): "Essa etapa é no navegador. Quer que eu faça pra você?"
   - Rota padrão: você dirige o navegador via Playwright MCP. Se não estiver instalado: claude mcp add playwright -- npx -y @playwright/mcp@latest
   - Alternativa: Claude in Chrome, no meu Chrome com as minhas sessões.
   - Login e senha quem digita sou EU, no navegador — nunca me peça senha de conta no chat.
   - Se eu preferir manual, me guie passo a passo e aguarde eu confirmar cada clique.

3. VALIDAÇÃO: valide cada etapa com um comando real antes de ir pra próxima (npx wrangler whoami depois do login; deploy e curl <worker-url>/status depois do provision). Falhou, pare e me mostre o erro — não siga por cima.

4. SEGREDOS: valores sensíveis só via wrangler secret put ou .env local — nunca em arquivo commitado, nunca colados no chat.

5. TESTE FINAL: conecte o MCP (claude mcp add --transport http expert-brain <worker-url>/mcp), salve uma nota de teste e faça um recall que a encontre, provando o ciclo de ponta a ponta. Termine com um resumo: URL do Worker, endpoint MCP, o que ficou configurado e próximos passos.

O Expert Brain roda num único Worker na sua conta Cloudflare, dentro do free tier. Notas, grafo, tasks, MCP, console web e o vault de contatos (pessoas, empresas, timeline, menções @ nas notas) vivem todos no mesmo deploy — o módulo de contatos é vendorizado em src/contacts/ e roda in-process. Não há segundo Worker nem repo separado pra instalar: o npm run setup provisiona tudo de uma vez. Contatos vêm sempre junto; quem não usa, ignora (a aba Contatos nasce com empty state).

Pré-requisitos:

  • Node.js 18+ (recomendado 20+) (nodejs.org)

  • Conta Cloudflare gratuita (cadastro) — sem cartão; a única exceção é a mídia/backup via R2, que exige habilitar billing (continua US$ 0 dentro do free tier)

1. Criar o projeto

npm create @expertintegrado/expert-brain@latest expert-brain
cd expert-brain

O scaffolder (@expertintegrado/create-expert-brain) copia o template — código-fonte, scripts, wrangler.example.toml, CLAUDE.md — pra pasta nova. O repo carrega um .npmrc com legacy-peer-deps=true: é intencional, porque agents@0.17.x declara peers opcionais (ai/chat/x402) que o resolver do npm não fecha sozinho e o runtime usa só agents/mcp. Sem essa flag, npm install cai em ERESOLVE.

npm install

2. Autenticar na Cloudflare

npx wrangler login    # abre o browser, clica "Allow"

3. Setup automático

npm run setup

Isso roda scripts/setup.mjs, que faz em um comando o que seria um runbook de 11 passos: verifica a autenticação, copia wrangler.example.tomlwrangler.toml, pergunta e-mail + senha de dono (12+ caracteres), cria os recursos na sua conta Cloudflare (D1, Vectorize e os 2 namespaces KV do Brain, mais os recursos do módulo de contatos embutido — D1 expert-contacts-db, Vectorize expert-contacts-vec, KV_CONTACTS e R2 expert-contacts-media; pula o que já existir, é idempotente), grava os IDs reais no wrangler.toml, gera o hash PBKDF2 da senha + SESSION_SECRET, sobe os secrets (wrangler secret put), faz wrangler deploy, chama POST /setup/provision pra rodar as migrations no D1, e instala os hooks de captura automática do Claude Code (se preferir rodar depois: node scripts/install-claude-hooks.mjs <url>). Ao final imprime a URL do Worker, o comando MCP e o link do dashboard.

Sem billing habilitado na Cloudflare (R2 exige, mesmo dentro do free tier)? O setup detecta e sobe sem mídia — todo o resto funciona normal. E se o Cloudflare pedir um cartão pra habilitar a mídia (R2): nada é cobrado automaticamente — o cartão só destrava recursos que seguem na faixa gratuita, e no uso normal você provavelmente nunca paga nada. Não quer anexos? Nem precisa cadastrar cartão; dá pra habilitar depois — notas, tasks e contatos sobem sem ele.

Pra reprovisionar do zero (trocar senha, recriar recursos): npm run setup -- --reinstall.

Como os hooks avisam de tarefas (política de cobrança). Os 6 hooks instalados seguem uma regra enxuta: o aviso de tarefas do dia acontece só na abertura da sessão — o agente abre a primeira resposta com "Antes de começarmos:" + as tasks do dia/atrasadas e só então responde o pedido. Esse aviso tem rate-limit: no máximo 1x por período do dia (manhã/tarde/noite, no fuso da máquina) e nunca em retomada de sessão — abrir várias sessões no mesmo dia não vira cobrança o tempo todo. Na compactação o hook lembra de salvar aprendizados e de manter o ciclo de vida das tasks (criar/atualizar/concluir), sem relistar pendências. Instalação antiga cobrando tasks no meio da sessão? Rode node scripts/install-claude-hooks.mjs <url do worker> de novo — ele regrava os hooks corretos e remove os antigos.

4. Primeiro acesso

Abra a URL impressa pelo setup (https://<seu-worker>.workers.dev/app/login) e entre com o e-mail e a senha que você definiu.

5. Conectar ao Claude

claude mcp add --transport http expert-brain https://<seu-worker>.workers.dev/mcp

A primeira conexão abre o fluxo OAuth 2.1 no browser. Depois, abra /app/config no console e cole o bloco de instruções do dono em Claude → Settings → Personalization → Custom instructions — ele entra no handshake de todo agente conectado.

Com o MCP conectado, o último passo é ligar o preenchimento automático — o Brain colhe sozinho e-mails, reuniões, CRM, chat de equipe e a memória que você já construiu no ChatGPT/Claude.ai/Gemini, e cria a importação como as primeiras tasks do seu board: siga o onboarding de memória. Você não aprova entrada por entrada; desfaz o que não quiser (tudo é reversível).

6. Contatos (já incluído)

O vault de contatos — pessoas, empresas, timeline, menções @contato em notas e tasks, a aba Contatos do console com dossiê e timeline, e os painéis de integração (WhatsApp, Instagram, Pipedrive) em /app/config — vem embutido no mesmo Worker (módulo src/contacts/, rodando in-process). O npm run setup do passo 3 já criou os recursos (D1 expert-contacts-db, Vectorize expert-contacts-vec, KV_CONTACTS, R2 expert-contacts-media) e gerou os tokens internos do módulo — não há segundo deploy nem repo separado pra configurar.

Quem não usa, ignora: a aba Contatos nasce com empty state e nada mais no Brain depende dela. Uma instalação anterior à fusão (só Brain) ganha os contatos no próximo npm run setup — ele detecta que faltam os recursos, cria, e não re-pergunta e-mail/senha.

Atualizando

Cada instalação roda no seu próprio Worker — atualizar é buscar o código novo e redeployar; dados e login continuam intactos (vivem no D1/Vectorize, não no código). Dois cenários:

  • Instalou pelo scaffolder (npm create): a pasta não é um clone git. Baixe o código novo por cima (zip do repo) preservando o seu wrangler.toml, ou clone o repo numa pasta nova e copie o wrangler.toml provisionado pra ela.

  • Clonou o repo: git pull direto.

Nos dois casos, depois:

npm install
npm run setup        # idempotente — redescobre os recursos existentes por nome, redeploya sem pedir e-mail/senha de novo

Uso rápido

Salvar uma ideia (o Claude decide chamar save_note depois de um recall):

"Acabei de sacar que tech debt se comporta como juros compostos — quanto mais você ignora, pior fica a taxa."

Buscar no vault:

"O que eu já pensei sobre feedback loops?" → o Claude chama recall("feedback loops"), lê os domínios retornados e traz o que for relevante.

Criar e consultar uma task:

"Cria uma task pra revisar o contrato até sexta." → save_task. "O que vence hoje?" → list_tasks_due_today (janela de até 168h/7 dias — é o "hoje + esta semana", não a listagem completa). "Cadê aquela task que eu criei sobre X, lá pra outubro?" → list_tasks({ query: "X" }), nunca recall — sem teto de tempo, acha qualquer task por título/corpo independente do quão distante seja o prazo.

Ver o grafo: abra https://<seu-worker>.workers.dev/app/graph — grafo 2D navegável; ?mode=3d pra visualização 3D.

Editar ou remover: update_note/update_task mudam campos existentes; delete_note é soft-delete (recuperável a qualquer momento via restore_note, sem prazo).

Frota de agentes — o board como barramento

Várias instâncias de Claude (PCs, containers 24/7, outros runtimes) podem colaborar pelo MESMO vault usando o Kanban de tasks como barramento de comunicação — sem chat entre agentes. Como funciona (specs no grupo specs/80-frota-agentes/):

  • Identidade = credencial, nunca a licença/conta que executa. Cada dispositivo recebe 1 PAT (eb_pat_...) vinculado a um usuário do tipo agent em /app/config. TODA escrita assina como esse usuário — não importa qual app (CLI, desktop, VS Code) ou qual assinatura Claude rodou a sessão. Duas sessões na mesma máquina com o mesmo PAT são, para o Brain, o mesmo agente.

  • Endereçamento: atribuir uma task a um agente (assignees) ou @mencioná-lo num comentário gera item no mailbox dele (check_mailbox/ack_mailbox — ler nunca marca lido; ack é ato explícito depois de agir).

  • Wake-up: cada dispositivo descobre que tem mensagem por pull — polling */30 (cron/daemon/hook) como reconciliador e, desde a spec 90, o long-poll GET /api/mailbox/wait como fast-path (o Worker responde na hora que nasce item; latência de segundos). Runbook por dispositivo: docs/frota-heartbeat.md.

  • Concorrência: antes de trabalhar uma task, o agente chama claim_task (lease atômico com expiração — agente que caiu nunca bloqueia a fila). Dois agentes disputando a mesma task: exatamente um ganha, o outro pula pra próxima.

  • Protocolo: comentários tipados [pedido] / [entrega] / [bloqueio] / [info]. Um [bloqueio] sem resposta do dono coloca a task na fila "Aguardando você" do board (e dispara push) até o dono responder no thread.

  • Fila de trabalho: list_tasks com assignee: "me" + available: true = "minhas tasks livres pra trabalhar agora".

Documentação e novidades

Desenvolvimento

Esta seção é o guia de setup de ambiente de dev — do zero, com o passo a passo por sistema operacional (macOS, Linux, Windows). Se você só quer usar o Expert Brain na sua conta, o caminho é a seção Instalação acima; o de baixo é pra quem vai rodar o código local, contribuir ou deployar.

Versões esperadas (validadas contra este repo)

Toda a stack é a mesma nos três sistemas — o runtime alvo é o Cloudflare Workers, não o SO local. O que importa é a toolchain:

Ferramenta

Versão

De onde vem

Como conferir

Node.js

18+ (mínimo em package.json engines); recomendado 20 LTS ou 22 LTS

nodejs.org ou um gerenciador de versão (nvm/fnm/Volta)

node --version

npm

10+ (vem com Node 20/22)

junto com o Node

npm --version

Wrangler

4.x (fixado em ^4.81.1 nas devDependencies)

instalado por npm install; use via npx wrangler

npx wrangler --version

TypeScript

5.6+

npm install (devDependency)

npx tsc --version

Vitest

4.x + @cloudflare/vitest-pool-workers 0.18+

npm install

Git

qualquer versão recente

git-scm.com

git --version

Não instale o Wrangler global. O projeto fixa a versão nas devDependencies; rodar npx wrangler (ou os scripts npm run) garante que todo mundo usa a mesma versão. Um wrangler global desatualizado é a causa nº 1 de erro de setup.

Além disso você vai precisar de uma conta Cloudflare gratuita (cadastro) — os recursos de dev (D1, Vectorize, KV) são criados nela, mas o wrangler dev roda tudo local (Miniflare), sem tocar produção.

Preparar o SO

O único pré-requisito específico de SO é ter Node LTS + Git. Escolha o caminho do seu sistema:

Com Homebrew:

brew install node git          # Node LTS + Git
node --version                 # confira: v20.x ou v22.x

Preferindo múltiplas versões de Node, use fnm (brew install fnm) ou nvm e rode fnm use --lts / nvm install --lts.

O Node dos repositórios de distro costuma ser antigo — prefira o NodeSource ou um gerenciador de versão:

# Opção A — nvm (recomendado, não precisa de sudo)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
# reabra o terminal, então:
nvm install --lts
nvm use --lts

# Opção B — NodeSource (Debian/Ubuntu, Node 22.x)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

sudo apt-get install -y git    # se ainda não tiver
node --version

Distros com apt/dnf/pacman funcionam igual — só garanta Node 18+ (de preferência 20/22).

Recomendado: PowerShell + winget.

winget install OpenJS.NodeJS.LTS
winget install Git.Git
# feche e reabra o terminal, então:
node --version

Para alternar versões de Node no Windows use fnm (winget install Schniz.fnm) ou o nvm-windows.

Notas específicas de Windows:

  • Rode os comandos no PowerShell ou no Terminal do Windows — os scripts do repo já detectam Windows (usam shell: true) e funcionam sem WSL.

  • Alternativamente, WSL2 (Ubuntu) dá um ambiente Linux completo e é a opção mais confortável se você já mexe com bash — nesse caso siga a aba Linux acima, dentro do WSL.

  • Se o npm install reclamar de permissão pra criar symlinks/scripts, abra o terminal como Administrador uma vez ou habilite o Modo de Desenvolvedor.

Clonar, instalar e autenticar

Estes passos são idênticos nos três sistemas (só o terminal muda):

git clone https://github.com/Expert-Integrado/expert-brain.git
cd expert-brain
npm install                    # respeita o .npmrc (legacy-peer-deps=true) — obrigatório
npx wrangler login             # abre o browser → clique "Allow"
npx wrangler whoami            # valida: mostra seu e-mail + account_id

Por que legacy-peer-deps? O repo carrega um .npmrc com legacy-peer-deps=true. É intencional: agents@0.17.x declara peers opcionais (ai/chat/x402) que o runtime não usa (só agents/mcp), e sem a flag o npm install cai em ERESOLVE. Como o .npmrc está no repo, rodar npm install da raiz já pega a flag — não precisa passar nada.

Sem browser na máquina (servidor headless, CI)? Em vez do wrangler login, exporte um API token: crie um em dash.cloudflare.com/profile/api-tokens e defina CLOUDFLARE_API_TOKEN no ambiente (export … no bash / $env:CLOUDFLARE_API_TOKEN="…" no PowerShell).

Provisionar sua instância (uma vez)

Para ter um Worker real na sua conta (necessário pra testar o fluxo completo, MCP, OAuth), rode o bootstrap — o mesmo da seção Instalação, passo 3:

npm run setup                  # cria D1/Vectorize/KV, gera secrets, deploya, roda migrations

É idempotente: reexecutar redescobre os recursos por nome e só redeploya. Detalhes completos (o que ele pergunta, o que cria, --reinstall) estão na seção Instalação.

Rodar local (Miniflare)

npm run dev                    # wrangler dev → http://localhost:8787 (Miniflare, tudo local)

O wrangler dev simula D1/KV/R2 localmente — você não precisa ter provisionado nada pra subir o servidor. Para logar no console local (/app/login), o Worker precisa das credenciais de dono em variáveis locais. O Wrangler lê isso de um arquivo .dev.vars na raiz (formato .env, gitignored — nunca commite):

# .dev.vars  (crie na raiz do repo — NÃO vai pro git)
OWNER_EMAIL=voce@exemplo.com
OWNER_PASSWORD_HASH=<hash>      # gere com: node scripts/hash-password.mjs
SESSION_SECRET=<32 bytes hex>   # gere com: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Para popular o console local com dados fictícios (7 kinds de nota, board de tasks, projetos, inbox) pra clicar e testar:

npm run seed:dev               # node scripts/seed-dev.mjs --local --force (só D1 LOCAL, nunca produção)

Testes

npm test                       # vitest run + vitest run --config vitest.auth.config.ts
npm run test:client            # suíte do client web (jsdom)
npm run test:watch             # vitest em watch mode
npm run typecheck              # tsc --noEmit na raiz + client + test + e2e
npm run e2e                    # Playwright contra o wrangler dev local (precisa de E2E_EMAIL/E2E_PASSWORD)

Os testes rodam em pools separados: o principal (vitest.config.ts, D1 + tools MCP com Vectorize/Workers AI mockados, tudo dentro do workerd), um pool node à parte (vitest.auth.config.ts) pro módulo de hash de senha (isolado das restrições do runtime dos Workers) e a suíte de client (vitest.client.config.ts, jsdom). O e2e (Playwright) sobe o wrangler dev, aplica o seed e loga uma vez — as credenciais vêm de E2E_EMAIL/E2E_PASSWORD (nunca hardcoded; use as mesmas do seu .dev.vars).

Playwright no primeiro uso: npx playwright install baixa os navegadores. Em Linux pode ainda faltar libs do sistema — rode npx playwright install-deps (ou sudo npx playwright install --with-deps chromium).

Build e deploy

npm run build:bundles          # empacota src/web/client → assets/*.bundle.js (esbuild)
npm run deploy                 # build:bundles + wrangler deploy + POST /setup/provision (scripts/deploy.mjs)

Cada deploy vai pro seu próprio Worker na sua conta Cloudflare; dados e login vivem no D1/Vectorize (não no código), então redeployar é seguro. Runbook de publicação do pacote npm (scaffolder) fica em RELEASING.md — não é o mesmo que deployar sua instância.

Fluxo de contribuição

O desenvolvimento é spec-driven: toda mudança relevante nasce como uma spec em specs/, pensada pra um agente de IA executar sem contexto externo. Antes de contribuir, leia specs/README.md (o protocolo) e specs/90-roadmap.md (a sequência de fases e gates). Os git hooks de commit são instalados automaticamente no npm install (script prepare).

Troubleshooting rápido

Sintoma

Causa provável

Correção

npm installERESOLVE

Flag legacy-peer-deps não aplicada (instalou fora da raiz, ou .npmrc sobrescrito)

Rode npm install na raiz do repo, ou npm install --legacy-peer-deps

wrangler: command not found

Tentou chamar o Wrangler global

Use npx wrangler … ou os scripts npm run

wrangler login não abre browser

Máquina headless/remota

Use CLOUDFLARE_API_TOKEN (ver acima)

/app/login não deixa entrar em local

Faltou .dev.vars com OWNER_*/SESSION_SECRET

Crie o .dev.vars (seção "Rodar local")

e2e/Playwright falha ao iniciar navegador (Linux)

Libs do sistema faltando

npx playwright install --with-deps chromium

Erro de symlink/EPERM no npm install (Windows)

Permissão de criação de link

Terminal como Admin uma vez, ou habilite o Modo de Desenvolvedor

Cron 10072 no deploy

Limite de 5 cron triggers por conta (free) no total

O repo já usa 1 cron consolidado; remova crons extras de outros Workers


Feito pela Expert Integrado.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Self-hosted personal knowledge graph running on Cloudflare, connecting to Claude as an MCP server for capturing atomic concepts and cross-domain analogies.
    20
  • F
    license
    Not graded
    quality
    C
    maintenance
    Built on Obsidian Vault, this MCP server integrates with Claude Code to provide personal knowledge management including note saving, full-text search, code graph extraction, and context resumption.
    1
  • A
    license
    Not graded
    quality
    A
    maintenance
    A zero-config personal knowledge management MCP server that enables Claude Desktop to automatically classify, search, and organize local Markdown notes using hybrid search and Graph RAG.
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.

  • Cloud-hosted MCP server for durable AI memory

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielterra/expert-brain'

If you have feedback or need assistance with the MCP directory API, please join our Discord server