astral-sh/rye
a Hassle-Free Python Experience
Healthy across all four use cases
weakest axisPermissive license, no critical CVEs, actively maintained — safe to depend on.
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
No critical CVEs, sane security posture — runnable as-is.
- ✓Last commit 3mo ago
- ✓29+ active contributors
- ✓Distributed ownership (top contributor 39% of recent commits)
Show all 7 evidence items →Show less
- ✓MIT licensed
- ✓CI configured
- ✓Tests present
- ⚠Slowing — last commit 3mo ago
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Healthy" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/astral-sh/rye)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/astral-sh/rye on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: astral-sh/rye
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/astral-sh/rye shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
GO — Healthy across all four use cases
- Last commit 3mo ago
- 29+ active contributors
- Distributed ownership (top contributor 39% of recent commits)
- MIT licensed
- CI configured
- Tests present
- ⚠ Slowing — last commit 3mo ago
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live astral-sh/rye
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/astral-sh/rye.
What it runs against: a local clone of astral-sh/rye — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in astral-sh/rye | Confirms the artifact applies here, not a fork |
| 2 | License is still MIT | Catches relicense before you depend on it |
| 3 | Default branch main exists | Catches branch renames |
| 4 | Last commit ≤ 122 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of astral-sh/rye. If you don't
# have one yet, run these first:
#
# git clone https://github.com/astral-sh/rye.git
# cd rye
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of astral-sh/rye and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "astral-sh/rye(\\.git)?\\b" \\
&& ok "origin remote is astral-sh/rye" \\
|| miss "origin remote is not astral-sh/rye (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
&& ok "license is MIT" \\
|| miss "license drift — was MIT at generation time"
# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
&& ok "default branch main exists" \\
|| miss "default branch main no longer exists"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 122 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~92d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/astral-sh/rye"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
Rye is a unified Python project and package manager written primarily in Rust that provides automated Python installation (via Indygreg Python Builds and PyPy), dependency locking/resolution (via uv), linting/formatting (bundled ruff), virtualenv management, and workspace support for monorepos. It aims to be a single tool replacing pip, venv, and poetry for a complete Python developer experience. Monorepo structure via Cargo workspace (Cargo.toml) with rye/ as the primary member. Core logic written in Rust (~419KB) with Python test/utility scripts (~23KB). GitHub Actions workflows (docs, release, tests, clippy, rustfmt) drive CI/CD. Documentation in docs/ uses Markdown with Jinja templating. Build system orchestrated via Makefile.
👥Who it's for
Python developers of all levels who want a single, integrated toolchain for managing Python versions, project dependencies, and virtual environments without juggling multiple tools. Particularly useful for maintainers of complex projects, monorepos, and those installing global Python tools.
🌱Maturity & risk
Maintenance archived: The README states 'Rye is no longer developed' and explicitly recommends migrating to uv as the successor. While the codebase is well-structured with CI/CD pipelines (tests.yml, clippy.yml, rustfmt.yml) and a detailed changelog, no further updates including security patches are planned. Not recommended for new projects.
High risk for new adoption: The project is officially sunset with a migration guide to uv in place. No future security updates or bug fixes will be released. Existing users face technical debt if they don't migrate. The dependency on uv for locking means the successor tool is effectively mandatory for modern Python packaging.
Active areas of work
Project is in maintenance mode with no active development. The latest activity points to the sync-uv-releases.yml and sync-python-releases.yml workflows, indicating the team maintains Python/uv compatibility data but does not develop new Rye features. Users are directed to uv via the README and migration guide.
🚀Get running
git clone https://github.com/astral-sh/rye.git
cd rye
cargo build --release
./target/release/rye --version
Requires Rust toolchain (see Cargo.toml). For development, use make targets (see Makefile).
Daily commands:
Development: cargo build then ./target/debug/rye <command>. Run tests: cargo test (see tests.yml for CI test patterns). Check code quality: cargo clippy and cargo fmt. Documentation builds via docs/ with MkDocs (see docs.yml workflow).
🗺️Map of the codebase
- Cargo.toml: Root workspace configuration; defines Rust dependencies, version, and rye member crate
- Makefile: Build orchestration; primary entry point for development tasks (make test, make build, make docs)
- docs/guide/commands/index.md: Central documentation index for all Rye commands; maps to command implementations
- .github/workflows/release.yml: Defines release pipeline and binary distribution strategy; critical for understanding deployment
- .github/workflows/sync-uv-releases.yml: Automates uv version sync; shows how Rye tracks its primary dependency resolver
- README.md: Contains explicit sun-setting notice and migration guide; must-read before any development
🛠️How to make changes
CLI commands: src/cli/ (inferred from Cargo.toml structure; each command maps to subcommands like add, lock, fmt, lint documented in docs/guide/commands/). Python version management: likely in src/python/ for bootstrap logic. Dependency resolution: integrates uv; see references in source for uv invocation. Tests: Likely in tests/ directory (standard Rust pattern); Python format/lint tests in workflows (python-format.yml, python-lint.yml). Documentation: edit docs/guide/commands/*.md for command docs.
🪤Traps & gotchas
Critical: This project is officially unmaintained. Security vulnerabilities will not be patched. The .python-version file pins a specific Python version for development; ensure your local env matches or builds may fail. Workspace dependency on uv means certain features (locking, resolution) will silently degrade if uv is not available. CI uses both Rust (clippy, rustfmt) and Python (format, lint) quality gates; PRs must pass both. The docs/ directory uses Jinja templating (.includes/ for shared snippets); editing must respect includes or docs will break.
💡Concepts to learn
- Python Build Standalone — Understanding Rye's Python bootstrap mechanism requires knowledge of how pre-built Python binaries work and why Indygreg's builds are preferred over manual compilation
- Virtual Environments (venv) — Rye's core dependency isolation mechanism; understanding venv lifecycle and activation is essential to comprehend how Rye manages project isolation
- Dependency Lock Files (Lock Format) — Rye's lock file format (managed by uv) is critical to reproducible installs across environments; the format differs from pip-tools and Poetry
- Cargo Workspaces — Rye uses Cargo workspace feature for monorepo support; understanding this Rust pattern clarifies how Rye structures its own codebase and enables workspace features for users
- PEP 517 Build Backends — Rye's build command delegates to the build package which invokes PEP 517 backends; understanding this standard is key to how Rye packages Python projects
- Python pyproject.toml (PEP 621) — Rye's project configuration format; mastery of pyproject.toml structure is required to understand how Rye parses and manages project metadata
- Subprocess Process Management — Rye is a Rust CLI that orchestrates multiple Python subprocesses (uv, pip, build, twine); understanding process lifecycle and error handling is crucial for debugging Rye's behavior
🔗Related repos
astral-sh/uv— Direct successor to Rye; handles dependency resolution and locking; Rye delegates to this via subprocesspypa/pip— Foundational Python package installer; Rye abstracts over pip via virtualenv and uvpython-poetry/poetry— Alternative Python project manager with similar goals (deps, venv, packaging); Rye positions as simpler, more integrated alternativeindygreg/python-build-standalone— Source of Python binaries that Rye bootstraps; Rye's Python installation feature depends on this upstream projectastral-sh/ruff— Linting and formatting tool bundled in Rye; provides rye lint and rye fmt commands
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add missing documentation for rye toolchain subcommands
The file structure shows docs/guide/commands/toolchain/ exists with index.md, fetch.md, list.md, register.md, and remove.md, but there's no comprehensive overview or examples for toolchain management. Given that toolchain management is a core feature of Rye (Python version management), the documentation lacks practical examples for common workflows like registering custom toolchains, listing available versions, and switching between them. This is a high-value contribution since toolchain management directly impacts the user experience.
- [ ] Review docs/guide/commands/toolchain/index.md and identify gaps in the overview
- [ ] Add practical examples to docs/guide/commands/toolchain/register.md (e.g., registering a local Python build)
- [ ] Create a troubleshooting section or add common patterns to docs/guide/commands/toolchain/index.md for switching between toolchains
- [ ] Ensure cross-references between toolchain docs and the main pyproject.toml configuration guide
Add integration tests for rye tools subcommand workflows
The file structure shows docs/guide/commands/tools/ with install.md, list.md, uninstall.md and index.md, but there's no indication of comprehensive integration tests for the tools subcommand in the repository structure. Given that Rye's tool isolation feature is a key differentiator, integration tests validating end-to-end tool installation, dependency resolution, and removal workflows would catch regressions and ensure the feature works across platforms (the .github/workflows/tests.yml exists but likely doesn't have targeted tools tests).
- [ ] Examine .github/workflows/tests.yml to confirm current test coverage for
rye toolscommands - [ ] Create integration test suite covering:
rye tools install <package>,rye tools list,rye tools uninstall <package> - [ ] Add tests for edge cases: tool with conflicting dependencies, tool version pinning, tool updates
- [ ] Ensure tests run on multiple Python versions as defined in .python-version
Create migration guide from Rye to uv in the documentation
The README explicitly states that Rye is no longer developed and points users to use uv instead, with a link to a migration guide. However, the docs/ directory structure doesn't show a dedicated migration guide file. Creating docs/guide/uv-migration.md (or extending docs/changelog.md with a migration section) would provide in-repo guidance for users who need to transition their projects, reducing friction and support burden.
- [ ] Create docs/guide/uv-migration.md with sections for: dependency specification, lock file conversion, toolchain configuration
- [ ] Add command mapping table (e.g.,
rye add→uv pip install,rye sync→uv sync) - [ ] Include script/automation examples for bulk project migration
- [ ] Link migration guide from docs/guide/basics.md and README.md for discoverability
🌿Good first issues
- Add missing documentation for rye config subcommands in docs/guide/commands/config.md; currently lacks detail on all configuration options (inspect Cargo source for config enum variants and mirror in docs)
- Extend Python format/lint test coverage in .github/workflows/python-format.yml and python-lint.yml; currently only basic checks; add per-file checks for README.md, docs/, and scripts/
- Create a migration guide helper script (Python) in the repo root to parse old pip/venv/poetry configs and suggest Rye equivalents; useful for users following the uv migration path
⭐Top contributors
Click to expand
Top contributors
- @charliermarsh — 39 commits
- @github-actions[bot] — 32 commits
- @catwell — 2 commits
- @nazq — 2 commits
- @geofft — 1 commits
📝Recent commits
Click to expand
Recent commits
62ec9ed— Retire Rye and add a uv migration guide (#1476) (geofft)e213938— Attempt to build against Rust 1.84 (#1464) (charliermarsh)9773cf0— Upgrade toactions/upload-artifact@v4(#1463) (charliermarsh)0055175— Prep for v0.44.0 release (#1462) (charliermarsh)f9dff4b— Sync UV Releases (#1461) (github-actions[bot])89eab80— Sync Python Releases (#1450) (github-actions[bot])52aabbb— Update bundled uv version to v0.6.2 (#1445) (github-actions[bot])e090a08— Set Rust toolchain inrust-toolchain.toml(#1460) (charliermarsh)fa84cee— Bump bundled Ruff version to 0.9.6 (#1457) (catwell)e5d3225— Fix lint errors from Rust 1.85 (#1459) (charliermarsh)
🔒Security observations
The Rye project presents significant security concerns primarily due to its discontinued maintenance status with no planned security updates. This is a critical issue that affects all users and dependents. Additional concerns include incomplete dependency visibility for vulnerability assessment and missing security infrastructure documentation. Users should migrate to the maintained successor project 'uv' as recommended in the README. The low security score reflects the fundamental risk of using an unmaintained tool that will not receive security patches.
- Critical · Project Maintenance Discontinued - No Security Updates —
README.md, project status. According to the README, Rye is no longer developed and actively maintained. The maintainers explicitly state 'no further updates are planned, including security updates.' This means any security vulnerabilities discovered in Rye or its dependencies will not be patched, creating a significant long-term security risk for users. Fix: Migrate to the successor project 'uv' which is actively maintained by the same authors. Follow the official migration guide at https://rye.astral.sh/guide/uv/ - High · Incomplete Dependency Information —
Cargo.toml (rye workspace member dependencies). The Cargo.toml provided only shows workspace configuration but does not include the actual dependency list for the 'rye' member. Without visibility into specific dependency versions, it's impossible to assess if the project uses known vulnerable packages or outdated versions. Fix: Provide the complete Cargo.toml from the 'rye' directory to enable dependency vulnerability analysis. Implement automated dependency scanning using tools like 'cargo audit' and 'dependabot'. - Medium · Missing Security Headers in Documentation Site —
docs/ directory, website configuration. The docs structure includes a CNAME file suggesting a published documentation site at rye.astral.sh. No security configuration files (like .well-known/security.txt, security headers configuration) are visible in the provided structure. Fix: Implement security.txt file, add security headers (CSP, X-Frame-Options, X-Content-Type-Options), and configure HTTPS enforcement for the documentation website. - Medium · No Visible Security Policy —
Repository root. No SECURITY.md or security policy file is evident in the repository structure. Given the project's maintenance status, users may be unclear about how to report security vulnerabilities. Fix: Create a SECURITY.md file documenting the security policy, vulnerability disclosure process, and status of the unmaintained project. Include a clear statement about the lack of future security updates. - Low · Limited Visibility into Workflow Security —
.github/workflows/. While CI/CD workflows are present (.github/workflows/), the specific content and security configurations of these workflows cannot be assessed from the file structure alone. Workflows may have overly permissive permissions or insecure practices. Fix: Review all workflow files for: least privilege access patterns, secret management, branch protection rules, code signing, and dependency verification. Implement OIDC token exchange instead of long-lived credentials where possible.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.