Offline-first "second brain" management system for capturing, classifying, and surfacing thoughts.
Brain provides a capture-classify-store-surface workflow:
- Capture: Dump thoughts into a single inbox
- Classify: AI routes thoughts to appropriate databases
- Store: Persist to People, Projects, Ideas, or Admin
- Surface: Daily digests and weekly reviews
- Chat-like Inbox: Single input for capturing thoughts
- AI Classification: LM Studio classifies with confidence scores
- Four Databases: People, Projects, Ideas, Admin
- Needs Review Queue: Low-confidence items await user decision
- Fix/Correct Flow: Reclassify misrouted thoughts
- Daily Digest: AI-generated summary of actions and status
- Weekly Review: GTD-style open loops and accomplishments
- Trust Panel: Full audit trail of classifications
Track individuals with:
- Contact info
- Last interaction date
- Topics discussed
- Follow-up actions
- Relationship context
Manage projects with:
- Status (active, planned, on-hold, completed)
- Goals and objectives
- Next actions
- Deadlines
- Related people
Capture ideas with:
- Category (product, content, business, tech)
- Maturity (raw, explored, validated, implemented)
- Related projects or people
- Evaluation notes
Track administrative tasks:
- Due dates
- Priority
- Status
- Related people or projects
- Completion notes
./data/brain/
├── meta.json # Settings and scheduler state
├── inbox.json # All captured thoughts with classifications
├── people.json # People records
├── projects.json # Projects with status tracking
├── ideas.json # Ideas and concepts
├── admin.json # Administrative tasks
├── buckets.json # Custom bucket definitions
├── links.json # Cross-record links
├── memories.json # Brain memories
├── journals.json # Daily Log entries
├── memory-bridge-map.json # Brain↔CoS memory bridge mapping
├── obsidian-vaults.json # Obsidian vault sync config
├── sync_log.jsonl # Obsidian sync history
├── digests.jsonl # Daily digest history
└── reviews.jsonl # Weekly review history
The classifier uses LM Studio to analyze captured thoughts and:
- Determine the appropriate database (People, Projects, Ideas, Admin)
- Extract structured data (names, dates, priorities, etc.)
- Calculate confidence score (0.0-1.0)
- Provide reasoning for classification decision
- High (≥0.8): Auto-routed to database
- Medium (0.5-0.8): Suggested route, user can confirm or change
- Low (<0.5): Marked "needs review", user must choose
Generated daily (configurable schedule):
- Summary of captured thoughts
- Actions taken
- Projects with recent activity
- People interacted with
- Admin items due soon
- Ideas ready for next steps
Generated weekly (GTD-style):
- Open loops by database
- Accomplishments
- Projects to review
- People to follow up with
- Ideas to explore
- Admin items to address
| Route | Description |
|---|---|
| POST /api/brain/capture | Capture and classify thought |
| GET /api/brain/inbox | List inbox log with filters |
| POST /api/brain/review/resolve | Resolve needs_review item |
| POST /api/brain/fix | Correct misclassified item |
| GET/POST/PUT/DELETE /api/brain/people/:id? | People CRUD |
| GET/POST/PUT/DELETE /api/brain/projects/:id? | Projects CRUD |
| GET/POST/PUT/DELETE /api/brain/ideas/:id? | Ideas CRUD |
| GET/POST/PUT/DELETE /api/brain/admin/:id? | Admin CRUD |
| GET /api/brain/digest/latest | Get latest daily digest |
| GET /api/brain/review/latest | Get latest weekly review |
| POST /api/brain/digest/run | Trigger daily digest |
| POST /api/brain/review/run | Trigger weekly review |
| GET/PUT /api/brain/settings | Get/update settings |
| Template | Purpose |
|---|---|
| brain-classifier | Classify captured thoughts |
| brain-daily-digest | Generate daily summary |
| brain-weekly-review | Generate weekly review |
- Inbox: Chat-like capture interface with classification results
- Memory: CRUD views for People, Projects, Ideas, Admin
- Digest: Daily and weekly summaries with run buttons
- Trust: Audit trail with classification confidence and reasoning
| File | Purpose |
|---|---|
server/lib/brainValidation.js |
Zod schemas for all Brain entities |
server/services/brain.js |
Core business logic |
server/services/brainStorage.js |
JSONL/JSON file operations |
server/services/brainScheduler.js |
Daily/weekly job scheduler |
server/routes/brain.js |
Aggregator router mounting brainCapture, brainCrud, brainDigest, brainSettings, brainLinks, brainGraph, brainSync, and brainDailyLog |
client/src/pages/Brain.jsx |
Main page with tabs |
client/src/components/brain/tabs/*.jsx |
Tab components |
data/prompts/stages/brain-*.md |
Prompt templates |
LM Studio must be running with a capable chat model:
- Download and install LM Studio
- Load a chat model (e.g., gptoss-20b, qwen-2.5, etc.)
- Start the local server on port 1234 (default)
- Configure the Brain system to use the model
brain: {
enabled: true,
provider: 'lmstudio',
endpoint: 'http://localhost:1234/v1/chat/completions',
model: 'gptoss-20b',
minConfidence: 0.5,
digestSchedule: '0 18 * * *', // Daily at 6pm
reviewSchedule: '0 9 * * 0' // Weekly on Sunday at 9am
}1. User captures: "Met with Sarah about the new project. Need to follow up next week."
2. AI classifies:
- Database: People + Projects
- Confidence: 0.85
- Reasoning: "Mentions person (Sarah) and project context with action item"
3. System creates:
- Person record: "Sarah" with last interaction today
- Project record: "New project" with status "planned"
- Admin task: "Follow up with Sarah" due next week
4. Daily digest includes:
- "New person added: Sarah"
- "New project started: New project"
- "Action due: Follow up with Sarah"
5. Weekly review shows:
- Open loop: "New project (planned) - needs next actions"
- Follow-up needed: "Sarah - follow up scheduled"