personal autonomous agent // v24/7
JARVIS
You write the tests. Free models grind the implementation. Claude reviews. You merge.
▌
SYS.OVERVIEW // 01
What it is
Jarvis is a personal, voice-activated agent that runs around the clock. Its core tool is an autonomous software-delivery pipeline: you define a task and the acceptance tests, a cascade of free coding models grinds the implementation, Claude gates the review, and the result lands as a pull request only you can merge. Safety comes from constraints, not trust.
LIVES IN DISCORD
Chat or talk — messages and voice notes. WhatsApp channel on the roadmap.
RUNS 24/7
Persistent agents on an event bus, with a dead-man's-switch failsafe watching cost, disk, and stalled tasks.
SDLC AT THE CORE
An autonomous pipeline turns a TASK.md plus your acceptance tests into a reviewed pull request.
PLUGIN TOOLS
Drop a Python file in tools/ and it just works — auto-discovered, no wiring.
SYS.PIPELINE // 02
The Pipeline
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.
SYS.SWARM // 03
Meet the Swarm
One-shot Claude 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.
opusAIZEN
EPHEMERALTask Executor
Pure executor — one instance per task. Decomposes work into atomic sub-tasks and runs independent ones in parallel. Never questions requirements.
sonnetSTARK
EPHEMERALSub-task Executor
One per sub-task. Crafts a tailored system prompt, runs a single one-shot Claude session, then verifies the output actually matches the spec.
opus → haiku verifyKAREN
PERSISTENTCritic
Watches phase completions and critiques approach, scope creep, and wasted effort. Three unresolved rounds and she escalates to you.
sonnetSENTINEL
PERSISTENTImmune System
Watches how the system operates, not what it produces. Classifies failures, applies repair actions, and escalates what it cannot fix.
opus maxCORTEX
PERSISTENTBrain
Handles direct execute requests with MCP tools — plans ordered steps across domain agents and returns results for Jarvis to narrate.
opus + 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.
opusSYS.ECONOMY // 04
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. Claude decides, reviews, and catches what they missed.
Qwen3-Coder 480B
via OpenRouter
FREE · ~200 req/day
Strongest free coding model. 262K context — the overnight workhorse.
DeepSeek V3
via OpenRouter
FREE tier · $0.15/$0.75 per 1M paid
~90% of frontier capability on routine tasks. Fallback when rate limits bite.
Kimi K2.5
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.DOMAINS // 05
Beyond the Pipeline
The SDLC loop is the core tool — around it sits a swarm of domain agents and services that run parts of daily life.
COMMS
Gmail, Google Calendar, and SMS via Twilio — triage, scheduling, and notifications from one agent.
HOME
Home Assistant integration for lights, scenes, and devices — controlled from chat or voice.
FINANCE
Plaid-backed accounts with a SQLite budget tracker. Ask where the money went.
RESEARCH
Deep-dive questions answered by Claude with tool access, narrated back in Discord.
DESKTOP
Windows APIs, Spotify, and ESP32 hardware — plus a PC gateway over Tailscale with Wake-on-LAN.
SOCIAL
Full browser automation over Chrome DevTools Protocol: X, Reddit, Instagram, LinkedIn, Peerlist.
VOICE PIPELINE
Wake word, streaming STT, and TTS — talk to it like the namesake.
CONTENT STRATEGIST
An IdeaMiner reads your repos' diffs, scores post-worthy ideas into an Idea Bank, and Opus drafts on-brand posts for X and LinkedIn — with a feedback loop that learns your taste.
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. Everything is recorded to Scribe.
SYS.SECURITY // 06
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.
✕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 // 07
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 Qwen3-Coder for free, 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.