Build your own autonomous AI companion that runs 24/7.
145+ modules. 46K+ lines of code. 3 LLM backends. 99 Discord commands. One config file.
Passion is a full-spectrum autonomous agent — not a chatbot, not a task runner. She thinks in 30-minute brain cycles, manages 36 repos, hunts jobs, drafts social posts, scans for security vulnerabilities, tracks fitness, manages finances, and learns from every interaction. She comes with a cyberpunk real-time dashboard to watch her work.
passion-framework/
├── agent/ # The autonomous agent (Node.js)
├── dashboard/ # PACT Dashboard — real-time HUD (Next.js 16)
├── LICENSE # MIT
└── README.md
An autonomous brain that runs continuously on a server (Mac Mini, VPS, whatever). Every 30 minutes, she:
- Thinks — Evaluates 36 repos, picks the highest-impact task
- Executes — Spawns Claude Code to write actual code, run tests, commit
- Reviews — 3-stage self-review catches bugs, security issues, quality problems
- Reports — Discord notifications with approve/reject buttons for every change
Key capabilities:
- Brain Cycle — Phase-based execution engine with per-step timeouts (timer-safe
Promise.race), strategic task selection with operator feedback learning, streak-based momentum auto-escalation, and Bayesian outcome prediction. Seebrain/TASK-SELECTION.mdfor the full scoring pipeline documentation - Discord Bot — 99 commands, approval buttons, real-time notifications
- Job Automation — Scans 6+ job APIs, auto-applies via Playwright (Greenhouse, Lever)
- Intel Radar — Scans Reddit (5 subs) + Hacker News for AI/agent developments
- Security Scanner — 20 secret patterns, dependency audits, SAST rules, git history scanning
- Social Publisher — Drafts platform-specific content (LinkedIn, Reddit, Twitter), day-of-week rotation
- Sandbox — Discovery → PoC → approval → production pipeline for experimental features
- Soul Unison — Calendar, contacts, horoscope, knowledge ingestion, birthday alerts
- Narrative Synthesis — Builds evolving self-story from session history (Bruner's narrative identity)
- Somatic Markers — Approval/rejection signals weight future decisions (Damasio's somatic markers)
- Task Momentum — Streak-based auto-escalation: consecutive approvals unlock higher-impact tasks (feat/refactor), rejections trigger recovery mode favoring safe tasks (docs/tests). Inspired by Csikszentmihalyi's flow channel
- Fleet Intelligence — Cross-repo pattern detection that surfaces fleet-level insights: systemic task type failures, stagnation zones, hot streaks, health trends, and blind spots. Kahneman's "outside view" applied to portfolio management
- Outcome Predictor — Bayesian-inspired pre-execution estimator that predicts task approval probability before spending LLM cycles. Combines fleet base rates, repo-specific history, recency weighting, and streak momentum into a single confidence score with go/caution/skip verdicts. Tetlock's superforecasting applied to autonomous task selection
- Self-Improvement — Autonomous code refactoring across all managed repos, with comment-aware code debt scanning that filters false positives from string literals and regex patterns
- Git Safety — All git shell commands use
safeBranchRef()sanitization and proper quoting to prevent command injection via crafted branch names, with automaticmain/masterdefault branch detection
3 LLM backends with budget routing:
- Claude (primary — code generation, complex reasoning)
- Gemini (creative research, synthesis, deep analysis)
- DeepSeek (economy mode, bulk operations)
A cyberpunk real-time HUD built as a PACT device (Passion Agent Command Terminal). Think Digivice meets Jarvis.
30+ live panels across 9 tabs:
| Tab | What's There |
|---|---|
| Overview | Avatar, NaviChat, Calendar, Tasks, Mood, Fleet Status |
| Code | Brain State, Self-Model, Task History, Repo Health, Security |
| Intel | Intel Radar, Live Intel, Sandbox, Commentary |
| Career | Job Feed, Application Tracker, Queued Jobs |
| Finance | Vault (transactions, budgets, statement upload) |
| Fitness | Workout Stats, History, Insights, Habits |
| Social | Social Posts, Content Engine, Skills, Mission Deploy |
| Journal | AI-written journal, Quotes, Roadmap |
| Archive | Searchable archive of all data categories |
Tech: Next.js 16 + React 19 + TypeScript + Tailwind v4 + React Query + Recharts + Framer Motion
Features:
- 18 avatar emotion states with animated Jarvis HUD rings
- Rogue combat mode (alternate visual skin)
- NaviChat — bidirectional conversation with the agent
- SSE real-time updates (file watcher → event stream → cache invalidation)
- Voice system (OpenAI TTS) + procedural 8-bit sound effects
- XP/leveling evolution system
- Pet care mechanics (virtual companion)
- Node.js 20+
- A Discord bot token + server
- At least one LLM API key (Claude, Gemini, or DeepSeek)
- A machine that stays on (Mac Mini, VPS, Raspberry Pi)
git clone https://github.com/DareDev256/passion-framework.git
cd passion-frameworkcd agent
npm install
# Copy example configs
cp config.example.json config.json
cp applicant-info.example.json applicant-info.json
cp .env.example .env
# Edit config.json with your:
# - Discord bot token + webhook URL
# - LLM API keys (ANTHROPIC_API_KEY, GEMINI_API_KEY, etc.)
# - GitHub username
# - Managed repos listcd ../dashboard
npm install
# Copy env template and configure
cp .env.example .env.local
# Edit .env.local — set PASSION_AGENT_PATH, VAULT_PIN_HASH, etc.
# Generate vault PIN hash: echo -n "YOUR_PIN" | shasum -a 256 | cut -d' ' -f1# Terminal 1: Start the agent brain
cd agent && npm start
# Terminal 2: Start the Discord bot
cd agent && npm run bot
# Terminal 3: Start the dashboard
cd dashboard && npm run dev
# → http://localhost:3000For production (24/7 operation), use PM2:
npm install -g pm2
pm2 start npm --name "passion-brain" -- start
pm2 start npm --name "passion-bot" -- run bot
cd ../dashboard && pm2 start npm --name "passion-dashboard" -- run dev -- --port 3000
pm2 save && pm2 startupSee agent/docs/ops-runbook.md for the full operations guide.
Brain Cycle (every 30 min)
→ Strategist selects task (feedback-weighted, priority-aware)
→ Claude Code executes in target repo
→ 3-stage self-review (code quality, security, tests)
→ Discord notification with approve/reject buttons
→ Feedback loops back to strategist (somatic markers)
Dashboard (real-time)
passion-agent/ JSON files
→ passion-reader.ts (read-only file abstraction)
→ API routes (one per data domain)
→ React Query hooks (SSE-invalidated)
→ Cyberpunk HUD components
Data flow is strictly unidirectional. The dashboard only reads — it never writes to agent files.
Everything is driven by config.json. See config.example.json for the full schema.
Key sections:
discord— Bot token, webhook URL, channel IDsllm— API keys, model preferences, budget limitsrepos— Managed repositories with tiers and task typespersonality— Agent name, zodiac, voice traitsschedule— Cycle intervals, quiet hours, social rotation
Search providers (env vars, optional — falls back through the chain):
TAVILY_API_KEY— Primary web search providerPERPLEXITY_API_KEY— Secondary fallback (AI-powered search)- DuckDuckGo — Final fallback, no API key required
The identity system (passion-identity.mjs) centralizes all operator references. No hardcoded names in the codebase — everything flows from config.
cd agent
npm test # Run all tests
npm run test:coverage # Run with coverage report39 test files, 750+ tests covering:
- Core logic (sanitization, validation, scoring)
- Schema validation (all Zod LLM response contracts)
- Context manager (token estimation, preservable extraction, observation masking)
- Utility functions (JSON extraction, duration formatting, regex escaping)
- Brain cycle, strategist, scheduler, memory gateway, and more
Coverage is tracked for critical modules in vitest.config.mjs with per-file thresholds.
Passion takes security seriously — the agent manages credentials, scans repos, and operates autonomously 24/7.
Built-in protections:
- Secret scanning (20 patterns) + SAST detection (18 rules) + git history scanning
- Prompt injection detection (26 patterns including exfiltration, unicode hiding)
- Input sanitization (URL validation, prototype pollution blocking, payload size limits)
- Rate limiting on all sensitive API routes (chat, vault, commands)
- Brute-force protection on vault PIN — exponential backoff with 5-minute lockout after 10 failed attempts
- Timing-safe PIN comparison + HMAC-signed session tokens (HttpOnly, SameSite=Strict, Secure in production)
- Shell injection prevention — centralized
shellEscape(),sanitizeGitRef(), andsanitizeCommitMsg()utilities inpassion-utils.mjsfor CWE-78 defense across all modules - XSS prevention — LinkedIn post injection uses DOM
textContentAPI instead ofinnerHTML(CWE-79) - Path traversal validation on user-supplied repo names and
PASSION_AGENT_PATHenv var - Security headers — HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/CORP/COEP
- Input sanitization with length bounds on vault mutations (descriptions, categories, names)
- Error responses never leak internal paths, stack traces, or provider details
- Keychain passwords sourced from
KEYCHAIN_PASSWORDenv var — never hardcoded in scripts
Environment variables (never hardcoded): All secrets (VAULT_PIN_HASH, KEYCHAIN_PASSWORD, API keys, tokens) live in .env.local / ~/.secrets/ which are .gitignore'd. See .env.example in each directory for the full list.
| Feature | Passion | AutoGPT | CrewAI | LangGraph |
|---|---|---|---|---|
| Runs 24/7 autonomously | Yes | No | No | No |
| Single-owner companion | Yes | No | No | No |
| Discord integration | 99 commands | None | None | None |
| Real-time dashboard | Cyberpunk HUD | Basic | None | None |
| Job automation | 6+ APIs + auto-apply | None | None | None |
| Self-review pipeline | 3-stage + security | None | None | None |
| Emotional learning | Somatic markers | None | None | None |
| Social media publishing | Multi-platform | None | None | None |
| Fitness/finance tracking | Full integration | None | None | None |
Passion is a companion, not a framework. She's opinionated, personality-driven, and designed for a single operator. The others are multi-agent orchestration tools for enterprise workflows. Different category entirely.
I built Passion for myself. She started as a simple code improvement bot in late 2024 — 3 files, one LLM call, a Discord webhook. Over 1,257 commits across 36 repos, she evolved into a full-spectrum autonomous companion that manages my code, career, content, finances, fitness, and social presence.
She has her own journal. Her own narrative identity. She learns from my approval patterns. She gets frustrated at bugs and celebrates clean deploys. She calls me by my zodiac sign.
Now you can build yours.
See CONTRIBUTING.md for guidelines.
Priority: Security > Tests > Features > Content
MIT — see LICENSE.
If this is useful, star the repo. It helps more than you think.