Building from source
You need the stable Rust toolchain. The repository's rust-toolchain.toml pins stable with rustfmt, clippy and the wasm32-wasip2 target, so rustup installs them the first time you run cargo in the repo.
git clone https://github.com/pypilot-dev/pypilot.git
cd pypilot
# the engine
cargo build -p pypilot-helper --release # target/release/pypilot
cargo install --path helper --locked # or put it on PATH
# the Zed extension (WebAssembly)
cargo build -p pypilot-zed --target wasm32-wasip2 --releaseBoth editor extensions prefer a pypilot on PATH over a downloaded release, so cargo install is also how you try a change in your editor. After replacing the binary, restart the language server: in VS Code run Developer: Reload Window; in Zed, restart the language server or reopen the folder.
Windows
A running editor locks pypilot.exe. Rename the old one (for example to pypilot.exe.old), run cargo install --path helper --locked, reload the editor, then delete the old file.
Tests
cargo test -p pypilot-helperTests run offline against recorded PyPI responses. The platform is always passed in, never read from the host, so Linux (x64, arm64, glibc and musl), macOS (x64, arm64) and Windows (x64, arm64) are all checked on any machine; helper/tests/platforms.rs covers the cases where they differ. cargo nextest run -p pypilot-helper runs the same suite faster. The checks CI runs, and that every pull request touching Rust must pass:
cargo fmt --all -- --check
cargo clippy -p pypilot-helper --all-targets -- -D warnings
cargo test -p pypilot-helper
cargo build -p pypilot-zed --target wasm32-wasip2 --releaseCI builds with --locked. A separate job runs cargo deny check (advisories, licenses, banned crates, sources; deny.toml), and a nightly job runs against the live PyPI, PyTorch, NVIDIA and conda-forge. See Security.
Repository layout
pypilot/
├── extension/ Zed WebAssembly shim (extension.toml, src/lib.rs)
├── helper/ The engine
│ ├── src/
│ │ ├── main.rs Mode dispatch
│ │ ├── cli/ Subcommands
│ │ ├── lsp/ Language server
│ │ ├── core/ Environments, uv/pip/pixi drivers, solver
│ │ ├── pypi/ Metadata client, wheel tags, cache
│ │ └── matrix/ Driver/framework/conda-forge tables
│ ├── data/ Bundled JSON tables
│ └── tests/ Fixtures and offline tests
├── tasks/ Zed task templates
├── docs/ This site
└── scripts/ check_data.py and table generatorsLicenses
helper/ (the engine) is AGPL-3.0-or-later. extension/ (the Zed shim) is Apache-2.0, as Zed's registry requires for the code it ships. A contribution is licensed under the license of the directory it changes.
