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 & 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.4

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

Total release size: 47.1 MB

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

Download URL benzi-0.1.4-cp314-cp314-win_amd64.whl
Size 2.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
0057503cd58a1055e4e04d6d2ae0242605630a909e708d38501de3ea093e88c9
BLAKE2b-256 checksum
How to use checksums
5b05690b686fd9b4d52826cecf3aec65c3e35afbda616608c0b706e3b7b3bc34
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.4-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.4-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
b6a53966b3a50bee690d0161a1dbb7190e6d4c50ebd2777dfdd4fd6a528ccf13
BLAKE2b-256 checksum
How to use checksums
5a3c26ddb5745679c9ded20bb005f67896775b205c078b6bd15419326093ad18
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.4-cp314-cp314-macosx_11_0_arm64.whl

Download URL benzi-0.1.4-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
541d0101b7a990d965ab850bfea730c82903c5487c55ed37e88d31c48b3e3387
BLAKE2b-256 checksum
How to use checksums
74b898bcb5bfe3fc2402cdf4d041eda904e86ba75cea5d45f82e67f190dc4c70
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.4-cp314-cp314-macosx_10_15_x86_64.whl

Download URL benzi-0.1.4-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
2cd12362d3e1a351c4d84b87306273b19c13367640d197434e18b3686be3c3fa
BLAKE2b-256 checksum
How to use checksums
0e537287412938337f2d64ac607c23e5487b543af3a3ef123a1a61d6ec771036
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.4-cp313-cp313-win_amd64.whl

Download URL benzi-0.1.4-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
64f4317aee2d95d37f28226f6978b4e00df885c14e44e5e1eab5dc83ae36010e
BLAKE2b-256 checksum
How to use checksums
bf2010659f7ca180e47b8cc800919bbfd0b77b1e7a545f29dee0a9079cf4cb91
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.4-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.4-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
685a2e89d366ba2745fc6e5c2d69372afbce5d40842bf3335b06f204ce63c96a
BLAKE2b-256 checksum
How to use checksums
877b871c770b2acc294ca2c788f52b880d4bbbce830d2e0cfa3535d01460c9b0
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.4-cp313-cp313-macosx_11_0_arm64.whl

Download URL benzi-0.1.4-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
3351e52617b1b8c5cbc2aae0f67d0dd7b473768e77acacb0d05ce0a2d067eaba
BLAKE2b-256 checksum
How to use checksums
93f57883de50a0616c05aa281f1751b53aba7764b9a7789bf3d7dd1f92980cb0
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.4-cp313-cp313-macosx_10_13_x86_64.whl

Download URL benzi-0.1.4-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
b91d1fef92eca8cc54ad5eef6478fe599987e32b6ae44179f88f9f3fb01a57ac
BLAKE2b-256 checksum
How to use checksums
94eb4344f70747a6e9ba83109c4e091dbe11f60a6f7d1b082c393eaf500cd534
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.4-cp312-cp312-win_amd64.whl

Download URL benzi-0.1.4-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4166f17faf7a2684ad661100a2ccfd089d402304bb741dea83e7b0d4eeb9e5d5
BLAKE2b-256 checksum
How to use checksums
1071fe5bb1d237dc41a1e6bbc8bc6d310823003bbb8e29160ace43035421fb2c
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.4-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.4-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
d7868ea0b026fed64ed322d65b1edc3b03ead47496f6d09d7b490c61e789062b
BLAKE2b-256 checksum
How to use checksums
4d849453003204cb9a3027cb32459e2126b31736e2193777bc77530ca606385a
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.4-cp312-cp312-macosx_11_0_arm64.whl

Download URL benzi-0.1.4-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
021b8161cbe82508a088163878bc3ee11a5ac2bed975c07dbeda82e0c77d44f9
BLAKE2b-256 checksum
How to use checksums
978b437cf79c752539124145f6e72cf4e54af1e369c968e48b64f806fd6f633b
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.4-cp312-cp312-macosx_10_13_x86_64.whl

Download URL benzi-0.1.4-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
78aac49374a767a1e8915536819e1d7803c78afe3b26913b81dccba3cab1f988
BLAKE2b-256 checksum
How to use checksums
a4627f5905688d236d9245e115539a3d4f26e634c42908ca5992ff3bd62ea081
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.4-cp311-cp311-win_amd64.whl

Download URL benzi-0.1.4-cp311-cp311-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4ce21aaf0eea00f20c9bcdf7a3e06764c701e905c459b3b7e5bf4e199df4b0c2
BLAKE2b-256 checksum
How to use checksums
0a28948f91295603e84c1c686a2227c7e188333a49680c953286cfa498c47d12
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.4-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.4-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
ce8832e74b602979cc8b549f3938e902da2103d2c2c7d00fa2870bccac5757d8
BLAKE2b-256 checksum
How to use checksums
ca791115b4a8da2ff32166f6133bde065d0229c8a36fead4ca1ffa7de58d3e21
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.4-cp311-cp311-macosx_11_0_arm64.whl

Download URL benzi-0.1.4-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
5694acdceee987b428a7b7129ffbb6f9946ecd9aaaff3ff764c90fac7922a7b8
BLAKE2b-256 checksum
How to use checksums
f25e31989ecee2c8c187e5a8708ee2810040dbb29c95b6d8c5aa3e79d61bf483
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.4-cp311-cp311-macosx_10_13_x86_64.whl

Download URL benzi-0.1.4-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
847142ee9c31ef15caa8caf62382d841b0f1b716b531f8eab4b4e1e5383538ec
BLAKE2b-256 checksum
How to use checksums
8eade7fe7c6fc5d55b58195629ddcacb7c5d6ad8bb287fc3aed1eefba5f09a88
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.4 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