Skip to main content

A lightweight archive downloader for pre-built binary dependencies.

Project description

Poks

CI Status Test coverage percentage

uv Ruff pypeline pre-commit

PyPI Version Supported Python versions License


Source Code: https://github.com/cuinixam/poks


A lightweight, cross-platform archive downloader for pre-built binary dependencies. Inspired by Scoop, Poks provides a uniform way to install and manage developer tools using simple JSON manifests.

While Poks includes a CLI, its main purpose is to be used programmatically to manage dependencies in your Python projects and automation scripts.

Features

  • Programmatic API: First-class Python support for integrating into your tools
  • Cross-Platform: Works on Windows, Linux, and macOS
  • No Admin Rights: Installs tools in user space
  • Deterministic: Pin exact versions in manifests for reproducible builds
  • Relocatable: The apps directory is self-contained and portable

Installation

pip install poks

For CLI-only usage:

pipx install poks

Concepts

  • App: A tool or dependency you want to install (e.g., CMake, a compiler toolchain). Each app has a name and one or more versions.
  • Manifest: A JSON file that describes an app — its download URLs, checksums, and platform-specific archives. One manifest per app (e.g., cmake.json). See examples/cmake.json.
  • Bucket: A git repository containing a collection of manifests. Buckets are how manifests are shared and distributed.
  • Config file: A JSON file (poks.json) that ties it all together — it lists which buckets to use and which apps (with versions) to install from them. See examples/poks.json.

Installing apps

From a config file

Use a config file when you want to define a reproducible set of tools for a project. The config references one or more buckets and lists the apps to install from them.

poks install --config poks.json

From a bucket

Install a single app directly, without a config file. Poks looks up the app's manifest in the specified bucket.

poks install --app cmake --version 3.28.1 --bucket main
poks install --app cmake --version 3.28.1 --bucket https://github.com/poks/main-bucket.git
poks install --app cmake --version 3.28.1   # searches all local buckets

From a manifest file

Install directly from a local manifest file — no bucket needed. Useful for testing a manifest before publishing it to a bucket. The app name is derived from the filename.

poks install --manifest cmake.json --version 4.2.3

Other commands

poks uninstall cmake@3.28.1       # specific version
poks uninstall cmake              # all versions
poks uninstall --all              # everything
poks search cmake                 # search across local buckets
poks list                         # list installed apps

Python API

Poks is designed to be used programmatically. See examples/ for complete scripts.

from pathlib import Path
from poks.poks import Poks

poks = Poks(root_dir=Path.home() / ".poks")

poks.install(Path("poks.json"))                              # from config file
poks.install_app("cmake", "3.28.1", bucket="main")           # from bucket
poks.install_from_manifest(Path("cmake.json"), "3.28.1")     # from manifest file

Manifest format

For the manifest schema and detailed specifications, see docs/specs.md.

Contributing

This project uses pypeline for build automation and uv for dependency management.

# Install pypeline
uv tool install pypeline-runner

# Run full pipeline (lint + tests)
pypeline run

For AI agents, see AGENTS.md.

Credits

Copier

This package was created with Copier and the browniebroke/pypackage-template project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poks-0.5.0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

poks-0.5.0-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file poks-0.5.0.tar.gz.

File metadata

  • Download URL: poks-0.5.0.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for poks-0.5.0.tar.gz
Algorithm Hash digest
SHA256 88e9db2ec7aa9f9b37a581426caaf5974d5d0e957d31ad10911b85ec183c9ff1
MD5 da29e5eff2ef602468330f1e3f1d9754
BLAKE2b-256 4a11b22e0155334dd7df7501196c051b3a95b5030043b92c1255e03e843be433

See more details on using hashes here.

Provenance

The following attestation bundles were made for poks-0.5.0.tar.gz:

Publisher: ci.yml on cuinixam/poks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file poks-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: poks-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 22.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for poks-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d30e2f83aeced9e2be14920c936c409ab8398c135278e1281bb862580b52a26
MD5 217fe18d566bfbb32e80b263e068eb12
BLAKE2b-256 1a57284271f9589b5300bd10bf01095b9c46b6885d635e23abe9e3f40be1562d

See more details on using hashes here.

Provenance

The following attestation bundles were made for poks-0.5.0-py3-none-any.whl:

Publisher: ci.yml on cuinixam/poks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page