Analysis updated 2026-05-18
Sell software as a solo developer without paying a per sale cut to a licensing vendor.
Issue cryptographically signed licenses automatically after a Stripe payment.
Limit how many machines can run your software at once without phoning home constantly.
Study a real world example of separating a public facing server from a private signing machine.
| laudendev/quartermaster | eternal-flame-ad/mh-z19 | geohot/erigon | |
|---|---|---|---|
| Stars | 5 | 5 | 5 |
| Language | Go | Go | Go |
| Last pushed | — | 2019-03-31 | 2021-09-12 |
| Maintenance | — | Dormant | Dormant |
| Setup difficulty | hard | moderate | hard |
| Complexity | 4/5 | 2/5 | 4/5 |
| Audience | developer | developer | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Requires setting up two separate machines, a Stripe integration, and a signing key ceremony.
Quartermaster is a self hosted system for a solo developer who wants to sell software and issue license keys without paying a licensing vendor a cut of every sale forever. The author explains that most licensing platforms cost more the more successful you become, and are built assuming a whole team rather than one person, so this project was built instead: Stripe handles the actual payment, and everything after that, issuing the license, checking it is genuine, and controlling how many machines can use it, is run by the developer themselves at a flat, fixed cost regardless of how many copies sell. The core idea is a hard separation between two machines. One machine faces the internet and can receive requests, but can never create a valid license on its own. The other machine holds the signing key that can create a license, and it only reaches out to the internet, never accepts connections from it. If the internet facing machine were ever broken into, an attacker could only add requests to a queue, never forge a license. Licenses are stored in a fixed, versioned format designed to keep verifying correctly offline for years, even if the signing key is later rotated. On the customer side, the project treats a license more like a physical item than a locked in subscription. Deactivating a license frees up that seat so it can be reused elsewhere, similar to reselling a used copy of something. The system does not try to track who owns a license after the first sale, only how many machines are currently using it at once, and a refund does not retroactively break a machine already running. What it does block firmly is one license key being shared publicly and claimed by far more machines than it was sold for. The repository is organized into a few Go programs: a public facing service that handles Stripe webhooks and activation requests, a separate signer program that only runs on trusted hardware and actually signs licenses, a one time key generation tool, and supporting packages for the license format, the signing request queue, and seat activation tracking. Documentation covers the architecture, the license format and threat model, the API, and operations such as deployment and key rotation. The project notes it was built with the help of AI coding tools during design and implementation, though nothing in the running system depends on AI.
A self hosted license issuing system for solo developers, using Stripe for payment and a two machine signing setup so a compromised server can never forge licenses.
Mainly Go. The stack also includes Go, Stripe, Ed25519.
The README does not state a license in the shown portion.
Setup difficulty is rated hard, with roughly 1day+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.