Skip to main content

Benzi

Benzi
by Variant Technologies

Compiler-backed AI coding agent

Benzi compiles your codebase into a resolved, queryable map of calls, data flow, and control flow first; then it explains, runs, edits and verifies your code using it. Includes a runtime tracer that settles what static analysis can’t.

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.1-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 412 / 500 — 82.4%
Total cost, all 500 instances $12.96
Cost per instance resolved $0.031
Attempts per instance 1 (pass@1)
Model turns (total / median) 14,167 / 21.5

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 & comparisons

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 & comparisons (privacy, pricing, limits, and how Benzi compares to Claude Code, LSP servers, CodeQL and CodeGraph): GitHub.


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

Metadata

Release files for benzi 0.1.6

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

Total release size: 47.8 MB

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

Download URL benzi-0.1.6-cp314-cp314-win_amd64.whl
Size 2.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
3b37c5d972c5cc15378bb435c8b4bb3704a32f8ecd44e57ca6966f0315415c22
BLAKE2b-256 checksum
How to use checksums
6c9a67ce86f7cca4f598a4f6172d3908c9a4ddc3517fd0a3433623d84ac598d9
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.6-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.6-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
8b56e8f209f6c60215f79a1214ba4f5b03a92d171ffea1287d761c0a07921991
BLAKE2b-256 checksum
How to use checksums
e90a62f702cd3ef6d6d23dc44fdbcd12b8259a65382e7cefcc904ab26ce4bdf0
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.6-cp314-cp314-macosx_11_0_arm64.whl

Download URL benzi-0.1.6-cp314-cp314-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f93fe76f072d31934703602bf0b2c11e3959e35878de17b296b994f44991146a
BLAKE2b-256 checksum
How to use checksums
f73515edfa52331023a63478fd5758b34068a30f52a5d036cb209b34eb6ae195
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.6-cp314-cp314-macosx_10_15_x86_64.whl

Download URL benzi-0.1.6-cp314-cp314-macosx_10_15_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
3522a0b2735165b07e5bd314cf628c2ed40db7317265de4c74f28b4d771ce83e
BLAKE2b-256 checksum
How to use checksums
367bfefd1b8f2a8614d6754b7d6fec34f8bbc6f39ec6e4696d00adf211270dce
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.6-cp313-cp313-win_amd64.whl

Download URL benzi-0.1.6-cp313-cp313-win_amd64.whl
Size 2.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bdc48cd75eaacf1d4935f885e8ae7065156c5989ad5699ebca2d716c0a9bb5fa
BLAKE2b-256 checksum
How to use checksums
fafc16ecaf2b4404f2a01638f3426e611fb86441af7374c0c1ab08c08f234ec2
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.6-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.6-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
8807630923286497c9481dfe76c8391dd0d19eae0753b0adc8b7b3529dd7471c
BLAKE2b-256 checksum
How to use checksums
1d4adf1fbdf3ca2138b1cd8f1d27980b497087c4ffc042541890856d41333db4
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.6-cp313-cp313-macosx_11_0_arm64.whl

Download URL benzi-0.1.6-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
1e1351f58c6f6136e35e4d4c5846bba56e060d364a9a19bd54f16652c297aa07
BLAKE2b-256 checksum
How to use checksums
c0894034642ad28f7066d13fc464a26aa7fe5e85432f817b2d3a41addc663252
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.6-cp313-cp313-macosx_10_13_x86_64.whl

Download URL benzi-0.1.6-cp313-cp313-macosx_10_13_x86_64.whl
Size 2.8 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
571f941d609580e7b3b650414d03d7c62848cce144b82caf834e530d2760a2d0
BLAKE2b-256 checksum
How to use checksums
f07105c6693b1cb69bb17066ff07b49a559777548735780509fa5c3e16474696
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.6-cp312-cp312-win_amd64.whl

Download URL benzi-0.1.6-cp312-cp312-win_amd64.whl
Size 2.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
2435e2f3385e6c62400f9db15bcae0c342946c1fbefb308138fa06d7fc02b3c6
BLAKE2b-256 checksum
How to use checksums
74a1abb22f67241cfe33ecb54bdad812cd2dc52baa09d6b9bf390ce1420fabde
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.6-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.6-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
9394202b80a4f7f1a448c84233ef28c0dbd677ec80fe5c0f95a80cb3ef5fd2bd
BLAKE2b-256 checksum
How to use checksums
c37f96796847c6d0eab18adaed7c953b9c8d709a5730d754d3b66173a7fc034f
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.6-cp312-cp312-macosx_11_0_arm64.whl

Download URL benzi-0.1.6-cp312-cp312-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cbd16121759ee92c711dd57f8aabc6d3ece6b1085917ef32b8fc162e90a463f4
BLAKE2b-256 checksum
How to use checksums
19e6c4c03cef85b3a0bae5e7947b938ff937ba3f6dc376bb4f865693bd8fbfaa
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.6-cp312-cp312-macosx_10_13_x86_64.whl

Download URL benzi-0.1.6-cp312-cp312-macosx_10_13_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
e7b0490495695fd41d1099b9ce48ea433e2d0c48ec0e60ab3c6afa1c9fafb749
BLAKE2b-256 checksum
How to use checksums
9eb96cd9efc1d2f4e54e6e8419c9e17908a161e1362750c65332579855b23f3e
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.6-cp311-cp311-win_amd64.whl

Download URL benzi-0.1.6-cp311-cp311-win_amd64.whl
Size 2.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
578d42144b12b6d864d20ef43674228794adb6537c79b9700e15440c8676d080
BLAKE2b-256 checksum
How to use checksums
4f30fea2b1694bf2824623410c7f9eae63e65cd527fdb38483ae90707c4a28bb
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.6-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.6-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
358bcb625ddca737b146b33ff6721366572327c1322be7086239eb0b53e2afad
BLAKE2b-256 checksum
How to use checksums
b82353960b43d11a068bbda79b0795a61a28f70546abba8a2d0583d5dd4019a5
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.6-cp311-cp311-macosx_11_0_arm64.whl

Download URL benzi-0.1.6-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
681226aca0bf7e2119e407e00cef7febb3aa068a7022ed80e60697110deae344
BLAKE2b-256 checksum
How to use checksums
27bee9b77b13a58ea6a0e35a40c5a40361d6c096c001d4cda28344905fdba005
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.6-cp311-cp311-macosx_10_13_x86_64.whl

Download URL benzi-0.1.6-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
994c2e795358cc81553e7a303b181e7719725e485c7137a21fcb9cd54bd88ee8
BLAKE2b-256 checksum
How to use checksums
f7800fa3d9f2d573290a57ffe4b6ca22ba642d6b59d0106e8b9fb6fe714cc45b
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

This release

0.1.6 This release

16 release files

0.1.5

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