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.3

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.3
File Size Uploaded
itqan_cli-0.1.3.tar.gz 47.8 kB Details

Built distribution (wheel)

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

Total release size: 82.7 kB

Release files / itqan_cli-0.1.3.tar.gz

Download URL itqan_cli-0.1.3.tar.gz
Size 47.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c57f60b70347411115b3441640b8a47a9f62b856c01bec7288d36ed50948e14c
BLAKE2b-256 checksum
How to use checksums
a4536feb8a907a8af00a28e5713df37517d9c2c1fdb6cd398e5b67c0fcabc71d
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.3-py3-none-any.whl

Download URL itqan_cli-0.1.3-py3-none-any.whl
Size 34.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f71b3b5d393e3a7a15daa87f528c89c4e855f30febda11f2e5215462796ccd2c
BLAKE2b-256 checksum
How to use checksums
cfc56065c410339c85123df492029267c1e41f8c4dc204cd5c9930fd0b0f2331
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

This release

0.1.3 This release

2 release files

0.1.2

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