Skip to main content

Benzi

Benzi
by Variant Technologies

Benzi is a compiler-backed coding agent that compiles your codebase into a resolved, queryable map of calls, data flow, control flow and class hierarchy first; then it reads, explains, runs, edits and verifies your code using it. Includes a runtime tracer that settles what static analysis can't. The Benzi compiler also works as an MCP server.

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.2

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.2
File
benzi-0.1.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
benzi-0.1.2-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details
benzi-0.1.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
benzi-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
benzi-0.1.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
benzi-0.1.2-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
benzi-0.1.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
benzi-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
benzi-0.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
benzi-0.1.2-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
benzi-0.1.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
benzi-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
benzi-0.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
benzi-0.1.2-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
benzi-0.1.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
benzi-0.1.2-cp311-cp311-macosx_10_13_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.13+ x86-64 Details

Total release size: 47.0 MB

Release files / benzi-0.1.2-cp314-cp314-win_amd64.whl

Download URL benzi-0.1.2-cp314-cp314-win_amd64.whl
Size 2.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
eb094d0ac6304596c77843b43ff4429db491fb8c726e1ce0428146b50e53bc75
BLAKE2b-256 checksum
How to use checksums
4d537879017e8ee3f46645ec3fe9b79cfe64db05787fd60ae8f0ddc8fa4ebdef
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.2-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.2-cp314-cp314-manylinux_2_34_x86_64.whl
Size 4.5 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
e7dfc53ec9270fb13d4e26abb6b2a505cfb7c2df6ae78c5e2bc970c11ba71f2b
BLAKE2b-256 checksum
How to use checksums
714883ee8c54b62b6634cf5c27af2074e5aa69efec13672ec57e8ebe6de4a8dc
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.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL benzi-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
57f3fc384f9f12a52cd534ad7c1a03d471b0e5d6bffe1ce0b902ad9f2ab975a4
BLAKE2b-256 checksum
How to use checksums
69f9d8c91b23af381842557c677ce66f81e7faed965d284022ff63418cd87f7f
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.2-cp314-cp314-macosx_10_15_x86_64.whl

Download URL benzi-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl
Size 2.7 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
f4a6081d67e3c8427ce92c0c84670eebbc5b771a3ba3722ca232659c1aacfa85
BLAKE2b-256 checksum
How to use checksums
2285b58ac08c2cba8585df617942dfe42e50c0e7f647e93bd89b8f203fade4ac
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.2-cp313-cp313-win_amd64.whl

Download URL benzi-0.1.2-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
786a3137bd5cddfb94a5741869d1f5c7ac550c6d257b29fad7bc1bddb94c481f
BLAKE2b-256 checksum
How to use checksums
bda80d7fb7b5cb5001ff71df39b27f4c5cd1d3ccb38d68c118e93f2da8d8e141
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.2-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.2-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
58857e00ab8945b04f215efcea604ec5fc9e89c2e52f1a94576af78412b191dc
BLAKE2b-256 checksum
How to use checksums
e77ff01463fde47f8b298dcd49532e8e7a3b47380fefb6501231ef73568b9295
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.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL benzi-0.1.2-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
ad450c225570f3f8ffdd05f2fc138594c61c7ffe54274731592953a3e160f62d
BLAKE2b-256 checksum
How to use checksums
0849b4658b4e430e9a8f20a4e8162950feab97c23383dba2132e7ad872c74fbb
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.2-cp313-cp313-macosx_10_13_x86_64.whl

Download URL benzi-0.1.2-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
f6379349e2b4a7ff0edf538af50d65e488ff65db60b44a2580a72452ac16ce84
BLAKE2b-256 checksum
How to use checksums
e102561d80fe1129d68f72e5daa1a0560a0a9b597778f6e9d9f70c904a8dcdb5
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.2-cp312-cp312-win_amd64.whl

Download URL benzi-0.1.2-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b0cdeb00953e8c23e0388992d704f8fc8354267b4865e068774f518515ef4000
BLAKE2b-256 checksum
How to use checksums
2834c204952a7808b3d40f15dbb1d2b3a8268210e245c113f03057e5a44c4c2b
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.2-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.2-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
be50c7fe0c47df0e6197a8351233d7cb353b93a991a42933bab5e7e776e846ca
BLAKE2b-256 checksum
How to use checksums
3d6a0a457eee1e4b6c476e65fdcb4cda321bf88b5f616203c44d302aa3c4dcdc
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.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL benzi-0.1.2-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
04f3b3bda8a6f9c23bd18e501043aa58eb3da6dd0455d2375e5b6d9d64908aa3
BLAKE2b-256 checksum
How to use checksums
d50e206426e9df5c19e24550edebc269d9a4a855e29e72006227087f66b215f8
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.2-cp312-cp312-macosx_10_13_x86_64.whl

Download URL benzi-0.1.2-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
224316f57b11513954f756a839bd859293ec5bd5ba11bacfc0a8992ac9b2973d
BLAKE2b-256 checksum
How to use checksums
75540a2337eb1540618eedbba2cc745747c188bf9728951fc11b3524aefca3f1
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.2-cp311-cp311-win_amd64.whl

Download URL benzi-0.1.2-cp311-cp311-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f52b6f106dfc30cc603d7c6b3dba7bc4bfd32c8b5b48da77035b95abd2a957e3
BLAKE2b-256 checksum
How to use checksums
d1064d70c9b579ff1f8cb386256a79ca1e3fe73ada3d1c044d1cd5b381fa258b
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.2-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.2-cp311-cp311-manylinux_2_34_x86_64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
31dcb4e5025b8a813ebf3bb574a87003bad529f20832bc0ea25e05c13722685b
BLAKE2b-256 checksum
How to use checksums
f810df5d1693cc79a66c570265165ce86948ede936db9106b41d5e21b058f393
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.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL benzi-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Size 2.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bb49b17589e0eb70566bfac72618b8d3b21d14499fe53f43c4848c5e2f08b390
BLAKE2b-256 checksum
How to use checksums
a533b3b577ab6e3f3ff41766a7405fc42b8be1ae7903d1e05b20390a12d9a829
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.2-cp311-cp311-macosx_10_13_x86_64.whl

Download URL benzi-0.1.2-cp311-cp311-macosx_10_13_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
7ee79f406194b942275d19b59dd01ebd34124a5a0e7371f89cc97a11a19d66bb
BLAKE2b-256 checksum
How to use checksums
ecf07f70d27da0cbb4a860924bba309da2d453a7a35ef93b4f7d5d58760add9f
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.2 This release

16 release files

0.1.1

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