Skip to content

pyra

One pipeline for Python versions, dependencies, environments, and execution.

Pyra is a Python package and project manager built in Rust. It handles Python version management, dependency resolution, environment reconciliation, and script execution through a single tool with a single pipeline.

Pyra uses pyproject.toml as the source of declared intent and pylock.toml as the source of realized install state. Environments are centralized, deterministic, and exactly reconciled from the lock.

The goal is a tool that feels simple, fast, and predictable — more like Bun than like the traditional fragmented Python tooling ecosystem.

Terminal window
curl -fsSL https://tlo3.com/pyra-install.sh | sh

The install script downloads the correct GitHub Release archive for your machine, verifies the published checksum, and installs pyra onto your PATH.

After that, keeping Pyra current is one command:

Terminal window
pyra self update

Managed Python

Install, pin, and manage Python versions from python-build-standalone. No system Python required.

Deterministic sync

One pipeline: read inputs → check freshness → resolve → lock → reconcile. Every sync produces an exact environment.

Standards-first

pyproject.toml for project metadata. PEP 751-shaped pylock.toml. PEP 508 requirements. PEP 440 versions.

Centralized environments

Environments live outside the project tree. Clean checkouts. Stable identity. No .venv to manage.

Terminal window
pyra python install 3.13
pyra init --python 3.13
pyra add requests
pyra sync
pyra run main.py
  • Python management — install, list, search, uninstall, and pin Python versions
  • Project initialization — scaffold pyproject.toml and pylock.toml
  • Dependency management — add, remove, and update dependencies across base, groups, and extras
  • Lock lifecycle — generate, refresh, and validate pylock.toml
  • Environment sync — exact reconciliation from lock to centralized environment
  • Execution — run scripts and commands through the synchronized environment
  • Diagnosticsdoctor for health checks, outdated for upgrade reporting
  • Machine-readable output--json envelope for CI and automation

Pyra is in active development. Honest summary of the current state:

  • Lock files target the current platform and interpreter only — not universal cross-platform locks
  • Resolution solves one union of all groups and extras, which can reject independently valid but mutually incompatible scopes
  • The installer uses pip behind a strict boundary (no-deps, no resolution)
  • add works but network operations can take 20+ seconds in some cases
  • Verbosity levels plateau after -v

See Status for the full verification matrix and Roadmap for what comes next.