personal autonomous agent // v24/7
JARVIS
A personal agent that lives in Discord and never sleeps. It reads your mail, runs your home, tracks your money, curates your socials — and ships code while you're busy living.
▌
SYS.OVERVIEW // 01
What it is
Jarvis is a personal agent that lives where you already talk — Discord — and runs around the clock. It reads your mail, manages your calendar, watches your home, tracks your spending, researches questions, drives your browser, and keeps your socials alive. It also happens to ship code: describe a task, write the acceptance tests, and a reviewed pull request shows up. Safety comes from constraints, not trust.
TALKS LIKE A PERSON
A dry-wit companion in Discord — chat or voice notes, wake word included. Remembers you via Mem0.
RUNS 24/7
Persistent agents on an event bus, with a dead-man's-switch failsafe watching cost, disk, and stalled tasks.
ACTS, THEN REPORTS
Reversible actions just happen; irreversible ones wait for your yes. Notifications are urgency-scored and routed to Discord, push, or email — based on whether you're at your desk, away, driving, or asleep.
EXTENSIBLE BY DESIGN
Drop a Python file in tools/ and it just works. MCP servers plug in GitHub, socials, content, and the coding pipeline.
footage slot 01
dashboard-hud.png
The ops dashboard: live agent status, event bus stream, task queue, and cost gauges — the HUD command surface for the whole system.
→ website/public/footage/ · checklist in FOOTAGE.md
SYS.DOMAINS // 02
Runs Your Day
Ask it to do things in plain language — or let its domain agents watch and act on their own tick loops. This is the everyday stuff Jarvis handles without being asked twice.
COMMS
Gmail, Google Calendar, and SMS via Twilio. It triages your inbox, books your meetings, and texts you when something can't wait.
HOME
Home Assistant integration for lights, scenes, and devices — controlled from chat or by voice.
FINANCE
Plaid-backed accounts with a SQLite budget tracker. Ask where the money went; get a real answer.
RESEARCH
Deep-dive questions answered by a reasoning model with tool access, narrated back in Discord.
DESKTOP
Windows APIs, Spotify, and ESP32 hardware — plus a PC gateway over Tailscale with Wake-on-LAN, so it can reach your home machine from anywhere.
SOCIAL
Full browser automation over Chrome DevTools Protocol: X For You discovery, LinkedIn feed outside your network, Reddit subs, Instagram reel curation, and Peerlist — monitored, engaged, and posted on a 60-second tick loop.
VOICE PIPELINE
Wake word, streaming STT, and TTS. Talk to it like the namesake — it talks back.
CONTENT STRATEGIST
An IdeaMiner reads your repos' diffs and scores post-worthy ideas into an Idea Bank; a cloud model drafts on-brand posts for X and LinkedIn from them, and a feedback loop learns your taste over time.
PLUGIN TOOLS
reddit, twitter, instagram, linkedin, browse, watch, music, pc — drop a Python file in tools/ and it's live.
ACTION PIPELINE
Reversible actions auto-proceed. Irreversible ones need your approval the first time; high-value ones always do. Everything is recorded to Scribe.
footage slot 02
voice-demo.mp4
Wake word → spoken question → Jarvis's voiced reply. 10–20s with audio.
→ website/public/footage/ · checklist in FOOTAGE.md
SYS.FIELD // 03
A Day in the Life
# jarvis
aayushman09:14
jarvis what's on my plate today?
JARVISBOT09:14
Three meetings, one deadline. Standup at 10, dentist at 4:30, and the invoice you've been avoiding since Tuesday.
Gmail triaged while you slept: 2 threads need replies, 14 archived. You're welcome.
aayushman09:15
did the keyboard package arrive?
JARVISBOT09:15
Out for delivery since 8:03. I've set a watch — you'll know before the courier does.
aayushman21:40
build me a url shortener. node, rate limited, postgres
NANAMIBOT21:40
Evaluating. Stack accepted: Node 20 + pg. Two questions before approval: rate-limit window, and are custom slugs in scope?
aayushman21:42
100 req/min per IP, custom slugs yes
NANAMIBOT21:42
Approved. Spawning executor.
▸ aizen-3f9a started · 4 sub-tasks · 2 parallel
▸ karen: sub-task 2 critiqued — “slug collision handling is doing too much”
▸ aizen-3f9a finished · 23 min · $0.00 (free tier)
JARVISBOT22:05
PR #47 is up on agent/url-shortener. Tests green, the review gate approved, Karen left notes on the diff.
I merged nothing. Obviously.
Calendar in the morning, package tracking at lunch, a reviewed pull request before bed. The mock on the left is illustrative — slot 03 is reserved for the real capture.
footage slot 03
discord-real.png
Real Discord capture of Jarvis + Nanami in action — one PA request and one build approval in frame.
→ website/public/footage/ · checklist in FOOTAGE.md
SYS.SWARM // 04
Meet the Swarm
One-shot model sessions, no auto-compaction — everything an agent needs rides in the prompt. Persistent agents watch an in-process event bus; ephemeral ones are spawned per task and die when the work is done.
JARVIS
PERSISTENTInterface
The dry-wit companion bot in Discord. Remembers you via Mem0, classifies every message as chat or execute, and narrates results back.
ollama + free tierNANAMI
PERSISTENTSupervisor
Technical project manager with her own bot identity. Evaluates every task request, never approves without a tech-stack discussion, spawns executors for approved work.
reasoningAIZEN
EPHEMERALTask Executor
Pure executor — one instance per task. Decomposes work into atomic sub-tasks and runs independent ones in parallel. Never questions requirements.
executorSTARK
EPHEMERALSub-task Executor
One per sub-task. Crafts a tailored system prompt, runs a single one-shot model session, then verifies the output actually matches the spec.
reason → fast verifyKAREN
PERSISTENTCritic
Watches phase completions and critiques approach, scope creep, and wasted effort. Three unresolved rounds and she escalates to you.
reasoningSENTINEL
PERSISTENTImmune System
Watches how the system operates, not what it produces. Classifies failures, applies repair actions, and escalates what it cannot fix.
deep reasoningCORTEX
PERSISTENTBrain
Handles direct execute requests with MCP tools — plans ordered steps across domain agents and returns results for Jarvis to narrate.
reasoning + MCPSURGEON
EPHEMERALLast Resort
Tier-3 repair. When Sentinel's registry of fixes can't heal a failing component, the Surgeon is called in for manual intervention.
deep reasoningSYS.TOPOLOGY // 05
Under the Hood
Every agent talks over a single in-process event bus with typed events and JSONL persistence. Persistent agents watch it; ephemeral ones are spawned, work, and die. Critics watch the workers — and something watches the critics.
One-shot model sessions only — no conversation history carries over; everything an agent needs rides in the prompt (MEMORY.md + FILES_TOUCHED.md per task).
SYS.SDLC // 06
It Ships Code Too
When it's not running your day, it's grinding your backlog. You write the tests. Free models grind the implementation. Claude reviews. You merge. One autonomous pipeline, five gated steps:
STEP 01
YOU WRITE TASK.md + TESTS
Describe the feature and write the acceptance tests. Tests are read-only — the agent can never touch them. This breaks circular validation.
STEP 02
FREE MODELS GRIND
runner.py cascades Qwen3-Coder → DeepSeek V3 → Kimi K2.5, extracting code into the workspace. Up to 15 iterations per task.
STEP 03
TESTS RUN IN A SANDBOX
Your acceptance tests execute against the generated code — in a Docker container with memory and CPU caps when enabled. Failures feed back to the model.
STEP 04
CLAUDE REVIEWS
orchestrator.py sends passing work through a Claude review gate. Rejected work re-runs up to 3×, then escalates to NEEDS_HUMAN.
STEP 05
PR — YOU MERGE
Approved code becomes a pull request on an agent/ branch. The agent can propose; only you can merge. No exceptions.
footage slot 04
task-run.mp4
Screen recording of runner.py grinding a real task — model output, test failures feeding back, green run, STATUS.md flip.
→ website/public/footage/ · checklist in FOOTAGE.md
SYS.ECONOMY // 07
The Cost Story
A premium model subscription should not be burned on a grinding implementation loop. The runner tries free models in order and falls back on rate limits or errors — free models never decide, they only execute against specs and tests you wrote. A premium reasoning model decides, reviews, and catches what they missed.
free coding specialist
via OpenRouter
FREE · ~200 req/day
Strongest free coding model. 262K context — the overnight workhorse.
free general model
via OpenRouter
FREE tier · $0.15/$0.75 per 1M paid
~90% of frontier capability on routine tasks. Fallback when rate limits bite.
free UI specialist
via NVIDIA NIM
FREE
Excellent at turning specs into UI code. Verbose reasoning — irrelevant when free.
budget guardrails
- Max iterations / task15
- Max cost / task$5.00
- Max cost / day$15.00
- Test timeout120s
- Cooldown after failure30s
A dead-man's-switch failsafe runs health checks on a schedule — long-running processes, daily cost, disk usage, stale tasks.
SYS.SECURITY // 08
Safety from Constraints
The design rule is simple: safety comes from constraints, not trust. Every layer assumes the model will eventually produce something hostile or broken — and boxes it in, whether it's writing code or spending your money.
✕Agent acts in the real world without asking
✓Action pipeline — reversible actions auto-proceed, irreversible ones need your approval the first time, high-value ones always do. Every action is recorded to Scribe.
✕Agent modifies your tests
✓Read-only enforcement — tests are copied into the workspace and all model output is filtered against readonly patterns.
✕Path traversal in model output
✓extract_files() rejects .. segments, absolute paths, backslashes, and colons.
✕Command injection via test_command
✓Prefix allowlist — npm, npx, python, pytest. Nothing else executes.
✕Agent merges its own code
✓It can only open PRs on agent/ branches. You merge. No exceptions.
✕Runaway API cost
✓Per-task and per-day budgets, plus a scheduled failsafe dead-man's switch.
✕Malicious code in test runs
✓Tests execute in a Docker sandbox with memory and CPU limits when enabled.
SYS.INIT // 09
Quick Start
terminal
$pip install -r requirements.txt
# install dependencies
$cp .env.example .env # add your OpenRouter key
# configure
$python runner.py tasks/demo-task
# run the demo task
$python orchestrator.py
# scheduler + review gate + PRs
The demo task is a working URL shortener: the runner reads the spec and your tests, calls free coding models, generates code into the workspace, runs your tests, and feeds failures back until they pass — up to 15 iterations.
To run your own feature, create a folder in tasks/ with a TASK.md and your acceptance tests. The agent writes code; it can never write your tests.