Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

DocMax

A document toolkit that lives in your terminal. Merge, split, OCR, compress, convert, redact — locally, privately, with no server to run and no browser tab to open.

pip install DocmaxV3
docmax merge a.pdf b.pdf -o combined.pdf

Status: early development (M0). The architecture and safety mechanisms are in place; the tools are being rebuilt on top of them one at a time. For a working tool today, use docmax 2.x. See the roadmap for what lands when.


Why another PDF tool

The good self-hosted options — Stirling PDF and friends — are excellent, and they all assume a browser. That means Docker, a running server, a port, and no sensible way to use them over SSH or from a script.

DocMax assumes a terminal instead.

DocMax Self-hosted web tools
Install pip install DocmaxV3 Docker + a container
Interface CLI and TUI browser
Over SSH works needs port forwarding
Scripting argv HTTP against a running server
Your documents stay on your machine stay on your machine

Two engines, one interface

Every operation can run two ways, and the choice is yours per tool:

  • Local — offline and private. Needs the relevant dependencies installed.
  • Cloud — no local install at all. For the handful of tools whose dependencies are genuinely painful.
docmax ocr scan.pdf                     # picks whichever is available
docmax ocr scan.pdf --engine local      # force local
docmax ocr scan.pdf --engine cloud      # skip installing Tesseract

Cloud exists for exactly one reason — to let you use a tool without installing its heavy dependencies. Only five tools have it (ocr, compress, convert, pdfa, remove-bg), because for a pure-Python operation like merge, uploading your document would be slower, less private, and pointless.

Nothing is ever uploaded without asking. Consent is per-tool and remembered; offline = true in your config disables cloud entirely regardless of flags; and every upload tells you what it is sending before it sends it. The cloud endpoint is configurable, so you can point DocMax at your own server instead.

Your files are safe

This is the part most tools get wrong, so it is worth being specific.

  • Atomic writes. Output goes to a temp file, gets validated, and is only then swapped into place. A crash or Ctrl-C mid-operation leaves your destination either untouched or absent — never half-written.
  • Your input is never the output. docmax merge a.pdf b.pdf -o a.pdf is refused, not silently obeyed.
  • Nothing is overwritten by accident. Existing files need --force.
  • No tracebacks. Every anticipated failure gives you a plain message and the next step to take.

These are enforced by tests that run on every commit across Linux, macOS, and Windows — not by good intentions. See architecture.md.

Install

pip install DocmaxV3              # the shell and the cloud client
pip install "DocmaxV3[ocr]"       # local OCR
pip install "DocmaxV3[all]"       # everything

The base install is deliberately small. Heavy dependencies arrive only when you first ask for a local engine that needs them.

Some local engines also need external programs (Ghostscript, Tesseract, Pandoc, Poppler):

docmax doctor                     # what's installed, what's missing, what needs it

Roadmap

M0 Foundation — architecture, CI, safety mechanisms ✅ done
M1 Core engine + merge as the reference implementation in progress
M2 split, rotate, reorder, pages, metadata, sanitize, get-info
M3 compress + a real setup / doctor
M4 watermark, stamp, protect, unlock, permissions
M5 convert, to-images, from-images
M6 Cloud engines, --json everywhere, published benchmarks
M7 Textual TUI + visual pickers for crop and reorder
M8 OCR, done properly
M9 Pipelines, resumable batch, folder watch
M10 Local MCP server — drive DocMax from an AI agent, nothing leaves your machine

Benchmarks will be published in benchmarks/ with real hardware and methodology. No numbers appear in this README until they are measured.

Contributing

git clone https://github.com/megabyte44/docmax
cd docmax
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
pre-commit install

pytest && ruff check . && mypy && lint-imports

Start with docs/architecture.md and the ADRs — they explain the constraints, most of which exist for a specific reason.

Licence

MIT. Every document operation is free and always will be — see ADR 0004 for where the open-core line sits and why.

Release files for DocmaxV3 3.0.0a7

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

Source distribution (sdist)

Source distribution for DocmaxV3 3.0.0a7
File Size Uploaded
docmaxv3-3.0.0a7.tar.gz 42.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for DocmaxV3 3.0.0a7
File Interpreter ABI Platform
docmaxv3-3.0.0a7-py3-none-any.whl Python 3 none any Details

Total release size: 94.2 kB

Release files / docmaxv3-3.0.0a7.tar.gz

Download URL docmaxv3-3.0.0a7.tar.gz
Size 42.2 kB
Tags Source
SHA-256 checksum
How to use checksums
258dec733299ab8ceeb8366aab1303f1e163a461a4375c410248df618a8bb2cf
BLAKE2b-256 checksum
How to use checksums
e38f4afac9a0ee8b102da18aa32c460b9a32ae9c8a4a4462c47ddcb9b42c4389
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 Aug 17, 2026.

Transparency log

Release files / docmaxv3-3.0.0a7-py3-none-any.whl

Download URL docmaxv3-3.0.0a7-py3-none-any.whl
Size 51.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
54bb50ca3164c880bd5983ef2e741135498aba687da0ef33fab84efafeba5e97
BLAKE2b-256 checksum
How to use checksums
30cda938e69108cc81374fb6694bdeb7468551fd766e1ac4fd5ef7b005955cf6
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 Aug 17, 2026.

Transparency log

Release history Release notifications | RSS feed

3.3.0

2 release files

3.2.0

2 release files

3.1.2

2 release files

3.1.0

2 release files

This release

3.0.0a7 This release

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