Skip to main content

itqan-cli

Itqan Quranic Asset Manager

Install and pin Itqan Quranic assets (mushafs, tafsirs, translations, fonts) in your project, the way a package manager does for code.

You declare the assets you use and the versions you accept in itqan-assets.yaml. The CLI resolves them against the Itqan registry, downloads them, and records the exact versions in itqan-assets.lock, so teammates and CI get the same files.

Install

Requires Python 3.11+.

pipx install itqan-cli        # or: uv tool install itqan-cli

This installs the itqan command; itqan-cli is the same command under the package's name.

Homebrew

On macOS (Apple Silicon or Intel) and Linux, without Python:

brew install itqan-community/tap/itqan
brew upgrade itqan    # later, to update

npm

For JavaScript and React Native projects, without Python:

npx itqan-cli init
npx itqan-cli install

Or add it to your project and run itqan install from your package.json scripts:

npm install --save-dev itqan-cli

It runs the standalone binary for your platform (macOS, Linux with glibc, Windows), installed as an optional dependency, so don't install with --omit=optional.

Without Python

Each GitHub Release has a standalone itqan executable for macOS (arm64, x86_64), Linux (x86_64, arm64) and Windows (x86_64), named itqan-<version>-<os>-<arch> (.exe on Windows). Download yours, check it against SHA256SUMS and put it on your PATH as itqan. For example, on an Apple Silicon Mac:

v=0.2.0   # the release you want
curl -fLO "https://github.com/Itqan-community/itqan-cli/releases/download/v$v/itqan-$v-macos-arm64"
curl -fLO "https://github.com/Itqan-community/itqan-cli/releases/download/v$v/SHA256SUMS"
shasum -a 256 --check --ignore-missing SHA256SUMS
chmod +x "itqan-$v-macos-arm64"
sudo mv "itqan-$v-macos-arm64" /usr/local/bin/itqan

The binaries aren't notarized by Apple, so macOS blocks one downloaded with a browser. Clear the quarantine flag to allow it: xattr -d com.apple.quarantine /usr/local/bin/itqan. (curl doesn't set the flag.) On Linux, use sha256sum --check --ignore-missing SHA256SUMS.

Quick start

itqan init        # writes itqan-assets.yaml with a few real assets as examples
itqan browse      # search the catalog and add more assets to it
itqan install     # downloads them and writes itqan-assets.lock

Commit both itqan-assets.yaml and itqan-assets.lock. The downloaded files are reproducible from the lockfile, so add the assets folder to .gitignore if you like.

The manifest

schema_version: 1

# Folder the assets are downloaded into, relative to this file (default: assets).
assets_dir: "public/quran"

assets:
  # Source language of the asset.
  tafsir-jalalayn:
    version: "^2.0.0"     # any 2.x from 2.0.0 on

  # The same asset in English: its own entry, pointing at the asset.
  tafsir-jalalayn-en:
    asset: tafsir-jalalayn
    language: en
    version: "~1.3"       # any 1.3.x

Each language of an asset has its own version history, so each gets its own entry, constraint, lock entry and folder (public/quran/tafsir-jalalayn-en/). The full format is specified in ASSET_MANIFEST.md.

Commands

Command What it does
itqan init Create itqan-assets.yaml from the registry's catalog (commented examples when offline). --assets-dir, --force.
itqan browse [QUERY] Search the registry's catalog and pick assets to add to itqan-assets.yaml (created if missing), then optionally install them. Type in the picker to filter further. --category, --no-interactive (print a table; the default outside a terminal), --json.
itqan login Save your API key (create one at cms.itqan.dev/account/api-keys). The key is checked first, then saved for that registry, readable only by you. --api-key to pass it without the prompt.
itqan logout Remove the saved key.
itqan install Resolve, download and lock. Uses the lockfile's exact versions when it is up to date; --force re-resolves.
itqan sync Same as install.
itqan --version Print the CLI version.

Configuration

Option Environment variable Default
--registry-url ITQAN_REGISTRY_URL https://api.cms.itqan.dev
--api-key ITQAN_API_KEY the key saved by itqan login for the registry, if any

itqan login saves keys in ~/.config/itqan/credentials (%APPDATA%\itqan on Windows; set ITQAN_CONFIG_DIR to move it). --api-key and ITQAN_API_KEY, for CI, take precedence over it.

Assets that need access approval

Some publishers approve each developer before their assets can be downloaded. itqan browse lists these too, marked request access, access pending or access rejected, with a link to the asset's page on cms.itqan.dev where you request access. They can't be added until your request is approved; then run itqan login with your API key and they show as granted. itqan install says which assets in your manifest still need access, and where to ask.

Development

uv sync
uv run pytest
uv build
uv run --group binary pyinstaller --onefile --name itqan --copy-metadata itqan-cli --specpath build src/itqan_cli/__main__.py  # dist/itqan

Releases are published from version tags; see RELEASING.md.

Metadata

Release files for itqan-cli 0.1.2

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

Source distribution (sdist)

Source distribution for itqan-cli 0.1.2
File Size Uploaded
itqan_cli-0.1.2.tar.gz 47.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for itqan-cli 0.1.2
File Interpreter ABI Platform
itqan_cli-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 82.7 kB

Release files / itqan_cli-0.1.2.tar.gz

Download URL itqan_cli-0.1.2.tar.gz
Size 47.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d9cede7711cd57e207db694e325da09a2a236d418986bcd056a09ae2afbc9b84
BLAKE2b-256 checksum
How to use checksums
451212fdedb9d70e14fc000af28ab35f671b9f06bd3c54b76d6821210010815b
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 Oct 11, 2026.

Transparency log

Release files / itqan_cli-0.1.2-py3-none-any.whl

Download URL itqan_cli-0.1.2-py3-none-any.whl
Size 34.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53c79a7db15c161f79ad9725334c394924cb6f0ac73d4505ba2f1cb90bc49dbb
BLAKE2b-256 checksum
How to use checksums
af819cd07b7d949a875ee5c8320ba44637f3427b8c808af541e9c742e3e00b4a
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 Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

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