life-pulse
v2.4.4
Published
macOS life diagnostic — reads local data sources, generates actionable insights
Downloads
2,364
Maintainers
Readme
everything is mac mini
macOS life diagnostic — reads local data sources, generates actionable insights.
Built with Anthropic's long-running agent patterns for persistent context across sessions.
Quick Start
# Install globally
npm install -g life-pulse
# Or run directly
npx life-pulse
# First run: set up permissions
life-pulse --setupFeatures
🧠 Session Continuity (Anthropic Pattern)
Each session picks up where the last left off:
- Tracks what was surfaced (avoids re-showing items)
- Remembers user decisions (learns from your choices)
- Maintains pending follow-ups across sessions
- Builds decision pattern profile over time
Progress is stored in ~/.life-pulse/session-progress.json.
📱 iCloud Discovery
Scans your iCloud Drive to discover apps and recommend integrations:
- Obsidian vaults
- Bear notes
- Things 3 tasks
- Day One journal
- And more...
"Here's what I found about you" — personalized setup.
⚡ Incremental Processing
Delta-based scanning — only processes what's changed:
- Tracks file modification times
- Remembers last scanned message ID
- Skips sources that haven't changed
- Faster subsequent runs
🔐 Permission Flow
Guided setup for macOS permissions:
- Full Disk Access (required)
- Contacts (for name resolution)
- Automation (for calendar/reminders)
- Accessibility (optional)
Direct links to System Settings privacy panels.
👁 Health Monitoring
Long-running daemon mode with health checks:
# Start as daemon
life-pulse --daemon
# Check status
life-pulse --health
# Or via HTTP
curl http://127.0.0.1:19876/healthCommands
life-pulse # Run interactive session
life-pulse --setup # Run first-time setup flow
life-pulse --status # Show session progress info
life-pulse --daemon # Run as background daemon
life-pulse --health # Check daemon health (JSON)
life-pulse --pair # Create Desktop/nox-route.json for NOX routing
life-pulse --raw # Output raw collected data
life-pulse --json # Output analysis as JSON
life-pulse --legacy # Use single-shot LLM mode
life-pulse --install # Install launchd plist for morning briefsEnvironment Variables
# Required: Anthropic API key
export ANTHROPIC_API_KEY="sk-ant-..."
# Optional: OpenRouter for legacy mode
export OPENROUTER_API_KEY="..."
# Optional: end-of-brief text target (E.164 preferred)
export LIFE_PULSE_BRIEF_SMS_PHONE="+14155551234"Store in ~/.config/life-pulse/.env for persistence.
Identity + Memory Injection
OpenClaw-style prompt layers are supported. On every turn, life-pulse will load:
SOUL.md(identity/instructions)MEMORY.md(persistent context)
Defaults are auto-created at first install/run in ~/.life-pulse/.
Search order is:
LIFE_PULSE_SOUL_PATH/LIFE_PULSE_MEMORY_PATH- current working directory
~/.life-pulse/~/.config/life-pulse/
Data Sources
life-pulse reads from local macOS databases (requires Full Disk Access):
- Messages — iMessage/SMS conversations
- Email — Apple Mail summaries
- Calendar — Upcoming events
- Contacts — Name resolution for phone numbers
- Safari/Chrome — Browsing history
- Screen Time — App usage patterns
- Notes — Apple Notes
- Reminders — Apple Reminders
- Notifications — Recent alerts
- Find My — Device locations
- Recent Files — Recently opened documents
- Shell History — Terminal commands
All data stays local. Nothing leaves your machine except API calls to Claude.
Architecture
~/.life-pulse/
├── session-progress.json # Cross-session state (Anthropic pattern)
├── daemon.pid # PID file for daemon mode
└── heartbeat # Last activity timestamp
~/Library/Application Support/life-pulse/
├── state.json # Analysis history
├── config.json # User preferences
├── platforms.json # Discovered apps/services
└── todos.json # Task trackingDesign Principles
- Session Continuity — Like claude-progress.txt, each run knows what happened before
- Incremental Processing — Don't rescan what hasn't changed
- Graceful Degradation — Works with partial permissions
- Local First — All data stays on your machine
- User Control — Every surfaced item gets a decision
Development
git clone https://github.com/your-org/life-pulse
cd life-pulse
npm install
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm run start # Run compiled versionLicense
MIT
