Skip to main content
Cirax

PyPI Platform No network MIT License CI

The universal converter for people who read the privacy policy.
Don't upload. Convert.

Cirax convert page

The convert page: drop files, and the target list is built from what they actually are — each entry shows the engine chain and its loss tag.


Cirax turns your Linux machine into a conversion hub. One command reaches every format — not because Cirax reimplements codecs, but because it routes between the best engines ever written (FFmpeg, libvips, ImageMagick, LibreOffice, Pandoc, Calibre, 7-Zip, qpdf…) and chains them automatically. Files never leave your disk. Ever.

The Problem

  1. Every online converter is a data breach waiting to happen. Your contracts, IDs, medical scans and family photos, uploaded to an anonymous ad-riddled server.
  2. Local tools are islands. ffmpeg alone has a 40-page manual; LibreOffice won't talk to ImageMagick; your HEIC stays HEIC.
  3. Format-pair explosions. 109 formats × 109 formats = 11,881 possible converters. Nobody writes those.

The Product

$ # what used to require three websites and a leap of faith:
$ cirax convert report.docx preview.png
● converting report.docx: application/vnd...document → image/png
  (libreoffice → pdftoppm, lossy)

$ # speech to subtitles, offline:
$ cirax convert talk.mp3 talk.srt

$ # AI-grade OCR — a 1.3B-parameter vision model, fully local:
$ cirax convert scan.png text.txt

Core Features

  • Chain router — a Dijkstra search over a 109-format graph picks the best chain of engines for any pair, ranked by fidelity (lossless beats lossy) and tagged before it runs.
  • 58 engines, one grammar — a declarative YAML registry wraps each engine; adding a format is a stanza, not a pull request.
  • Sandboxed by default — every job runs in a bubblewrap jail: no network, read-only filesystem, writes confined to the workspace.
  • Local AI OCRGLM-OCR (MIT, ~1.3B params) via Ollama: layout-aware text + Markdown, zero cloud.
  • Same-format ops — strip EXIF/GPS, fix line endings, transcode charsets.
  • Watch & serve — convert folders as files land in them, or drive it from a local web UI / plain curl.

Quick Start

Installation

Channel Command
PyPI uv tool install cirax (or pipx install cirax)
curl curl -fsSL https://raw.githubusercontent.com/baselanaya/Cirax/main/install.sh | sh
npm npm i -g @baselanaya/cirax
Windows Cirax-Setup-win64.exe from Releases (desktop app + CLI). Engines: cirax doctor --show-missing prints scoop/winget commands; extra engines in scoop bucket add cirax https://github.com/baselanaya/Cirax
Desktop (Linux) grab the .deb / .rpm / .AppImage from Releases

Cirax itself is tiny — the engines are your system packages. cirax doctor --show-missing prints exactly what to install.

First conversion

cirax doctor              # capability matrix of this machine
cirax plan report.docx    # every reachable target, with routes
cirax convert report.docx preview.png

Desktop app

Drag, drop, convert. The GUI speaks to the same sandboxed pipeline as the CLI and ships in every release artifact.

Engine installation

Domain pacman packages
Images libvips imagemagick libheif libjxl libavif libwebp oxipng pngquant
Video / Audio ffmpeg mkvtoolnix-cli sox opus-tools gifsicle
Office libreoffice-still pandoc
Ebooks calibre
PDF qpdf ghostscript poppler img2pdf ocrmypdf
Archives 7zip zstd unar libisoburn
Data jq go-yq miller duckdb
RAW / Vector darktable inkscape librsvg potrace
3D / Disks / GIS assimp qemu-img gdal
AI ollama + ollama pull glm-ocr

Architecture

flowchart LR
    A[CLI / GUI / Web / Watch] --> B[Job Engine]
    B --> C{Router}
    C --> D[Engine Registry YAML]
    C --> E[Engine 1]
    C --> F[Engine 2]
    C --> G[Engine n]
    E --> H[(bwrap jail)]
    F --> H
    G --> H
    H --> I[Output]

The complete machine-readable format map lives at docs/FORMATS.md (auto-generated from the registry).

Inputs are detected with file(1) + an extension table; the router searches the capability graph up to three hops through pivot formats (PDF, PNG, WAV, JSON…); a job engine runs the chain inside a sandbox with per-engine concurrency, progress parsing and guaranteed cleanup.

Cirax vs. Online Converters

Online converters Cirax
Your files uploaded to someone's server never leave the disk
Format pairs a hand-picked menu the closure of 58 engines (chains)
Fidelity whatever it feels like tagged lossless/lossy before running
OCR / AI extra fee, extra upload GLM-OCR locally, after one ollama pull
Works offline no completely
Sandboxing n/a bubblewrap, no network, per job

Supported Platforms

Platform Status Notes
Linux x86_64 (Arch, Ubuntu, Fedora…) ✅ supported engines via your package manager
AppImage / deb / rpm ✅ released desktop app + CLI in every release
Windows / macOS ❌ not yet engine discovery needs porting

Contributing

Fork → branch (feat/…) → PR. Adding a conversion engine is a YAML stanza — see README section on engines in the docs and the existing specs under src/cirax/data/engines/.

Adding an Engine

Drop a YAML stanza in src/cirax/data/engines/ — inputs, outputs, a command template, optional per-format flags and presets — and the router picks it up. No code.

- engine: mycodec
  binary: mycodec
  package: mycodec
  presets:
    web: {flags: {image/myfmt: "-q 70"}}
  routes:
    - from: [image/png]
      to: [image/myfmt]
      lossless: true
      priority: 90
      command: "mycodec encode {input} {flags} {output}"

Built by Basel Anaya — Maximlabs.co

Don't upload. Convert.

Download files

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

Source Distribution

cirax-0.8.1.tar.gz (15.0 MB view details)

Uploaded Source

Built Distribution

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

cirax-0.8.1-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

Details for the file cirax-0.8.1.tar.gz.

File metadata

  • Download URL: cirax-0.8.1.tar.gz
  • Upload date:
  • Size: 15.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cirax-0.8.1.tar.gz
Algorithm Hash digest
SHA256 da99b3b44d43c3934d4e8548ae1a73f381001e7eea2542cafe7349ae043e9719
MD5 790d4f9e79c0e233324ab12b7d02408a
BLAKE2b-256 c2c0eeb480468568fe28dd40b7ea09ee1fb6a2957c3523c337d14ed7342045f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cirax-0.8.1.tar.gz:

Publisher: publish.yml on baselanaya/Cirax

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

File details

Details for the file cirax-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: cirax-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 48.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cirax-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3aeb03abfa010f5178cd4b128b36efdb320b403af4caeb70345f0d5caea3c3f2
MD5 7642040e94734eb213ec576b349d0cc2
BLAKE2b-256 94ba7dd81445c47c04d6792e473bbfdf4f7e86f67541c225357954717c4581e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cirax-0.8.1-py3-none-any.whl:

Publisher: publish.yml on baselanaya/Cirax

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

Release history Release notifications | RSS feed

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.2

2 files

This release

0.8.1 This release

2 files

0.7.0

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 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