Autonomous runtime stress-testing · a swarm of agents
Your error boundary is hiding a crash.
Aztrx drives your app like a hostile user, proves every crash with a test — and a thousand-agent swarm audits the business logic you're afraid of, patch included.
No config. No account. --fix works free for common crashes.
The magic
One command. Find, explain, fix.
Aztrx AI doesn't read logs — it drives your app like a hostile user, catches what your error boundary swallows, proves it, explains it in plain language, and fixes it.
Chaos Fuzzing
--fuzz swaps the deterministic walk for seeded chaos — clicks, types garbage, and races async UI, steering toward code it hasn't reached yet.
ddmin algorithm
Shrinks a 50-step chaos trace down to the single step that actually breaks.
Auto-Repro
--repro shrinks the trace, compiles it into a Playwright .spec.ts, and labels the flake rate — deterministic 3/3, flaky, or unreliable.
Self-Healing
Fixes common crashes for free — a built-in rule patches null/undefined derefs with no key. Complex bugs hand off to your own LLM, gated and replayed in a sandbox before you ever see a line of it.
Human-Language Report
--explain turns a run into a plain-language summary — what broke, where, and whether a fix is ready. No stack-trace archaeology.
One-Click Apply
--fix finds, proves, and fixes — free for common crashes, or via your own model. git diff shows the result. No commit.
The Swarm
--swarm scouts your app, synthesizes the audience it actually has — rushed buyers, night-shift operators, coupon hunters — and swarms it with a thousand weighted agents.
Audit what you fear
--intent "проверь безопасность оплаты" picks the agents that answer the fear. Proof or silence: only exploits that worked end to end are reported, in business language, with a patch.
Prove-It-Fixed
Every verified patch ships a regression test: the repro rewritten with inverted assertions — the attack must now be blocked. It lands in __aztrx_tests__/, passes on the patched code, fails on the unpatched. The bug stays dead.
Where it runs
It comes to you.
Not another dashboard to check. Aztrx wires into the editor, the push, and the dev server you already use — and stays silent until it has something worth saying.
Your editor's agent
An agent can write code but cannot run it — so it calls a change working when all it knows is that the change parsed. Aztrx supplies the missing step: it drives the app in a real browser and hands back the crashes it produced, repro attached.
npx aztrx-cli mcp installEvery git push
Scan the app before the push lands, and block on a crash. It scans your app rather than your diff — a crash three files from the change is exactly the one a diff-shaped scan walks past.
npx aztrx-cli hook installYour dev server
Three lines of config and crashes surface while you work — no second terminal, no command to remember. The scan runs as its own process, so it can never take your dev server down with it.
plugins: [aztrx()]MCP · Claude Code · Cursor · VS Code
Put the swarm inside your agent.
The same install gives your editor the whole swarm, not just a scan — audit, repro, and fix arrive alongside it as four tools the agent can call on its own.
npx aztrx-cli mcp install→writes the server into your editor's config; restart the editor, then ask it to run aztrx_audit, and it answers.aztrx_auditTell it what you fear — "проверь безопасность оплаты" — and it picks the agents, exploits the app, and answers in business language with proof and a patch.
aztrx_scanDrives the app in a real browser and reports the crashes it produced, source locations attached. Boots the dev server itself if none is running.
aztrx_reproThe minimized steps and the compiled Playwright spec for one finding — deterministic, flaky, or unreliable, said honestly.
aztrx_fixPatch → verify in a git worktree by replaying the repro → optionally write it into your tree. Only a verified patch is ever applied.
Free, local, no account. Findings leave your machine only if you say so.
The proof
From crash to fix, in one run.
On the left, the crash your error boundary swallowed. On the right, the gated patch — replayed and type-checked before it reaches you.
Measured, not claimed
Scored against apps with known bugs.
Two corpora, every case seeded with exactly one runtime bug, each scored against a manifest that declares what should — and should not — be found. Both run from this repo.
13 Next.js 16 apps
App Router · Turbopack · client components
13 vanilla archetypes
framework-agnostic baseline
13-swallowed-boundary — the case this exists for
A crash an Error Boundary caught and only logged, never rethrown. A pageerror-only detector scores 0/1 on it. It sits in the corpus precisely so that a regression fails the benchmark.
Reproduce it: npm run bench · cd bench/frameworks && npm run bench
Enterprise & trust
Built for teams that can't leak code.
100% Local Execution
Runs inside your repo, against your code. Nothing leaves your machine unless you explicitly opt in.
Bring Your Own Model
Point healing at any model — Anthropic, OpenAI, Grok, DeepSeek, Gemini, Kimi, OpenRouter, Ollama, or any OpenAI-compatible endpoint. Or run fully offline and never call an LLM.
CI/CD Native
A GitHub Action gates every PR. Fail the build when a crash is proven, not guessed at.