As tuas notas, com memória.
Your notes, with memory.
Um cofre Markdown (compatível com o Obsidian) que procura por significado, responde com fontes, arruma as ideias soltas sozinho — e deixa os teus agentes de IA ler e escrever sem nunca sobrepor o que escreveste. Na tua máquina, só Python, sem conta em lado nenhum.
A Markdown vault (Obsidian-compatible) that searches by meaning, answers with sources, tidies loose ideas on its own — and lets your AI agents read and write without ever overwriting what you wrote. On your machine, plain Python, no account anywhere.
Os teus ficheiros
Your files
Markdown numa pasta com histórico git. Abre com o Obsidian, o vim, o que quiseres. Sem base de dados fechada.
Markdown in a folder with git history. Open it with Obsidian, vim, anything. No closed database.
Pesquisa por significado, offline
Semantic search, offline
Com embeddings locais (Ollama) encontras «aquela nota do barco das 8» sem acertar nas palavras. Sem embeddings, procura por palavras (BM25).
With local embeddings (Ollama) you find “that note about the 8 o’clock ferry” without matching the words. Without them, lexical search (BM25).
Agentes que não estragam nada
Agents that break nothing
Servidor MCP com 7 ferramentas, para o Claude, o ChatGPT, o Codex. Cada escrita exige o hash da versão lida; se mudou, o agente recebe o texto actual e funde. Não há apagar.
MCP server with 7 tools, for Claude, ChatGPT, Codex. Every write needs the hash of the version read; if it changed, the agent gets the current text and merges. There is no delete.
Nada se perde numa corrida
Nothing lost in a race
Escritas atómicas compare-and-swap (renameat2), trinco entre processos, cópias de segurança do que sai numa troca. Auditado por uma IA de outra família.
Atomic compare-and-swap writes (renameat2), cross-process lock, safety copies of whatever leaves in a swap. Audited by an AI of another family.
Mesmo sem rede
Truly offline
A interface guarda uma cópia local (service worker + IndexedDB) com trancas por sessão: editas no telemóvel sem rede e sincroniza quando voltar.
The UI keeps a local copy (service worker + IndexedDB) with per-session locks: edit on your phone with no network, sync when it is back.
Diagramas, fórmulas, IA no editor
Diagrams, formulas, AI in the editor
Mermaid e KaTeX como no Obsidian; editor CodeMirror 6 com resumir, reescrever, continuar. Segredos em claro são recusados ao gravar.
Mermaid and KaTeX as in Obsidian; a CodeMirror 6 editor with summarise, rewrite, continue. Plaintext secrets are refused on save.
Instalar
Install
git clone https://github.com/inforjota/basalt basalt && cd basalt
python3 -m basalt iniciar --dados ~/basalt-dados --email tu@exemplo.pt
BASALT_CONFIG=~/basalt-dados/basalt.toml python3 -m basalt serve # http://127.0.0.1:8121
Linux com Python ≥ 3.11 e git — no Windows dentro do WSL2, no Mac com o Docker. Chega um portátil: ver «Só com um portátil» em docs/INSTALAR.md. IA local opcional com o Ollama (nomic-embed-text + um modelo de chat).
Linux with Python ≥ 3.11 and git — on Windows inside WSL2, on a Mac with Docker. A laptop is enough: see “Só com um portátil” in docs/INSTALAR.md. Optional local AI with Ollama (nomic-embed-text + a chat model).
Traz a tua IA
Bring your own AI
Usa o Claude (claude.ai, app e telemóvel) ou o ChatGPT com as tuas notas, na subscrição que já pagas: na página 🔌 Ligar a tua IA copias um endereço, colas na tua IA, entras e carregas em «Permitir». Sem chaves para copiar — é OAuth, e cortas o acesso quando quiseres com um clique em «Revogar». Precisa de o Basalt se ver na internet (proxy HTTPS ou túnel); num portátil, só enquanto estiver ligado.
Use Claude (claude.ai, desktop and mobile) or ChatGPT with your notes, on the plan you already pay for: on the 🔌 Connect your AI page you copy one address, paste it into your AI, sign in and press “Allow”. No keys to copy — it is OAuth, and you cut access whenever you want with one click on “Revoke”. Basalt must be reachable from the internet (HTTPS proxy or tunnel); on a laptop, only while it is on.
https://notas.exemplo.pt/mcp
Agentes no terminal também: claude mcp add basalt -- python3 -m basalt mcp --utilizador tu@exemplo.pt, e o Codex com um token criado na mesma página. Depois: «procura nas minhas notas o que decidi sobre o servidor», «acrescenta à nota projecto_x que…». Tudo em docs/MCP.md.
Terminal agents too: claude mcp add basalt -- python3 -m basalt mcp --utilizador you@example.com, and Codex with a token made on the same page. Then: “search my notes for what I decided about the server”, “append to note project_x that…”. All in docs/MCP.md.
Segurança, em duas linhas
Security, in two lines
Escuta em 127.0.0.1 por omissão; para a rede, um proxy HTTPS à frente. Sessões HttpOnly/SameSite=Strict, scrypt, limite de tentativas por IP. O MCP por HTTP só aceita Authorization: Bearer — nunca o cookie — por isso um site de terceiros no teu browser não consegue escrever nas tuas notas.
Listens on 127.0.0.1 by default; for the network, an HTTPS proxy in front. HttpOnly/SameSite=Strict sessions, scrypt, per-IP attempt limit. MCP over HTTP accepts Authorization: Bearer only — never the cookie — so a third-party site in your browser cannot write to your notes.
Não queres instalar sozinho?
Don't want to install it yourself?
- Instalado por nós: 49 €, pagos uma vez, com IVA. Instalamos no teu computador ou servidor e ligamos a tua IA.
- Basalt na nuvem (beta grátis, por convite): não instalas nada e os servidores ficam na UE. É uma versão de teste: pode ter falhas ou paragens e não há garantia de funcionamento contínuo.
- Installed for you: €49, paid once, VAT included. We install it on your computer or server and connect your AI.
- Basalt in the cloud (free beta, by invitation): nothing to install, and the servers are in the EU. It is a test version: it may have bugs or outages, and there is no uptime guarantee.
Mais em inforjota.com/basalt, onde também pedes acesso à beta. O código continua grátis e completo; o que se paga é o serviço.
More at inforjota.com/basalt (page in Portuguese), where you can also ask to join the beta. The code stays free and complete; what you pay for is the service.