Skip to main content

ToolR - AI Generated Logo

In-project CLI tooling, with a Rust front-end.

Pronounced /ˈtuːlər/ (tool-er)

ToolR is a Python task runner that boots in milliseconds because the front-end is a Rust binary. Python only runs when you invoke a command, inside a per-repo uv-managed venv.

Tool runner -h steady-state First run Second run
toolr 10.4 ms 277.0 ms 21.8 ms
doit 83.4 ms 143.0 ms 88.9 ms
invoke 84.6 ms 101.7 ms 77.4 ms
nox 91.8 ms 395.9 ms 115.3 ms
duty 166.4 ms 188.5 ms 252.4 ms
python-tools-scripts 252.2 ms 340.3 ms 189.0 ms

<tool> -h, 20 runs, steady-state = mean of last 18. Measured on Apple M3 Pro / macOS 26.5 / arm64. Reproduce locally with python3 scripts/bench.py (stdlib-only; emits the table above to stdout).

Why ToolR

  • Sub-millisecond discovery. The CLI is a Rust binary. --help and Tab completion read a cached static manifest; Python never boots for non-execute paths.
  • No system-Python dependency. Toolr resolves a per-repo Python venv via uv on first invocation. The host OS doesn't need Python at all to install toolr — it's a single static binary.
  • Write Python, not framework boilerplate. Drop a tools/*.py file with a command_group and a @command decorator. Type hints become CLI arguments; Google-style docstrings become --help text.
  • First-class third-party command packages. Plugins ship a static toolr-manifest.json inside the wheel. Discovery is a glob + JSON parse; no Python import to find them.
  • Signed releases. Every release archive ships with a SLSA build-provenance attestation. The install scripts verify it by default (requires the gh CLI); pass --verify-attestation=skip to bypass, accepting the supply-chain risk.

Two wheels, two roles

Package What it is Where it lives
toolr The Rust CLI binary you run from the shell. On $PATH, installed once.
toolr-py The Python runtime your tools/*.py import. In your tools/pyproject.toml.

Most projects want both: the CLI installed globally, toolr-py declared in the per-repo tools/pyproject.toml so from toolr import Context, command_group works when your commands run.

Install

Five first-class install paths.

mise

mise use aqua:s0undt3ch/ToolR@latest

Pulls toolr from the aqua registry via mise's built-in aqua backend — no plugin to register. For projects that already pin tool versions via .mise.toml, toolr's version becomes part of your project's reproducible tool set. See docs/installation/mise/.

pip

pip install toolr   # Rust CLI binary

This installs the toolr binary into whatever venv pip is pointing at. Do not pip install toolr-py into that same venv — toolr-py is the Python runtime your tools/*.py files import, and it belongs in the per-repo tools venv that toolr project init scaffolds for you (where it's declared in tools/pyproject.toml and materialised via uv sync). See "Two wheels, two roles" above for the split.

curl | sh (Linux + macOS)

curl -fsSL https://raw.githubusercontent.com/s0undt3ch/ToolR/main/installation/install.sh | sh

Verifies the SLSA attestation by default (requires the gh CLI; pass --verify-attestation=skip to bypass). Pin a version with sh -s -- --version X.Y.Z. Custom prefix: sh -s -- --prefix /opt/toolr/bin.

PowerShell (Windows)

irm https://raw.githubusercontent.com/s0undt3ch/ToolR/main/installation/install.ps1 | iex

GitHub release archives

Download toolr-<version>-<target-triple>.tar.gz (or .zip for Windows) from https://github.com/s0undt3ch/ToolR/releases, verify the .sha256 sibling and the SLSA attestation, drop the binary on $PATH. Useful in locked-down environments that audit binaries before allowing them on a machine.

Scaffold your repo

After the binary is on $PATH:

toolr project init                  # writes tools/{pyproject.toml,.gitignore,example.py}
toolr example hello                 # run the generated example
toolr self completion install bash  # or zsh / fish

The full install matrix (per-OS notes, attestation flags, prefix overrides) lives in docs/installation/.

What you write

# tools/example.py
"""Example commands."""
from toolr import Context, command_group

example = command_group("example", title="Example", description=__doc__)


@example.command
def hello(ctx: Context, name: str = "world") -> None:
    """Say hello to <name>.

    Args:
        name: who to greet.
    """
    ctx.print(f"Hello, {name}!")
$ toolr example hello --name Pedro
Hello, Pedro!

toolr project init writes a richer four-command starter than this two-liner — open it and edit, or delete it and start from scratch.

Where to go next

Project status

ToolR is pre-1.0. The on-disk manifest is versioned (schema_version in tools/.toolr-manifest.json); the binary refuses to load a higher version than it understands. The public Python surface is toolr.__all__; anything not listed there is implementation detail. Backwards-incompatible changes will be explicit in the changelog (generated by git-cliff on release).

Contributing

See CONTRIBUTING.md.

License

Apache-2.0.

Release files for toolr-py 0.29.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for toolr-py 0.29.0
File Size Uploaded
toolr_py-0.29.0.tar.gz 244.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for toolr-py 0.29.0
File
toolr_py-0.29.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
toolr_py-0.29.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
toolr_py-0.29.0-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details
toolr_py-0.29.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
toolr_py-0.29.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
toolr_py-0.29.0-cp311-abi3-macosx_11_0_x86_64.whl CPython 3.11 abi3 macOS 11.0+ x86-64 Details
toolr_py-0.29.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details

Total release size: 4.6 MB

Release files / toolr_py-0.29.0.tar.gz

Download URL toolr_py-0.29.0.tar.gz
Size 244.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4a21c8f0780d04023791d2139e5595d8c6ccdd2d56456da2847d1706a9a45903
BLAKE2b-256 checksum
How to use checksums
ca69b9291e9b86a20f50505445f9ae7729705cdaa37305e6fc127f077f42b74b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-win_amd64.whl

Download URL toolr_py-0.29.0-cp311-abi3-win_amd64.whl
Size 987.6 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
fc0a4e3a7f750fb6749cbdbc495f8ba4a863fc006108cd59a627e918aa1e741a
BLAKE2b-256 checksum
How to use checksums
c513af26dd3c9de258223d4d65b714599605a210158cd4090cc781659751acb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL toolr_py-0.29.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 481.4 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
58044ac51bb8865e4116358c1bfc28bbd0654fbbf2a3710652819f95bfc13f13
BLAKE2b-256 checksum
How to use checksums
26ea9d990ead45717667988a6dbdd90008895108c61f94ffa1f9de12fde4e6cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL toolr_py-0.29.0-cp311-abi3-musllinux_1_2_aarch64.whl
Size 452.7 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
6908204d6e0d48c792ba12072e6d8e3b719e99a9317ffabdddac9a5bf12d746e
BLAKE2b-256 checksum
How to use checksums
7671b6d5cf527896157b3bbb1a7c4f3ea415dadba9b059dfa94694deb89b2047
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL toolr_py-0.29.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 542.2 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
7fbe6bdd1c7f75559920a776950ee54c94864def628d5e04fb083f153fbcab6f
BLAKE2b-256 checksum
How to use checksums
25e8bafdeeafd354641af84e50d57a3f2c030e013164497f0aa303652e476513
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL toolr_py-0.29.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 387.5 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
5feb8845404ff7abf70d69d626e659bd96d8fa1a2e0867e741adb0f58038e2c8
BLAKE2b-256 checksum
How to use checksums
92c407568a3fb0f7291b29fc08e332b6be43046c3d1dba295dec140461f0345f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-macosx_11_0_x86_64.whl

Download URL toolr_py-0.29.0-cp311-abi3-macosx_11_0_x86_64.whl
Size 796.9 kB
Tags CPython 3.11 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
6c8fb44aef0c21407fc09460d4f3369f22f33cee077dd67355c8eba43e47a07b
BLAKE2b-256 checksum
How to use checksums
cb26273ef869118da6b016e18eb26190c9a73224e5ba80e1380e4f4e1f0dc9d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / toolr_py-0.29.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL toolr_py-0.29.0-cp311-abi3-macosx_11_0_arm64.whl
Size 678.2 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
66854d09f9662d63a049eef922df93c66f3d63c0f3a39ce921eb0f0de3c8d700
BLAKE2b-256 checksum
How to use checksums
f12edb7c94a862a8476db85d806fed64f2622b0a0525ce9e5453eca6af1be1e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page