J0 beta

Every tool in the workbench.

Grouped the way Burp groups its own: what captures traffic, what works on one request by hand, and what reasons about the whole capture. Each row says what the tool does and where it stops. The page ends with what is not built — a feature list without that section is a sales page.

18Tabs in the window, grouped into three bands.
480Tests passing on this machine, plus 27 Chrome-driven ones run on demand.
9Quality gates, green locally: fmt, clippy, tests, audit, deny, tsc, eslint, vitest, build.
4Features deferred, every one listed at the bottom of this page.

Capture

The traffic side. All of it runs on loopback, and the certificate authority is generated on your machine and never installed for you.

ToolWhat it doesState
Proxy Listens on 127.0.0.1:9090 from the moment the window opens. Forward requests, CONNECT tunnelling, and HTTPS interception through a local CA with a per-host leaf certificate. built
Intercept Hold a request before it leaves, edit the raw bytes, forward or drop it. Rules decide what is held rather than holding everything. built
HTTP history Every exchange, with the raw bytes on both sides, the session that carried it, an Inspector, and per-exchange notes. Agentic requests carry a mark and the account they ran as. built
WebSockets Bidirectional frame capture with a viewer. Editing a frame in flight is not built. capture only
Sessions Requests grouped by the credential set that carried them, with a role and an organisation per account. Names are recorded; values never are. built
Target The application as a tree, scope rules, and what has and has not been looked at. built
Match & Replace Operator rules that rewrite each proxied request in flight, on both the HTTP and HTTPS paths, persisted between launches. Response-side rewriting is not built. requests only

Manual tools

One request at a time, by hand. This is where a finding gets confirmed, and it runs the same comparison code the scanner does.

ToolWhat it doesState
Repeater Tabbed and persisted across launches. HTTP/1.1 and HTTP/2 per tab, per-tab send history, and Send as another account, which swaps the whole credential set — cookies, auth headers, body tokens and all three anti-forgery carriers. built
Compare bench Two responses, judged by jo_analysis::compare — the engine’s own routine. A confirmation made by hand and a verdict reached by the scanner cannot disagree, because there is one rule and not two. built
Intruder Sniper, battering ram, pitchfork and cluster bomb. List and number-range payloads, payload processing, grep-match columns, outlier highlighting, hard caps and scope gating. built
Decoder The usual encodings, chained, with the original bytes kept beside the decoded view. built
Comparer A byte and word diff between any two captured items. built
Discovery Endpoints, URLs and parameters mined out of captured JavaScript, collected into a wordlist. It reads what was already captured; it does not crawl on its own. built

Analysis

The part that decides. Cross-account authorization testing is the centre of it: replay what you did as every other account, and decide by evidence rather than by resemblance.

Four engines sit under the findings. Measurement makes every number carry its threshold and the source of that threshold. Volatility learns the size-gap bar from an endpoint’s own replies. Triage sorts by what to do — dig, candidate, not applicable, merged — and never by a severity score. Coverage reports per class what was not measured, so a gap cannot be read as a pass.

Identifiers are extracted from the path, the query, cookies, the body, JWT claims and GraphQL variables. The credential swap goes through one send function, which is also the only thing that can send.

ToolWhat it doesState
Issues Findings worst-first, each with the measurement that settled it, triage buckets, and a coverage ledger. built
Vault Identifiers and masked secrets, shared against owned, enumerable leads, one click to an IDOR rule. built
Rules IDOR rules over extracted identifiers, with both the raw and decoded form kept and re-wrapped on send. built
Reflected XSS A passive pass over captured replies. Reachability candidates, never a confirmed finding, and no payload is ever sent. passive
Business logic A passive lead pass. Leads only — the kind of thing a human should look at, stated as such. leads

The agentic layer

Optional, off by default, and bounded by the Rust engine rather than by a prompt. A model picks what to look at and writes up what came back; it does not build requests and it does not decide verdicts.

ToolWhat it doesState
Agentic pentest Configure accounts, choose a brain — the deterministic engine, Claude Code, a local OpenAI-compatible model, or a hosted one — and run. It logs each account in through the proxy, crawls their features in a visible or headless browser, then runs the cross-account scan and the passive passes, streaming a live log and a per-account result table. built
Browser control The model drives a real Chrome click by click over MCP — open, survey, navigate, click, type — by role and accessible name. It never reads a field’s value. Destructive controls are refused by policy. built
Assistant Explains a response or a difference and drafts a write-up, on bytes redacted before they leave. It never writes a request and never decides a verdict. built
MCP server The engine’s tool catalogue, so an external agent can read the capture and ask the engine questions. Names only, redacted views, one gate. built
Harness The system prompt is an editable tree of files, one source for every driver. The boundary clauses are not in that tree and cannot be edited out — they are compiled in, and a drift alarm fails the build if a driver loses one. built

The rest of the window.

Four things that are not a tool but are part of using one: where a run is summarised, where long work is watched, where the knobs live, and the file all of it is kept in.

Dashboard What the capture contains, what the engines found, and the next action for each — rather than a wall of counters.
Tasks Long-running work with its progress and its ending, so a run that stopped early is visibly a run that stopped early.
Settings Proxy, scope, themes, the AI provider, and the Match & Replace rules. Keys are typed here, never written into the repository.
Project files A Burp-style chooser on every launch, and a .jo file you can switch between while the application is running. Captured traffic lives in that file and nowhere else.

What is not built.

Four of these are deferred features and two are release engineering. None of them is hidden in a footnote elsewhere.

Phases 1 to 5 of the specification are built and gate-green on this machine. Phase 7, which is signing, checksums and an SBOM, is the work between here and a tagged release.

Upstream proxy Chaining J0 through another proxy is not implemented.
HTTP/2 at the proxy The Repeater speaks HTTP/2. The interception path is HTTP/1.1 only. HTTP/3 is not implemented anywhere.
WebSocket injection Frames are captured and viewable; editing one in flight is not built.
Response-side Match & Replace Rules rewrite requests. Responses are untouched.
Signed downloads No installer, no notarisation, no checksums or SBOM yet. It builds from source.
Linux and Windows The CI matrix is written for three operating systems and has not been run. Only macOS on aarch64 has been verified, by using it.