Brains149 downloadsSync your vault with Brains, the persistent, cross-LLM second brain your AI never had. Pull pages in, edit, and push changes back. One memory for Claude, ChatGPT, and whatever's next.
Bidirectional sync between your Obsidian vault and a Brains wiki instance.
brains/ by default).npm install
npm run build
main.js and manifest.json to your vault's plugin folder:<vault>/.obsidian/plugins/brains-sync/
Once listed, search for Brains Sync in Settings → Community Plugins → Browse.
Open Settings → Brains Sync:
| Field | Description | Default |
|---|---|---|
| Brains instance URL | Base URL of your Brains deployment | https://lets.usebrains.app |
| Account | Connect to Brains — one-click OAuth2 sign-in | — |
| Vault folder | Subfolder where pages are synced | brains |
| API token (Advanced) | Optional Personal Access Token fallback for self-hosters | — |
Click Connect to Brains to sign in: your browser opens the Brains login, you approve, and Obsidian receives the access token automatically. Tokens (and any fallback PAT) are stored via Obsidian's SecretStorage and are never written to data.json or the vault.
Cmd/Ctrl+P) → Brains Sync: Pull from BrainsThe first pull bootstraps from GET /api/v1/export/download. Later pulls use GET /api/v1/pages (name + revision index) and fetch only changed pages, writing them to <vault-folder>/<page-name>.md.
Every .md file under <vault-folder>/ is read and synced back: existing pages are updated with a full-rewrite PUT /api/v1/page, and new pages are created with POST /api/v1/pages.
Sign-in uses OAuth 2.0 with PKCE (authorization-code flow). Click Connect to Brains, approve in the browser, and the plugin exchanges the code for an access token + refresh token; the access token is refreshed automatically before it expires. All API requests send Authorization: Bearer <token>.
For self-hosted servers or non-OAuth setups, an optional Personal Access Token can be entered under Settings → Brains Sync → Advanced.
MIT — see LICENSE.