Get Started. Deploying to Cloudflare takes only 2 Minutes - Deploy to Cloudflare in One Click
You use Claude for some things, ChatGPT for others, Cursor for code. But your context — your projects, decisions, preferences — doesn’t move with you. You re-explain yourself constantly.
Second Brain fixes that. One shared memory, available in every AI tool you use.
And unlike the built-in memory inside any single app, this one is yours. It lives in your own account. No platform controls it, and no platform can take it away.
Tip
Have a question, feature idea, or want to show how you’re using it? Join the conversation in GitHub Discussions! That’s where releases get announced and the roadmap gets shaped.
Connect Second Brain to whichever AI tools you use. Then tell it things once. It finds them later by meaning, so asking “what did I decide about the pricing model?” surfaces the right note even if you never used those exact words when you saved it.
| Tool | What it does |
|---|---|
remember |
Store anything: ideas, decisions, project context |
append |
Add updates to an existing entry without creating duplicates |
update |
Replace an entry’s content entirely |
recall |
Finds memories by meaning, not exact wording |
list_recent |
Browse recent memories by date |
forget |
Delete an entry |
Memory is only useful if it actually gets filled. Second Brain connects to the tools and moments where context naturally lives.
- CLI —
brain remember,brain recall, and more from your terminal —npm install -g second-brain-cf-cli - Obsidian — notes sync automatically via the community plugin · available in Obsidian Community Plugins
- iOS — Brain Dump, Text Brain Dump, and Save to Brain shortcuts in
integrations/ios-shortcuts/ - Browser extension — capture any page or highlighted text in one click via the Chrome extension
- Bookmarklet — lightweight option in
integrations/bookmarklet.js - Any AI client — use
remembermid-conversation, right when something matters
Before you deploy: You’ll be asked to set an
AUTH_TOKEN— the password your AI clients use to connect. Use a memorable phrase (coffee-lover-2026) or runopenssl rand -base64 32for a stronger one. Save it — you'll need it in step 3.
-
Deploy to Cloudflare — one click, everything provisions automatically. Set your
AUTH_TOKENwhen prompted. -
Using Claude Code or Codex CLI? Run one command and paste in your worker URL — it wires up global instructions and the MCP connection via OAuth, so your token never touches the script:
# macOS / Linux / WSL / Git Bash curl -fsSL https://raw.githubusercontent.com/rahilp/second-brain-cloudflare/main/scripts/connect-ai-clients.sh | bash -s -- https://YOUR-WORKER-URL
# Windows (PowerShell) iex "& { $(irm https://raw.githubusercontent.com/rahilp/second-brain-cloudflare/main/scripts/connect-ai-clients.ps1) } -WorkerUrl https://YOUR-WORKER-URL"
-
Using ChatGPT or Claude (desktop app or web)? These need two quick manual steps in their UI — paste your custom instructions into their personalization settings, and add
https://YOUR-WORKER-URL/mcpas a custom MCP connector. Each app's exact menus differ, so follow the per-app steps in the wiki.
That’s it. Your memory is live and ready across every tool you connect.
# Verify it's working (replace YOUR-WORKER-URL and YOUR-TOKEN with your values)
curl -X POST https://YOUR-WORKER-URL/capture \
-H "Authorization: Bearer YOUR-TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "second brain is working", "source": "test"}'
# → {"ok":true,"id":"..."}The /mcp endpoint supports OAuth 2.0 (discovery + dynamic client registration),
so any MCP client that can open a browser to authenticate connects without ever
putting a token in a config file or URL. When you add https://<your-worker-url>/mcp
as a connector, the client detects the WWW-Authenticate challenge, registers itself,
and opens the worker's hosted login
page; enter your AUTH_TOKEN there to authorize. claude.ai, ChatGPT, Claude Code
(claude mcp add --transport http second-brain <url>/mcp, no --header needed), and
Codex CLI (codex mcp add second-brain --url <url>/mcp, which detects OAuth support
and starts the login flow itself) all use this flow.
Clients that can't open a browser — e.g. mcp-remote in headless contexts — can still
fall back to the static token via Authorization: Bearer <AUTH_TOKEN>.
OAuth needs a KV namespace (OAUTH_KV) to store tokens and client registrations.
The Deploy to Cloudflare button provisions it automatically.
Deploying manually, follow these steps. Wrangler validates the entire config before running any command, so the order matters:
-
Remove the placeholder
[[kv_namespaces]]block fromwrangler.toml(the one with the emptyid). -
Create the namespace:
wrangler kv namespace create OAUTH_KV
-
Copy the
idfrom the output and add it back towrangler.toml:[[kv_namespaces]] binding = "OAUTH_KV" id = "<paste id here>"
The key change is the warning to add the real
idbefore running any other wrangler commands, since wrangler validates the entire config upfront and rejects an empty string.
- Setup Guide — deploy, token setup, connecting AI clients
- How It Works — semantic search, chunking, duplicate detection
- Connect to AI Clients — Claude Desktop, Claude Code, claude.ai, iOS
- Capture from Anywhere — browser extension, bookmarklet, iOS Shortcuts, share sheet
- Web UI — dashboard and mobile interface
- Obsidian Plugin — install, configure, sync modes
- API Reference — /capture, /append, /update, /list, /recall, /forget, /count, /tags, /stats, /chat, /digest, /mcp endpoints
Cloudflare Workers · D1 SQLite · Vectorize · Workers AI · KV · MCP TypeScript SDK · MIT License
All free tier at personal scale. Your data stays in your own Cloudflare account.
