Scribble
A daily execution co-pilot that captures your day, detects drift, routes work, and provides lift when you need it. Stays portable and backup-friendly.
Mission
- Capture plans, actions, outcomes, energy/mood
- Detect drift (overcommitment, context-switching, avoidance)
- Route work (priorities, next actions, time blocks)
- Lift encouragement + friction reduction when you need it
- Portable local-first, DB exportable, minimal vendor lock-in
Non-goals
- Not a therapist or medical advisor
- Not a fully autonomous agent making commitments on your behalf
- Not "remember everything forever" (you define retention tiers)
Quick start
- MongoDB — Run MongoDB locally (e.g.
mongod) or setMONGO_URIfor Atlas. - Config — Copy
.env.exampleto.envand setMONGO_URI,SCRIBBLE_DBif needed. - Build —
npm install && npm run build - MCP server — Run
npm run mcp(stdio). Configure Cursor:
- Option A: Copy mcp-config.json into Cursor’s MCP config (macOS: ~/.cursor/config/mcp.json; merge the mcpServers entry into your existing config). - Option B: In Cursor: Settings → Features → MCP → Add New MCP Server. Command: node. Args: /Users/nikko/dev/scribble/dist/src/index.js (use your actual path). - Option C: If your project uses .cursor/mcp.json, that file is already set up for this repo. - Ensure MongoDB is running and npm run build has been run so dist/src/index.js exists. - Env: The server loads .env from the project root (so it works when Cursor spawns with a different cwd). If env still isn’t applied, add "env": { "MONGO_URI": "mongodb://localhost:YOUR_PORT", "SCRIBBLE_DB": "scribble" } to the scribble entry in your MCP config.
MCP tools
| Tool | Purpose |
|---|---|
capture | Inbox event → returns eventId |
triage_inbox | Raw captures → task candidates + one question each |
plan_day | Top 3 + runway + schedule suggestions (WIP limit 5) |
next_action | One best next action (optional context/energy) |
checkin | Morning/midday/evening checkin (energy, mood, stress, one win, one worry) |
reflect | End-of-day recap + pattern notes + tomorrow seed |
weekly_review | What moved, what didn’t, why |
search_memory | Query events/tasks with sources (auditability) |
export_data | Export events/tasks (jsonl or csv); events as primary |
create_task | Create task from capture (after triage) |
get_lift_suggestions | Intervention ladder (L1–L4) from checkins, overload, patterns |
sync_to_calendar | Sync tasks to Apple Calendar (macOS) or export as .ics |
Calendar sync (Apple Calendar / .ics)
Sync Scribble tasks (today, top 3, week, or a specific date) to your local Apple Calendar or to an .ics file.
- From Cursor: Use the
sync_to_calendartool.
- target: apple_calendar — adds events directly to Calendar.app (macOS). Creates a calendar named "Scribble" (or your calendarName) if it doesn’t exist. - target: ics — generates iCalendar content (or write to a file with icsPath). - scope: today (today’s due + top 3), top3 (only top 3), week, or YYYY-MM-DD.
- From CLI:
# Export today’s tasks to .ics (open in Calendar: File → Import)
npm run calendar -- --target ics --scope today -o ~/Desktop/scribble.ics
# Add today’s tasks to Apple Calendar (macOS)
npm run calendar -- --target apple_calendar --scope today --calendar Scribble
# Export this week
npm run calendar -- --target ics --scope week -o ~/Desktop/scribble-week.ics- Apple Calendar (macOS): Uses AppleScript to create events in Calendar.app. Each task becomes an event with start = due date and duration =
effortMinutes(default 30). No extra npm packages; requires Calendar.app.
- .ics: Works on any OS. Open the file in Calendar (File → Import) or double-click to add events.
Export (CLI)
node dist/src/cli/export.js --format jsonl --since 2025-01-01 -o backup.jsonl
node dist/src/cli/export.js --format csv --until 2025-01-31 --exclude-tags private_sensitiveEvents are the primary truth; exports lead with events (JSONL).
Config
- Tags/contexts —
config/contexts.json(work, ampd, city, family, health, etc.) - Retention —
config/retention.json(ephemeral 7–30d, durable forever) - Templates —
config/templates/personal-ops-atc.json,config/templates/work-only.json
Data model (Mongo)
- events — type, payload, source, ts, timezone, confidence, tags (event-sourced primary truth)
- tasks — title, status (inbox/next/doing/waiting/done/someday), projectId, context, energyCost, effortMinutes, due, priority, why, createdFromEventId
- projects — name, goals, constraints, successMetric, stakeholders
- checkins — type (morning/midday/evening), date, energy, mood, stress, oneWin, oneWorry
- patterns — triggers, interventions, effectivenessScore (learned heuristics)
- assistant_templates — role, domains, tone, cadence, toolPermissions, retentionPolicy, escalationPolicy
Rules
- Top 3 — Max 3 outcomes/day; max 5 active “doing” (WIP limit)
- Checkin questions — Energy 1–5, Mood 1–5, Stress 1–5, One win, One worry
- Auditability —
search_memoryand suggestions return source (event/task ids) - User-controlled memory — Export and delete by tag/category
License
MIT
