The open-source
Python language server.
The only Python type checker scoring
100% on the official
python/typing conformance suite — and the fastest we’ve
measured. A complete, open-source Python dev environment in Rust:
type checker, language server, debugger, profiler — autocomplete,
go-to-definition, hover, refactoring, diagnostics and integrated
debugging in VS Code, Cursor, Zed, and Neovim, without the proprietary
lock-in. Strict by default. Weighing up the
best Python type checker for your
codebase? Start with the scoreboard.
python/typing suite · the only tool on the board at 100% · 0 false positives, graded against python/typing@39164cd (2026-07-22)
Self-measured against the official python/typing suite & the committed benchmark CSV.
How we measure conformance →
Full benchmarks & methodology →
How it compares
Everything you expect.
Fully open source.
A feature-complete, open-source language server with no proprietary lock-in. And in our own cold-start benchmark it posts the lowest median of every checker we tested: a 10 ms median cold check, against Pyright’s 573 ms and the Rust-based ty, Pyrefly, and zuban. Every competitor claim below links to that tool’s own docs — and the benchmark methodology shows exactly how these were measured.
| Feature | Basilisk | Pyright | mypy | ty | Pyrefly | zuban | pycroscope |
|---|---|---|---|---|---|---|---|
| PEP conformance ¹ | 100% (141/141) | 96.8% | 77.3% | 82.3% | 97.9% | 99.6% | 92.2% |
| Cold full-file check (median) | 10 ms | 573 ms | 574 ms | 40 ms | 110 ms | 28 ms | — |
| Implementation | Rust | TypeScript | Python/C | Rust | Rust | Rust | Python |
| Runtime required | None | Node.js | Python | None | None | None | Python |
| Full LSP (completions, hover, goto) | ✓ | ✓ | — | ✓ | ✓ | ✓ | — |
| Integrated debugger ² | ✓ | — | — | — | — | — | — |
| Official editor extensions | VS Code, Cursor, Zed, Neovim (JetBrains soon) | Pylance · LSP | linter plugins | VS Code, PyCharm, Neovim | VS Code, Neovim, Zed | VS Code (ZubanLS) | — |
| License | MIT | MIT | MIT | MIT | MIT | AGPL-3.0 / commercial | Apache-2.0 |
PEP-conformance row: full-pass scores from the official
python/typing conformance suite
— one identical run that grades every tool, Basilisk included. Snapshot of
python/typing@f051625
(Jul 6 2026); each score links to that tool’s live results folder, since these figures move as the tools improve.
Basilisk is the only checker at 100%.
01 — Conformance first
100% to the typing spec.
Re-run against main, every release.
Scored by the official python/typing conformance suite — the same published
harness that grades Pyright, mypy, and Pyrefly — run on the real binary with every
conformance rule enabled and nothing disabled: 21 of 21 categories at 100%,
0 false positives, 0 missed required errors. Every release re-pulls the suite from
python/typing@main and requires a perfect score to ship, so the number is
reproducible — never hand-typed — and always graded against the exact commit shown below.
Basilisk is now listed in the official python/typing results — graded on the same run as every other checker, it is the only one at a perfect 100%, ahead of the tools from Microsoft, Meta and Astral.
python/typing@39164cd (2026-07-22) — re-cloned from main every release
02 — Measured, not promised
The lowest median
we’ve benchmarked.
The numbers come from make bench — hyperfine wall-clock against Pyright,
mypy, ty, Pyrefly, and zuban on identical fixtures — and the raw CSV is committed to
the repo, so the site renders exactly what was last measured.
Basilisk posts the lowest median cold full-file check of every tool we measured —
10 ms, against Pyright’s 573 ms.
And because re-checks are incremental — only the edited file and its importers are
re-analyzed — warm edits do even less work. See the benchmark methodology →
03 — Quick fixes & refactoring
Lightbulb-ready.
Every diagnostic.
Many diagnostics ship with a one-keystroke fix — add the missing annotation,
modernise Optional[X] to X | None, convert to an f-string.
Plus a full refactoring suite: extract, inline, change signature, and move symbol.
# 💡 Quick Fix available def process(data) # BSK-0001 # → Add type annotation def process(data: str) -> str: return data.upper()
04 — Beyond the spec
The spec makes types optional.
These make them mandatory.
The typing spec treats unannotated code as inferred, not an error. Basilisk’s
8 opt-in strictness rules refuse that: they require a type on every parameter,
return, variable, *args/**kwargs, and class attribute, demand
@override on overrides, reject implicit and explicit Any, and flag
unannotated lambdas. Every one is off by default — switch them on project-wide or per-folder
from your editor or pyproject.toml, and one-click quick-fixes drop in a placeholder
annotation (: Any, -> None) so you can fill in the real type. They never run during conformance, so they can’t pad that score.
See the rules →
05 — Integrated debugging
F5 to debug.
Basilisk handles the rest.
Set breakpoints, step through code, inspect variables — all brokered through the Basilisk LSP. The Rust server spawns debugpy on a free TCP port and connects VS Code’s DAP client automatically. No manual configuration. No separate debug extension. Just press F5.
06 — Single binary
Drop it in PATH.
That’s the whole install.
Compiled to a standalone Rust binary. No Node.js. No Python interpreter.
No pip install. No npm install.
Works on macOS, Linux, and Windows from a single download.
# macOS / Linux (Homebrew) brew install Nimblesite/tap/basilisk # Windows (Scoop) scoop install basilisk # then just run it basilisk check src/
Open source.
Conformant by default.
The type checker, LSP server, and editor extensions are working today — autocomplete, go-to-definition, hover info, diagnostics, refactoring, F5 debugging, and profiling — in VS Code, Cursor, Windsurf, Zed, and Neovim. JetBrains is on the way. Open source. No proprietary lock-in. Early adopters shape the roadmap.
Sources
- PEP conformance. The table figures are full-pass scores from a single run of the official python/typing conformance suite, which grades every listed checker — Basilisk included — on the identical test set. We snapshot them from python/typing@
f051625(Jul 6 2026) and link each score to that tool’s live results folder (pyright, mypy, ty, pyrefly, zuban), because those scores change as the tools improve. Basilisk scores 100% (141/141) — the only checker at a perfect score on this run. As a reproducible cross-check we also re-run the unmodified scorer on our own binary every release (100%, 141/141, graded against python/typing@39164cd); both measurements agree. - Benchmark (cold full-file check). Mean wall-clock over 10
hyperfineruns of each tool’s CLI against identical single-construct fixtures, measured on Apple M4 Max (Darwin 25.5.0, arm64, 14 cores) on 2026-07-17T14:23:34+1000. All tools measured cold from the same run — basilisk dev (962f2b34-dirty), pyright 1.1.408, mypy 1.19.1, ty 0.0.19, pyrefly 0.54.0, zuban 0.9.0.mypyruns with--strictandzubanaszuban mypy --strictso both perform the strict analysis the fixtures stress. Sourcebenchmarks/status/darwin-arm64-apple-m4-max.csv; reproduce withmake bench. Cold full-file only — not warm incremental (LSP) performance. - Implementation & runtime. ty: “An extremely fast Python type checker and language server, written in Rust.” Pyrefly: Meta’s announcement is titled “Open-sourcing Pyrefly: A faster Python type checker written in Rust.” zuban: “a high-performance Python Language Server and type checker implemented in Rust, by the author of Jedi.” Pyright (TypeScript) states you must install “node (which Pyright requires).” mypy: “Mypy is itself compiled using mypyc” (Python compiled to C extensions) and installs via
pip(needs Python). ty, Pyrefly, zuban and Basilisk are compiled binaries, so no language runtime is required to run them. - Language server & editors. Pyright ships an open-source language server (
pyright-langserver --stdio) usable in any LSP editor; Microsoft’s docs note “core type checking functionality is associated with Pyright while language service functionality is associated with Pylance” — the proprietary Pylance VS Code extension. mypy has editor plugins that run it as a linter (not a language server). ty: “Editor integrations for VS Code, PyCharm, Neovim and more.” Pyrefly: “an extension for popular IDEs and editors such as VSCode, Neovim, Zed, and more.” zuban: “Most important LSP features are supported… completions, goto, references, rename, hover…” via the official ZubanLS extension. - License. Basilisk, Pyright, mypy, ty and Pyrefly are MIT. zuban is dual-licensed AGPL-3.0 or a paid commercial license (PyPI classifier: “Other/Proprietary License”).
- Integrated debugger. Basilisk brokers debugpy through the language server (press F5). None of Pyright, mypy, ty, Pyrefly, or zuban documents an integrated debugger — each self-describes as a type checker and/or language server.
- Pyrefly throughput. The “1.85 million lines of code per second” figure is from pyrefly.org, “Tested using Meta infrastructure (166 cores, 228 GB RAM)” — a whole-project throughput number, not comparable to our single-file cold-check benchmark.