91.5k stars · MIT at the root, with app/proprietary/, app/saas/, engine/ and several frontend directories carved out under separate licences · v2.14.3 (2026-08-06) · Track this in Scout
About fifty PDF operations in one self-hosted container — nothing leaves the machine.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hosted web application offering around fifty PDF operations — split, merge, compress, convert, OCR, redact, sign, fill forms, rotate — through a browser interface, running entirely on your own hardware. One Docker container, no upload to anybody else.
What it is good for. Two threads in this ledger end in PDFs. Typst (Ed. 8 #7) produces a bilingual lead magnet to trade for an email address, and it will want compressing before it goes on the site. And the whole document-ingest question — Docling (Ed. 3 #9) against Marker (Ed. 9 #9), which Edition 9 said to settle on ten real PDFs — needs a corpus of genuinely messy multi-page files, which means splitting, rotating and OCR-ing documents that are already to hand. Doing either on a free upload-your-file website means posting unreleased marketing material and other people's documents to a company you know nothing about. This is the wildcard for a reason: it earns nothing this month, and then one afternoon it saves you.
- Around fifty operations in one container, entirely offline — nothing leaves the machine.
- Very actively released; v2.12.0 in June brought large memory improvements to merging.
- Useful across a whole workflow, not just one corner of one product.
- The licence is no longer simply MIT — see the note above. The root is MIT;
app/proprietary/,app/saas/andengine/are not. - A JVM application that wants real memory headroom. Read Beszel (Ed. 5 #8) before adding it to a small server.
- Never expose it to the internet unauthenticated. It will happily process whatever anyone uploads, at your expense.
- juspay/hyperswitch — 43.0k ★, Apache-2.0, v1.123.1 (19 May 2026). Verified alive and genuinely impressive: an open payments orchestration layer across many processors. Dropped as far too heavy — this is what you adopt when you have three processors and a fraud problem, not when you have no checkout at all. Backlogged.
- killbill/killbill — 5.7k ★, Apache-2.0. The veteran open-source subscription billing platform, but no release date could be read from the page, and it is a Java and Tomcat deployment. Lago covers the same ground with a provable weekly cadence. Backlogged.
- usesend/useSend — 4.7k ★, AGPL-3.0. A self-hosted alternative to Resend that would sit neatly in front of Listmonk, and the missing sending layer that checkdmarc (Ed. 8 #1) exists to police. Dropped because the repository shows no releases at all, so recency could not be proven to the standard the other twelve met. Redirect:
unsend-dev/unsend→usesend/useSend. Worth re-checking. - Rikorose/DeepFilterNet — 4.6k ★, MIT / Apache-2.0. Real-time noise suppression, considered for cleaning up screencast narration before ElevenLabs. No dated releases and no readable commit dates, so recency is unprovable from this sandbox. Backlogged; re-check later.
- google/schema-dts — 1.2k ★, Apache-2.0, v2.0.0 (23 March 2026). Verified healthy and a real gem candidate: typed JSON-LD for Schema.org, which is the structured-data half of everything geo-optimizer-skill (Ed. 8 #3) has been asking for. Dropped only for slate fit — this page already carries two compliance items and a third would have made it a chore. Backlogged, and worth surfacing soon.
docker run -d -p 8080:8080 --name stirling-pdf stirlingtools/stirling-pdf:latest

