Distribution channels
Pylon ships through five channels. All bundle the same pylon.wasm
under <prefix>/lib/, and the same pylon launcher resolves it
relative to its own install path.
| Channel | Install |
|---|---|
| Homebrew | brew install tegmentum/tap/pylon |
install.sh | curl -fsSL https://pylon.dev/install.sh | sh |
| Tarball | curl -L https://github.com/tegmentum/python-wasm/releases/... |
| pip wheel | pip install pylon |
| Docker | docker run ghcr.io/tegmentum/pylon |
Homebrew
Formula at
packaging/homebrew/pylon.rb.
Published to tegmentum/homebrew-tap.
brew install tegmentum/tap/pylon
pylon -c 'print(1 + 1)'
install.sh
Same shape as rustup / uv — a single POSIX-sh script that detects
platform, downloads the correct tarball, and drops the launcher on
$PATH.
curl -fsSL https://pylon.dev/install.sh | sh
Tarball
Native artifacts for macOS-arm64 and linux-x86_64 attached to each
GitHub release. Extract wherever you like; put bin/pylon on
$PATH.
curl -LO https://github.com/tegmentum/python-wasm/releases/download/v0.1.0/pylon-macos-arm64.tar.gz
tar -xzf pylon-macos-arm64.tar.gz
./pylon/bin/pylon -c 'print(1+1)'
pip wheel
pip install pylon. The wheel bundles the same pylon.wasm and
launcher inside the wheel's data/ tree; console_scripts entry
routes pylon on the terminal to a thin pylon.cli:main shim that
resolves the sibling launcher.
# packaging/pypi/pyproject.toml
[project]
name = "pylon"
version = "0.1.0"
description = "CPython 3.14 interpreter compiled to WebAssembly (WASI Preview 2) — pip-installable launcher"
license = {text = "Apache-2.0"}
[project.scripts]
pylon = "pylon.cli:main"
Wheel code is Apache-2.0; bundled CPython retains PSF-2.0 (see
THIRD_PARTY_LICENSES.md).
Docker
docker run --rm ghcr.io/tegmentum/pylon:latest \
-c "print('hello from a container')"
The Dockerfile at
packaging/docker/Dockerfile
copies the same tarball layout into a small base image and sets
pylon as the entrypoint. Runs anywhere Docker runs.
Invariants across channels
All five ship:
- The same
pylon.wasm(sha256 recorded incaps-manifest.toml). - The same
pylonlauncher (packaging/bin/pylon→pylon-launch). - The same cap set (every component in
caps-manifest.toml).
The launcher resolves pylon.wasm relative to its own install path,
so the four channels differ only in filesystem layout and how the
binary lands on $PATH.