name: ob1-local-http
description: |
Capture and search thoughts against a self-hosted Open Brain over plain
HTTPS, with no MCP transport involved. Use this skill in environments
where Claude Code's MCP feature is disabled or the network blocks remote
MCP endpoints, but the brain stack from the companion local-brain-no-mcp
recipe is reachable on the local network. Triggers: prompts like
"remember this", "save that for later", "what did I note about X",
"search my brain for Y", "what thoughts touched on Z", or any explicit
request to record or recall personal memory.
author: dhanjit
version: 0.1.0
OB1 Local HTTP
Problem
The canonical Open Brain stack assumes Claude Code can talk to a remote
Supabase MCP server. In environments that disable MCP entirely -- corporate
networks, air-gapped offices, restricted Claude Code builds -- that path is
not available. This skill replaces it with curl calls to a LAN-resident
Open Brain (see the local-brain-no-mcp recipe), keeping the same
capture-and-recall behavior without any MCP protocol involvement.
When to Use
- The user wants to remember, record, save, capture, or note something.
- The user wants to search, recall, retrieve, find, or look up something they previously captured.
- The user wants to see recent thoughts (e.g. "what have I been thinking about", "show me today's notes").
When Not to Use
- The environment has a working remote Open Brain MCP connection -- prefer the canonical MCP-based capture/search tools.
- The required environment variables
BRAIN_URLandBRAIN_ANON_KEYare not set on the dev host -- this skill cannot function without them; ask the user to followlocal-brain-no-mcp's install instructions first.
Required Environment
On each dev host that will use this skill, the user must export:
export BRAIN_URL="http://<brain-host>:8000" # Supabase Kong gateway
export BRAIN_ANON_KEY="eyJhbGciOi..." # written by setup.sh
If either is missing, stop and tell the user. Do not guess values.
Process
Capture
When the user says something like "remember X" or "save this thought":
curl -fsS -X POST "$BRAIN_URL/functions/v1/capture" \
-H "apikey: $BRAIN_ANON_KEY" \
-H "Authorization: Bearer $BRAIN_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"<the thought>","metadata":{"source":"claude-code"}}'
Optional metadata fields: source, tags (array of strings),
thread_id, anything else useful. The server fingerprints content and
de-duplicates -- re-capturing identical text returns the existing id.
Search
When the user wants to recall:
curl -fsS -X POST "$BRAIN_URL/functions/v1/search" \
-H "apikey: $BRAIN_ANON_KEY" \
-H "Authorization: Bearer $BRAIN_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"<what to find>","match_count":10,"match_threshold":0.65}'
match_threshold defaults to 0.7. Lower it to 0.5-0.65 for broader recall;
raise to 0.8+ for precision. Cap match_count at 100.
Browse recent
When the user asks "what have I been thinking about" or wants a list rather than a similarity search:
curl -fsS "$BRAIN_URL/functions/v1/list?limit=20" \
-H "apikey: $BRAIN_ANON_KEY" \
-H "Authorization: Bearer $BRAIN_ANON_KEY"
Output
- For captures: confirm the id and the de-dupe fingerprint to the user in one sentence. Don't paraphrase the captured content back at them.
- For searches: surface the top results with similarity scores and created_at timestamps. Order by similarity descending. If no results cross the threshold, say so plainly and suggest lowering it.
- For browse: a compact bullet list with truncated content (first ~120 chars) and timestamps.
Failure Modes
- HTTP 502 with "unable to reach Ollama": the brain host's Ollama service
is down. Tell the user to
docker compose pson the brain host. - HTTP 502 with "did you 'ollama pull...'": the embedding model isn't
loaded. Tell the user to run the documented
ollama pullstep. - HTTP 502 with "embedding-dim mismatch": the brain's
EMBED_DIMenv was changed after the volume was initialized. Tell the user to read the "one-way door" section oflocal-brain-no-mcp's README. - HTTP 401 or 403:
BRAIN_ANON_KEYis wrong or expired. Tell the user to checksupabase-docker/docker/.envon the brain host. - Network timeout: the brain host is unreachable. Tell the user to ping the brain host from this dev host.
Notes
- Never log or echo
BRAIN_ANON_KEY-- it's a long-lived JWT. - This skill never installs or invokes any MCP server, by design.
- The brain host generates embeddings itself; this dev host doesn't need Ollama or any model files.