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

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

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

Total release size: 53.6 MB

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

Download URL benzi-0.1.7-cp314-cp314-win_amd64.whl
Size 2.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
8cf1cd9d10dab6a88b554ca84d7325b49e1a30a5ff5cec434ecb5c4cc63f56be
BLAKE2b-256 checksum
How to use checksums
fe97a014e357cf6fefbbf247db41eda845c997611ba1098bfd65330bfe728c05
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.7-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.7-cp314-cp314-manylinux_2_34_x86_64.whl
Size 5.1 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
eaa46984eb4319565da85244cf8294b194f598b485a4d88f21b6b64322c57e68
BLAKE2b-256 checksum
How to use checksums
d4277d5021b584b59cfc7706b30d13a8f1450bdb857f3967b1294551cc38d144
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.7-cp314-cp314-macosx_11_0_arm64.whl

Download URL benzi-0.1.7-cp314-cp314-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5a9642b9246593777ecaae388899cb971a1c3c5ffe71143d4f4f69f049627966
BLAKE2b-256 checksum
How to use checksums
87246e70dd91c2f7c8f600b13b8ad95eba6aedca902131216851983ceb51f9b8
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.7-cp314-cp314-macosx_10_15_x86_64.whl

Download URL benzi-0.1.7-cp314-cp314-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
24b8984e7b59d210d9c41d8435ed9823152a2652a9a490c30a0bdd91facccf5b
BLAKE2b-256 checksum
How to use checksums
349ea616cc82a25cdac26c954de26523f0f9bdc6291adda4fa41770a5d005b96
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.7-cp313-cp313-win_amd64.whl

Download URL benzi-0.1.7-cp313-cp313-win_amd64.whl
Size 2.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bf475d975ddfbf425256755c67a18ed9fb37aadbc863999b5dac063d06cd8390
BLAKE2b-256 checksum
How to use checksums
2f841011015bf384085d9b35480f1752080f2fdabd42a756adb2b6e6d2b85d20
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.7-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl
Size 5.0 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
387d86308ef3eabb23c5423bef8c413b74e5b238ac12b3bf8be6c7e818b01f8d
BLAKE2b-256 checksum
How to use checksums
ba1b02fa62218614f8c1208cd15cda1d90210d87871a785beda0d411f90c5c39
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.7-cp313-cp313-macosx_11_0_arm64.whl

Download URL benzi-0.1.7-cp313-cp313-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4c736144b0074bc62840d3ba22763721efb2eda0ad6c2541dfa0cd8c7535cfca
BLAKE2b-256 checksum
How to use checksums
f61ebe9f8fa430a1f8c8f95aca40141ee01e03809afd04d2ee690467edfc33ea
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.7-cp313-cp313-macosx_10_13_x86_64.whl

Download URL benzi-0.1.7-cp313-cp313-macosx_10_13_x86_64.whl
Size 3.1 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
0d3eba0a923d657ae302481947f2e6a6fb1c56aa69e6b1a34ecc2581c38fbab9
BLAKE2b-256 checksum
How to use checksums
382a702f0170f09e071a1ffc04064ce7e56812cf19eb9ee756c6cd3daf214b72
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.7-cp312-cp312-win_amd64.whl

Download URL benzi-0.1.7-cp312-cp312-win_amd64.whl
Size 2.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
337bc4f9a871d9fefa55ecbae11bc9574da95c8276e8703b67d3b7a3e3ac5ad9
BLAKE2b-256 checksum
How to use checksums
c7bb39df542711f6b965dce52f18392b918f0b422e150804708bc847e9e1df33
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.7-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl
Size 5.0 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
2b0323c7a92360453db03bee858305413c83686a7659527dc2e78f915ea58c8a
BLAKE2b-256 checksum
How to use checksums
4a526786e2d57533a5316c03d64d8377ed6f90d9d5d9215134f217f4f1cd827c
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.7-cp312-cp312-macosx_11_0_arm64.whl

Download URL benzi-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a79bda7d5c6fff0511cc1bb9b12d94cbf9f828e487b6874c87ec757566cef662
BLAKE2b-256 checksum
How to use checksums
a94c3c765de14d15d4ba500e6bea5284cdfcf32e2890c184d4fdb13806a708cf
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.7-cp312-cp312-macosx_10_13_x86_64.whl

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

Download URL benzi-0.1.7-cp311-cp311-win_amd64.whl
Size 2.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
0552f430d49abbfea520bcc2a5f797567039d6b4cfe48373623f8b8dc7699956
BLAKE2b-256 checksum
How to use checksums
760de9735d17a3fc019b1a0f35b71d3c152ab9676ca717c6d269a55b7c3b076b
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.7-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL benzi-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl
Size 4.5 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
66915db16271ecb48352f90bbd0ca77f050c25aed4d9255fc3e9b7e7267c786c
BLAKE2b-256 checksum
How to use checksums
f0c7d16e18eede23956b116995c3f63ce21cddf545e02e8bd872c94542ea230d
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.7-cp311-cp311-macosx_11_0_arm64.whl

Download URL benzi-0.1.7-cp311-cp311-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
898c8ba471781983e851e690d96981c0ebdb917767ecb2e74e753fba472c3e02
BLAKE2b-256 checksum
How to use checksums
b6fa699f62415c80a5299bf0705861638f81b02c14bb3f78a9d3134da0e1f683
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.7-cp311-cp311-macosx_10_13_x86_64.whl

Download URL benzi-0.1.7-cp311-cp311-macosx_10_13_x86_64.whl
Size 2.9 MB
Tags CPython 3.11 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
7cc58b56f1b73435006a95cc99a0f91686e72a1bdbe90ffa7ebd6c69a18d757d
BLAKE2b-256 checksum
How to use checksums
0b722e87a13d3d68e47925917b42d5d7a5114c3deba6fca7f9ea39e1e8bea8af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for benzi 0.1.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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