PyPilot for Zed
The PyPilot engine inside Zed, installed from the Zed extensions panel: a small WebAssembly shim that fetches the engine and runs it as a language server for Python.
3 downloads · Zed
The Zed distribution of PyPilot, listed in Zed's extension registry. Run zed: extensions, search for PyPilot and install it. Open a Python folder and it checks the environment, showing one notification only when something needs attention, with options to fix the environment, show details, ignore it, or never ask again for this project. A correct environment stays silent.
Two parts, on purpose
The extension is a small WebAssembly shim. It uses a pypilot already on your PATH if it's new enough, otherwise it downloads the release for your platform from GitHub and caches it per version, falling back to an earlier download if GitHub can't be reached. Its only declared capability is downloading from that repository's releases.
Everything else happens in the native Rust engine: probing the machine, reading the project files, fetching PyPI metadata, the version arithmetic, GPU matching, running uv, pip or pixi, and the language server. Because the shim holds no logic, changes to Zed's extension API can't break environment resolution, and Zed, VS Code and the terminal always give the same answer.
In the editor
- Diagnostics on imports in Python files, with code actions to install a package or rebuild the environment on a supported Python.
- The full report opens as a Markdown document.
- If Zed's own Python language server keeps reporting installed packages as missing because it's looking at another interpreter, PyPilot offers to pin pyright to the project environment, through
[tool.pyright]inpyproject.tomlor a newpyrightconfig.json. Nothing is written until you agree. - When a project would be better served by pixi, an "Initialize pixi project" button shows the
pixi.tomlit would write, then lets you write and install, write only, or cancel.
Tasks and settings
Zed extensions can't add command-palette entries, so PyPilot's commands ship as Zed tasks you copy into .zed/tasks.json and run with task: spawn: fix or set up the environment, show the report, explain the Python range, fix the Python version, the CUDA build or the requirements file, migrate a conda environment.yml, move the project to pixi, and refresh the bundled data. Running doctor or setup as a task makes the language server re-scan.
There's no settings UI. Options such as the package manager, notifications and diagnostics scope go in .zed/pypilot.toml or pypilot.toml in the project root.