Skip to main content

Benzi

Benzi
by Variant Technologies

An AI coding agent that doesn't read — it queries.

Benzi is free to use — actively in development, a work in progress.

Full README, benchmarks, and demos on GitHub


What is Benzi

Most AI coding agents dump a repository into a context window and hope the model finds what matters. Benzi works differently: before answering anything, a real compiler — built on tree-sitter — parses every file in the project and resolves it into a precise, queryable map. Every symbol, every call edge, every reference, every class in its inheritance chain. One pass, done.

Call flow and data flow are joined at every call site, so a bad value traces to its origin in one tool call. Claude Code greps; Cursor embeds; Aider maps signatures; Benzi resolves — and answers in O(1). Ten languages so far, plus a second engine for markup (HTML, CSS, DOM-JS).

What people say

"78.2% for $37 is a slap in the face to the 'brute force wins' school." — Alex Xiang, zicode (translated)

"Benzi is proving that the core competency of coding tools is shifting from simple 'reading comprehension' to 'structural grasping ability.'" — Gi Pyeong Lee, Tech Blog

"Fewer tokens, no context drift. Wild idea, honestly." — prompt 🤖 AI News

"It analyzes changes before writing them — and beats Claude Code on benchmarks." — Ponte al dIA (translated)

SWE-bench Verified

The full SWE-bench Verified set — 500 real GitHub issues from twelve Python repositories — run end to end on DeepSeek v4-flash, one attempt per instance, graded by the official swebench.harness.run_evaluation inside its own per-instance Docker images, with network access to GitHub and PyPI blocked inside every container.

Resolved 391 / 500 — 78.2%
Total cost, all 500 instances $37.33
Cost per instance resolved $0.095
Source lines read (total / median) 231,574 / 379
Model turns (total / median) 16,091 / 27

Full technical report and per-instance breakdowns: GitHub.

How it works

  1. Compile. Tree-sitter parses every file; imports are resolved, class ancestry built, every identifier traced to its definition. The output is an index, not a blob of text.
  2. Query. The agent answers questions and plans edits through structured tools over that index — profile, get_callers, backflow, trace_path, skim_source, and ~30 more.
  3. Edit, gated. Every write passes syntax and semantic gates against the real language parser — a broken parse auto-reverts, checking blast radius before a change lands, not just after.
  4. Verify by running it. A focused repro runs under a runtime tracer — real argument values, real returns, real dispatch — which both proves the change and settles the map.
  5. Reindex, incrementally. The map follows the filesystem, never the agent's account of what it did — each turn re-parses only the files whose bytes actually moved.

Tools

A sample of Benzi's 35+ tools — the full list is on GitHub:

Tool What it answers
get_callers Every call site that reaches a function — the code that will feel a change.
call_tree The transitive call closure from one function, forward or in reverse.
trace_path The call chain connecting two functions, and the data carried along it.
backflow / forwardflow Where a wrong value came from / where a return value ends up.
profile The full 360 on one symbol in a single call.
search_symbols Case-insensitive substring search across every symbol in the repo.
get_hierarchy A type's resolved bases and its direct subclasses.
skim_source A body's one-level outline, so you know which lines are worth reading.
execute_from / execute_generated_testcase Runs code under the call tracer; writes and runs a self-contained repro.

Full list of 35+: GitHub.

Features

  • Six states, never a guess — every call site and file carries one: resolved, external, candidate, unresolved, observed, or unindexed. Whatever static analysis can't settle is flagged as unsettled, not guessed.
  • Runtime tracer — hooks every call during execution and overlays the observations back onto the static map.
  • Persistent memory — durable per-repo facts survive restarts.
  • Dual-engine: code + markup — a separate index for HTML/CSS/DOM-JS.
  • Model-agnostic — Anthropic, OpenAI, or any compatible API.

Language support

Python · JavaScript · TypeScript · Java · C# · C++ · C · Go · Rust · Ruby

One compiler, ten languages. Python is deepest — it's the only one with the runtime tracer. Depth varies elsewhere; see Language support on GitHub for specifics.

Install

pip install benzi

# one-time setup -- verify your email, then bring your own API key
benzi-login --login you@example.com
benzi-login --anthropic-key sk-ant-...       # or --nonanthropic-key for
                                              # groq/deepseek/kimi/etc

# then, from inside (or pointed at) any repo:
benzi-headless . "what does this repo do?"

This also installs benzi-mcp — the same compiled index exposed as tools over MCP, for whatever agent you already run (Claude Code, Cursor, your own harness). Point your MCP client at it after the same benzi-login step; output quality then depends on that harness, since this mode has no agentic loop of its own.

. means "the repo I'm standing in" — pass a path instead if you're running it from somewhere else. Your key stays on your own machine and talks to your model provider directly; Benzi's servers never see it or proxy the call. Run benzi-login with no flags any time to see what's currently saved, or benzi-headless --help for every option.

Benzi is also available as a live web demo (no install, no key needed) and a VS Code extension.

FAQ

Do I need an API key? For the CLI, MCP, and the VS Code extension, yes — bring your own Anthropic or OpenAI-compatible key. Only the browser demo runs without one.

How is this different from Cursor, Copilot, or Claude Code? They find code by searching text — grep, or embedding similarity. Benzi resolves it first: a tree-sitter compiler builds a real index of symbols, call edges, inheritance and data flow, and the agent queries that index instead of guessing which files to read.

Full FAQ (privacy, pricing, CodeGraph comparison, repo size limits): GitHub.


Full README on GitHub — benchmarks, demos, and more.

Metadata

Release files for benzi 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for benzi 0.1.1
File
benzi-0.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
benzi-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
benzi-0.1.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
benzi-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
benzi-0.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
benzi-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
benzi-0.1.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
benzi-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details

Total release size: 23.6 MB

Release files / benzi-0.1.1-cp313-cp313-win_amd64.whl

Download URL benzi-0.1.1-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
8b41a923593a4ab08687b4b2ec598a180674ae18563dba94157303bc0e3b00ab
BLAKE2b-256 checksum
How to use checksums
382e243cae607ad364e9e8547bbddeaa1f255878fd02d5a475ed18a13b3edbfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
Size 4.4 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
765c52374b3005ec92a2a7a8f93215e41f91f2dd8a7f548eb9374da2669b00a9
BLAKE2b-256 checksum
How to use checksums
3923b885fc5d4e5b786a98174958cf584921cfbce245a1ae445bf5b7e1e91322
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL benzi-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
414b70e6032e455ac5c4df74255d588f97f091a2c74c4954f47c994d192c0233
BLAKE2b-256 checksum
How to use checksums
2605fdcb91f053e5cc869ba8da3779e748180b9fb6b033c2aee047c09ee835c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl

Download URL benzi-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
0533989a32b24d4f4030bf1adb23aa0c17cdeef8cbd9312b10ee1fdc7c4eb5b4
BLAKE2b-256 checksum
How to use checksums
b8c8abe908113ce4f3190f48b3d20aca6bc5cb8e9d1e2b5a99fa5486952796f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp312-cp312-win_amd64.whl

Download URL benzi-0.1.1-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
399f7476e1c2cac906f0ed97437313c0d765be718cae29575181fddb85d4e36b
BLAKE2b-256 checksum
How to use checksums
fdf0a5860a1ced866aa94817d02c5a2c9cd29381da7942c04d6f092b462353fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
Size 4.4 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
56e8dadc2b3dd8044adefcff9aa0376fb9d914413b14306057114e59b9f83d92
BLAKE2b-256 checksum
How to use checksums
bfe0d4ac0ac2807f17f8ffd36e094ab4560d89d9bab52f21a8826b1f0a61c572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL benzi-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Size 2.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a7ccd26d94c51dcf1526aa3b86aa7ec4b2cf1b45118e65f53312409cdaccaf98
BLAKE2b-256 checksum
How to use checksums
bd8dedb6ac47d296af452d90e978eac1d6e333ad024b9c5b29402952cc37cdc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / benzi-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl

Download URL benzi-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
37526c59fd93189f4c805f8f667f0c1dc0d403e6e55da0d3a2225937d14e20c1
BLAKE2b-256 checksum
How to use checksums
9e412a67e7390cb5401b77fa1dcb82dccb3ad4274bd883dbbfa7de2250f6b715
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.6

16 release files

0.1.5

16 release files

This release

0.1.1 This release

8 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page