How oscampo/2obrain works
2oBrain is a records-and-memories “second brain” backed by Supabase: capture dated, sourced facts, organize them into memories, and retrieve or maintain them through CLI, dashboard, and MCP clients. The main workflow is capture or extract → classify and link → persist → hybrid search and review. Separate capabilities include page ingestion, timelines, graph exploration, and Claude Code hooks. The tree and excerpts document these entry points and some calls; unsampled wiring is represented only where the README explicitly describes it.
Main entry points: dashboard-server.mjs Local dashboard API · remember.mjs Capture fact · search.mjs Hybrid search · extract-page-records.mjs Extract page records
Components 20
Capture and ingest
- Capture fact
scripts/db/remember.mjs - Extract session records
scripts/db/extract-records.mjs - Extract page records
scripts/db/extract-page-records.mjs - Load pages
scripts/db/load-pages.mjs
Records and memories
- Memory management
scripts/db - Classification and linking
scripts/db/lib
Search and access
- Hybrid search
scripts/db/search.mjs - Memory timeline
scripts/db/timeline.mjs - Memory status
scripts/db/memory-status.mjs - Memory graph
scripts/db/graph.mjs - Graph traversal
scripts/db/traverse.mjs - Embedding and reranking
scripts/db/lib/embed.mjs
User interfaces
- Local dashboard API
scripts/db/server/dashboard-server.mjs - Deno MCP server
deno-deploy/mcp-server/main.ts - Supabase MCP server
supabase/functions/mcp-server/index.ts
Session automation
- Capture reminder hook
scripts/hooks/stop-capture-check.mjs - Day-start gate
scripts/hooks/greeting-gate.mjs
Other components
- User or agent
- Supabase database
- LLM providers
Connections 36
- User or agent → Capture fact: records fact
- Capture fact → Classification and linking: classifies and links
- Capture fact → Supabase database: writes records
- Capture fact → LLM providers: requests classification
- User or agent → Extract session records: requests extraction
- Extract session records → LLM providers: extracts candidates
- Capture reminder hook → Extract session records: runs extraction
- User or agent → Extract page records: requests extraction
- Extract page records → Supabase database: reads and suggests matches
- Extract page records → LLM providers: extracts candidates
- User or agent → Load pages: loads pages
- Load pages → Supabase database: loads page data
- User or agent → Hybrid search: searches
- Hybrid search → Embedding and reranking: embeds and reranks
- Hybrid search → Supabase database: queries records and pages
- User or agent → Memory timeline: reviews history
- Memory timeline → Supabase database: reads timeline
- User or agent → Memory status: checks current state
- Memory status → Supabase database: reads current records
- User or agent → Memory graph: explores connections
- Memory graph → Supabase database: reads graph data
- User or agent → Graph traversal: traverses connections
- Graph traversal → Supabase database: reads relationships
- User or agent → Memory management: maintains memories
- Memory management → Supabase database: updates memory graph
- User or agent → Local dashboard API: uses dashboard
- Local dashboard API → Hybrid search: exposes search
- Local dashboard API → Memory management: exposes maintenance
- Local dashboard API → Memory status: exposes status
- Local dashboard API → LLM providers: synthesizes answers
- User or agent → Deno MCP server: connects via MCP
- Deno MCP server → Supabase database: searches and captures
- User or agent → Supabase MCP server: connects via MCP
- Supabase MCP server → Supabase database: searches and captures
- Supabase MCP server → LLM providers: uses model services
- User or agent → Day-start gate: submits prompt