Sistema local de RAG para amplificação de agentes de IA via MCP + Obsidian. 100% local · 100% gratuito · máximo desempenho · segurança zero-trust.
| Dependência | Versão mínima | Instalação |
|---|---|---|
| Node.js LTS | 20.x | https://nodejs.org |
| Ollama | latest | https://ollama.com |
| Obsidian | latest | https://obsidian.md |
| Plugin: Local REST API | latest | ver seção abaixo |
git clone https://github.com/seu-usuario/obsidianrag-superagent
cd obsidianrag-superagent
npm install
npm run buildollama pull nomic-embed-textVerifique:
ollama run nomic-embed-text "teste"- Abra o Obsidian → Settings → Community plugins → Browse
- Pesquise Local REST API e instale
- Ative o plugin
- Em Settings → Local REST API:
- Anote a API Key gerada
- Confirme que está rodando na porta 27123
Copie os scaffolds incluídos no repositório:
# Vault Global
cp -r vault-templates/global ~/obsidian/global-vault
# Vault do seu projeto (repita para cada projeto)
cp -r vault-templates/project ~/obsidian/meu-projeto-vaultAbra cada vault no Obsidian: File → Open vault → selecione a pasta.
mkdir -p ~/.obsidianrag
cp .obsidianrag.config.example.yaml ~/.obsidianrag/config.yamlEdite ~/.obsidianrag/config.yaml e ajuste:
vaults.global.path→ caminho absoluto do seu vault globalvaults.projects[].path→ caminho absoluto do vault de cada projeto- O id do projeto (
vaults.projects[].id) será usado para identificar o vault nas tool calls do MCP
# Indexar o vault global
npx obsidianrag index global
# Indexar o vault de um projeto
npx obsidianrag index meu-projeto
# Verificar status
npx obsidianrag statusnpx obsidianrag start --generate-token
# → Token salvo em ~/.obsidianrag/session.token
# → Guarde este token; será usado na configuração do agente.Adicione ao arquivo de configuração do opencode (~/.config/opencode/config.json ou equivalente):
{
"mcpServers": {
"obsidianrag": {
"command": "node",
"args": ["/caminho/para/obsidianrag-superagent/dist/src/interface/mcp/McpServer.js"],
"env": {
"OBSIDIANRAG_TOKEN": "SEU_TOKEN_AQUI",
"OBSIDIANRAG_CONFIG": "/Users/seu-usuario/.obsidianrag/config.yaml"
}
}
}
}Adicione ao .claude/settings.json na raiz do projeto:
{
"mcpServers": {
"obsidianrag": {
"command": "node",
"args": ["/caminho/para/obsidianrag-superagent/dist/src/interface/mcp/McpServer.js"],
"env": {
"OBSIDIANRAG_TOKEN": "SEU_TOKEN_AQUI",
"OBSIDIANRAG_CONFIG": "/Users/seu-usuario/.obsidianrag/config.yaml"
}
}
}
}Adicione ao painel MCP Servers das configurações:
- Command:
node /caminho/para/obsidianrag-superagent/dist/src/interface/mcp/McpServer.js - Environment variables:
OBSIDIANRAG_TOKEN= seu tokenOBSIDIANRAG_CONFIG=/Users/seu-usuario/.obsidianrag/config.yaml
-
Crie o vault Obsidian:
cp -r vault-templates/project ~/obsidian/novo-projeto-vault -
Abra o vault no Obsidian e configure como descrito no passo 3b.
-
Adicione o projeto à configuração em
~/.obsidianrag/config.yaml:projects: - id: 'novo-projeto' path: '~/obsidian/novo-projeto-vault' permissions: write: ['opencode'] read: ['*']
-
Indexe:
npx obsidianrag index novo-projeto npx obsidianrag status
# Indexação
npx obsidianrag index <vaultId> [--full | --incremental]
# Busca manual
npx obsidianrag search "query em linguagem natural" --vault global --top-k 5
# Escrever nota manualmente
npx obsidianrag write-note --vault meu-projeto --path "bugs/bug-001.md" --file ./nota.md
# Listagem e status
npx obsidianrag list-vaults
npx obsidianrag status
# Validação de schema
npx obsidianrag validate-schema --file ./minha-nota.md
# Migração de schema
npx obsidianrag migrate-schema --vault global --dry-run
# Dead Letter
npx obsidianrag dead-letter list
npx obsidianrag dead-letter retry --id <itemId>
# Benchmark de qualidade (Fase 4)
npx obsidianrag benchmark# Testes unitários (TDD)
npm test
# Testes com coverage
npm run test:coverage
# BDD (Cucumber)
npm run test:bdd
# Contract tests (Pact)
npm run test:contract
# Property-based tests
npm run test:property
# Mutation testing (demorado — use em release)
npm run test:mutation
# Build
npm run build
# Watch mode
npm run dev| Variável | Padrão | Descrição |
|---|---|---|
OBSIDIANRAG_CONFIG |
~/.obsidianrag/config.yaml |
Caminho da config |
OBSIDIANRAG_TOKEN |
lido de ~/.obsidianrag/session.token |
Token de sessão MCP |
OBSIDIANRAG_LOG_LEVEL |
info |
Nível de log (debug/info/warn/error) |
Este projeto segue Clean Architecture + Hexagonal Architecture (Ports & Adapters) + DDD.
Interface (MCP / CLI)
↓
Application (casos de uso)
↓
Domain (entidades, ports, events) ← zero dependências externas
↑
Infrastructure (adapters: SQLite-vec, Ollama, Obsidian API)
Toda seta de dependência aponta para dentro. O Domain não conhece SQLite, Ollama ou MCP.
Para detalhes completos, consulte o PRD em docs/PRD.md.
Ollama não responde:
ollama serve # iniciar o servidor
ollama list # verificar se nomic-embed-text está instaladoObsidian REST API não conecta:
- Verifique se o plugin está ativo em Settings → Community plugins
- Confirme que a porta 27123 está livre:
lsof -i :27123 - Verifique se a API key no config.yaml corresponde à do plugin
Índice desatualizado após editar notas no Obsidian:
npx obsidianrag index <vaultId> --incrementalNota rejeitada (Dead Letter):
npx obsidianrag dead-letter list
npx obsidianrag validate-schema --file ./minha-nota.md
# corrigir o frontmatter e re-tentar:
npx obsidianrag dead-letter retry --id <itemId>