{"id":13469520,"url":"https://github.com/pkgxdev/pkgx","last_synced_at":"2026-04-02T15:38:53.450Z","repository":{"id":62687925,"uuid":"430183021","full_name":"pkgxdev/pkgx","owner":"pkgxdev","description":"Run Anything","archived":false,"fork":false,"pushed_at":"2026-03-28T01:09:18.000Z","size":2031,"stargazers_count":9722,"open_issues_count":28,"forks_count":1382,"subscribers_count":74,"default_branch":"main","last_synced_at":"2026-03-28T02:08:04.655Z","etag":null,"topics":["environment-manager","package-manager","package-runner"],"latest_commit_sha":null,"homepage":"https://pkgx.sh","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pkgxdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2021-11-20T18:44:53.000Z","updated_at":"2026-03-28T00:58:05.000Z","dependencies_parsed_at":"2022-11-04T13:17:59.627Z","dependency_job_id":"bdc8ed43-af01-44af-b4aa-c29bb89cb278","html_url":"https://github.com/pkgxdev/pkgx","commit_stats":{"total_commits":968,"total_committers":55,"mean_commits":17.6,"dds":"0.22107438016528924","last_synced_commit":"f28d9311eac07c0dd0b4c3900eab2420199b6604"},"previous_names":["teaxyz/cli"],"tags_count":275,"template":false,"template_full_name":null,"purl":"pkg:github/pkgxdev/pkgx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgxdev%2Fpkgx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgxdev%2Fpkgx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgxdev%2Fpkgx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgxdev%2Fpkgx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pkgxdev","download_url":"https://codeload.github.com/pkgxdev/pkgx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgxdev%2Fpkgx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31309145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["environment-manager","package-manager","package-runner"],"created_at":"2024-07-31T15:01:43.453Z","updated_at":"2026-04-02T15:38:53.436Z","avatar_url":"https://github.com/pkgxdev.png","language":"Rust","readme":"![pkgx.dev](https://pkgx.dev/banner.png)\n\n`pkgx` is a 4 MiB, standalone binary that can _run anything_.\n\n[![coverage][]][coveralls] [![teaRank][]](https://tea.xyz)\n\n\u003e [!NOTE]\n\u003e\n\u003e You want your tools to _just work_ and we want that too. We pride ourselves\n\u003e on packaging things as well as possible because we want you to change the\n\u003e world with what you build and not have to worry about the rest.\n\n\u0026nbsp;\n\n### Quickstart\n\n```sh\nbrew install pkgx || curl https://pkgx.sh | sh\n```\n\n```pwsh\n# Windows 10+\nirm https://pkgx.sh | iex\n# ^^ we only have limited packages so far\n```\n\n\u003e [docs.pkgx.sh/installing-w/out-brew]\n\n\u0026nbsp;\n\n# Run Anything\n\n```sh\n$ deno\ncommand not found: deno\n\n$ pkgx deno\nDeno 2.1.4\n\u003e ^D\n\n$ deno\ncommand not found: deno\n# ^^ nothing was installed; your wider system is untouched\n```\n\n## Run _Any Version_ of Anything\n\n```sh\n$ pkgx node@14 --version\nNode.js v14.21.3\n\n$ pkgx python@2 --version\nPython 2.7.18\n```\n\n## Run Anywhere\n\n\u003cdetails\u003e\u003csummary\u003emacOS\u003c/summary\u003e\u003cbr\u003e\n\n- macOS \u003e= 11\n- 64 bit Intel \u0026 Apple Silicon\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eLinux\u003c/summary\u003e\u003cbr\u003e\n\n- glibc \u003e=2.28 [repology](https://repology.org/project/glibc/versions)\n- libgcc\n- `x86_64` \u0026 `arm64`\n\n\u003e Specifically these libs are needed:\n\u003e\n\u003e - libatomic.so.1 (provided by libgcc)\n\u003e - libdl.so.2 (provided by glibc)\n\u003e - libm.so.6 (provided by glibc)\n\u003e - libgcc_s.so.1 (provided by libgcc)\n\u003e - libpthread.so.0 (provided by glibc)\n\u003e - libc.so.6 (this _is_ glibc)\n\u003e - ld-linux-x86-64.so.2 (provided by the kernel, you get this for free)\n\u003e\n\u003e `libgcc` is built as part of the GCC distribution and usually is split out\n\u003e into multiple packages by the linux distribution. `libgcc` is almost always\n\u003e a separate package, but you may need to install `gcc` in its entirety.\n\u003e Sometimes libatomic is also a separate package rather than being part of\n\u003e `gcc` or `libgcc`.\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eWindows\u003c/summary\u003e\u003cbr\u003e\n\n- Experimental Windows native support (limited packages)\n- WSL2 (everything Linux supports)\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eDocker\u003c/summary\u003e\u003cbr\u003e\n\nWe provide an image with `pkgx` in it:\n\n```sh\n$ pkgx docker run -it pkgxdev/pkgx\n\n(docker) $ pkgx node@16\nWelcome to Node.js v16.20.1.\nType \".help\" for more information.\n\u003e\n```\n\nYou can use this image to try out (pretty much) any version of any program:\n\n```sh\n$ docker run pkgxdev/pkgx node@21.1 --version\nv21.1.0\n```\n\nOr in a `Dockerfile`:\n\n```Dockerfile\nFROM pkgxdev/pkgx\nRUN pkgx deno@1.35 task start\n```\n\nOr in any image:\n\n```Dockerfile\nFROM ubuntu\nRUN curl https://pkgx.sh | sh\nRUN pkgx python@3.10 -m http.server 8000\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eCI/CD\u003c/summary\u003e\u003cbr\u003e\n\n```yaml\n- uses: pkgxdev/setup@v4\n- run: pkgx shellcheck\n```\n\nOr in other CI/CD providers:\n\n```sh\ncurl https://pkgx.sh | sh\npkgx shellcheck\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eScripts\u003c/summary\u003e\u003cbr\u003e\n\n```sh\n#!/usr/bin/env -S pkgx +git python@3.12\n\n# python 3.12 runs the script and `git` is available during its execution\n```\n\n\u003e [docs.pkgx.sh/scripts]\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eEditors\u003c/summary\u003e\u003cbr\u003e\n\nUse [`dev`][dev]; a separate tool that uses the pkgx primitives to\nautomatically determine and utilize your dependencies based on your project’s\nkeyfiles.\n\n```sh\n$ cd myproj\n\nmyproj $ dev\n+cargo +rust\n\nmyproj $ code .\n```\n\n\u003c/details\u003e\n\n## What Can `pkgx` Run?\n\nWe have a web based package listing at\n[pkgx.dev/pkgs](https://pkgx.dev/pkgs/).\n\nFrom the CLI you can use query mode:\n\n```sh\n$ pkgx -Q git\n# ^^ can you run git? (outputs the fully qualified project name)\n\n$ pkgx -Q\n# ^^ list everything that could be run\n\n$ pkgx -Q | grep git-\n# ^^ what git extensions does pkgx provide?\n```\n\n\u0026nbsp;\n\n# The `pkgx` Ecosystem\n\n`pkgx` is not just a package runner, it’s a composable primitive that can be\nused to build a whole ecosystem of tools.\n\n## `dev`\n\n`dev` uses `pkgx` and `pkgm` (or shellcode) to create “virtual environments”\nconsisting of the specific versions of tools and their dependencies you need\nfor your projects.\n\n```sh\n$ cd my-rust-proj \u0026\u0026 ls\nCargo.toml  src/\n\nmy-rust-proj $ cargo build\ncommand not found: cargo\n\nmy-rust-proj $ dev\n+rust +cargo\n\nmy-rust-proj $ cargo build\nCompiling my-rust-proj v0.1.0\n#…\n```\n\n\u003e [github.com/pkgxdev/dev][dev]\n\n## `pkgm`\n\n`pkgm` installs `pkgx` packages to `/usr/local`. It installs alongside `pkgx`.\n\n\u003e [github.com/pkgxdev/pkgm][pkgm]\n\n## Scripting\n\nA powerful use of `pkgx` is scripting, eg. here’s a script to release new\nversions to GitHub:\n\n```sh\n#!/usr/bin/env -S pkgx +gum +gh +npx +git bash\u003e=4 -eo pipefail\n\ngum format \"# determining new version\"\n\nversions=\"$(git tag | grep '^v[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+')\"\nv_latest=\"$(npx -- semver --include-prerelease $versions | tail -n1)\"\nv_new=$(npx -- semver bump $v_latest --increment $1)\n\ngum format \"# releasing v$v_new\"\n\ngh release create \\\n  $v_new \\\n  --title \"$v_new Released 🎉\" \\\n  --generate-notes \\\n  --notes-start-tag=v$v_latest\n```\n\nAbove you can see how we “loaded” the shebang with `+pkg` syntax to bring in all\nthe tools we needed.\n\n\u003e We have pretty advanced versions of the above script, eg\n\u003e [teaBASE][teaBASE-release-script]\n\nThere’s tools for just about every language ecosystem so you can import\ndependencies. For example, here we use `uv` to run a python script with pypi\ndependencies, and pkgx to load both `uv` and a specific python version:\n\n```sh\n#!/usr/bin/env -S pkgx +python@3.11 uv run\n\n# /// script\n# dependencies = [\n#   \"requests\u003c3\",\n#   \"rich\",\n# ]\n# ///\n\nimport requests\nfrom rich.pretty import pprint\n\nresp = requests.get(\"https://peps.python.org/api/peps.json\")\ndata = resp.json()\npprint([(k, v[\"title\"]) for k, v in data.items()][:10])\n```\n\n\u003e [!TIP]\n\u003e\n\u003e ### Mash\n\u003e\n\u003e We love scripting with `pkgx` so much that we made a whole package manager for\n\u003e scripts to show the world what is possible when the whole open source\n\u003e ecosystem is available to your scripts Check it out [`mash`].\n\n\u003e [!NOTE]\n\u003e\n\u003e Notably, packages used during your script aren’t installed and don’t pollute\n\u003e your system and anyone else’s systems either. Don’t be confused— they are\n\u003e downloaded to `~/.pkgx` but the wider system is not touched.\n\n## `pkgo` (Package…GO!)\n\nSome Open Source resists packaging and instead includes long installation\ninstructions that can be… tedious. [`pkgo`] makes using amazing tools like\n[“Stable Diffusion WebUI”] as easy as typing `pkgo` (thanks to `pkgx`).\n\n## Recursive Run\n\nEasily run tools from other language ecosystems:\n\n```sh\npkgx uvx cowsay \"Run Python (PyPi) programs with `uvx`\"  # or pipx\npkgx bunx cowsay \"Run JavaScript (NPM) programs tools with `bunx`\"  # or `npx`\n```\n\n\u0026nbsp;\n\n# Further Reading\n\n[docs.pkgx.sh][docs] is a comprehensive manual and user guide for the `pkgx`\nsuite.\n\n\u0026nbsp;\n\n# Migrating from `pkgx`^1\n\n## Shellcode\n\nThe `pkgx` suite has had its scopes tightened. There is no shellcode in `pkgx`\nanymore. Instead [`dev`] is its own separate tool that has its own shellcode.\nMigrate your shell configuration with:\n\n```sh\npkgx pkgx^1 deintegrate\npkgx dev integrate\n```\n\n## `env +foo`\n\nIf you used this, let us know, we can make a mash script to provide this\nfunctionality again. You can achieve the same result as eg. `env +git` with:\n\n```sh\neval \"$(pkgx +git)\"\n```\n\nSurround the `eval` with `set -a` and `set +a` if you need the environment\nexported.\n\n## `pkgx install`\n\nWe now provide [`pkgm`][pkgm] which fully installs `pkgx` packages to\n`/usr/local/`.\n\nIf you miss the leanness of pkgx^1 “shims then use `pkgm shim`.\n\n```sh\n$ pkgm shim git\ncreated shim: ~/.local/bin/git\n\n$ cat ~/.local/bin/git\n#!/usr/bin/env -S pkgx -q! git\n```\n\n\u0026nbsp;\n\n# Contributing\n\nWe recommend using [`dev`] to make rust available.\n\n- To add packages see the [pantry README]\n- To hack on `pkgx` itself; clone it and `cargo build`\n  - [`hydrate.rs`] is where optimization efforts will bear most fruit\n\n## Pre-PR Linting\n\n```sh\ncargo fmt --all --check\ncargo clippy --all-features\npkgx npx markdownlint --config .github/markdownlint.yml --fix .\n```\n\n\u0026nbsp;\n\n# Chat / Support / Questions\n\nWe love a good chinwag.\n\n- [Discord](https://discord.gg/rNwNUY83XS)\n- [github.com/orgs/pkgxdev/discussions][discussions]\n\n[docs]: https://docs.pkgx.sh\n[pantry README]: ../../../pantry#contributing\n[discussions]: ../../discussions\n[docs.pkgx.sh/scripts]: https://docs.pkgx.sh/scripts\n[docs.pkgx.sh/installing-w/out-brew]: https://docs.pkgx.sh/installing-w/out-brew\n[dev]: https://github.com/pkgxdev/dev\n[pkgm]: https://github.com/pkgxdev/pkgm\n[teaBASE-release-script]: https://github.com/teaxyz/teaBASE/blob/main/Scripts/publish-release.sh\n[`hydrate.rs`]: crates/lib/src/hydrate.rs\n[`mash`]: https://github.com/pkgxdev/mash\n[`dev`]: https://github.com/pkgxdev/dev\n[`pkgo`]: https://github.com/pkgxdev/pkgo\n[“Stable Diffusion WebUI”]: https://github.com/AUTOMATIC1111/stable-diffusion-webui\n[coverage]: https://coveralls.io/repos/github/pkgxdev/pkgx/badge.svg?branch=main\n[coveralls]: https://coveralls.io/github/pkgxdev/pkgx?branch=main\n[teaRank]: https://img.shields.io/endpoint?url=https%3A%2F%2Fchai.tea.xyz%2Fv1%2FgetTeaRankBadge%3FprojectId%3D79e9363b-862c-43e0-841d-4d4eaad1fc95\n","funding_links":[],"categories":["Rust","Development","TypeScript","package-manager","Version Managers","\u003ca name=\"Rust\"\u003e\u003c/a\u003eRust"],"sub_categories":["VoIP","Generic"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgxdev%2Fpkgx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkgxdev%2Fpkgx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgxdev%2Fpkgx/lists"}