Margyn
Colour theme

Four checks are free. The fifth runs your suite, so it costs money.

Watch is $8.99 a month for one owner's repositories. Team is $29 a month for an organisation. Fix flow is $79 a month if you would rather the findings arrived already fixed. The four static checks stay free with no account, no licence and no network.

Free scan

$0 forever

  • Four static checks: ignored-source, no-assertion, unrun-check, lint-blindspot
  • No account, no licence, no network call at any point
  • Every finding carries a command that reproduces it
  • Exit code 1 on findings, so it gates CI today
npx margyn-scan /path/to/repo

Watch

$8.99 a month, 3 days free

  • Everything in the free scan
  • The mutation proof: it inverts a line, runs your suite, then reports the suite that stayed green anyway
  • A licence your CI verifies offline, so a paid check runs on a runner with no network
  • One repository owner. Cancel whenever you like

3 days free, then $8.99 a month. Checkout runs on Tiun.

Team

$29 a month, 3 days free

  • Everything in Watch, for every repository the organisation owns
  • One licence covers every CI runner, with no seat count and no phone home
  • Your issues are triaged first
  • Invoices on request rather than a card

Still no per seat billing. A CI gate has no seats.

The service line

Or have the findings arrive already fixed

Fix flow

$79 a month

  • Up to three findings a month fixed for you
  • Each one arrives as a patch carrying a test that fails before it and passes after
  • Back within five working days. Otherwise that month is refunded
  • Cancel whenever you like

No trial on this one, because a trial on a service is unpaid work.

It works from the finding, not from your repository

You send the finding, which already carries the file, the line, the rule that caused it and the reproduction. We send back a patch. Nobody needs a token that can read your source, so the promise on the security page holds exactly as it does for the free scan: your code stays where it is.

If a fix genuinely cannot be written from the finding alone, we say so and it does not count against your three. A patch that does not apply is our defect rather than your problem.

This is the honest shape of it: the scan is a tool, the fix is a person writing a patch. Three a month is what one person can do properly, so that is the number on the page rather than the word unlimited.

Why this is the one you pay for

The static checks read your tree once and finish in under a second. The mutation proof inverts a line, runs your entire test suite, restores the file, then does it again. That is real machine time and it is the honest line between the two. The free four are not crippled versions of anything.

It is also the check with the most to go wrong, so it is bounded. A red baseline aborts the run instead of producing results that would mean nothing. Each run is timed out. The file is restored in a finally block and on SIGINT, so an interrupted scan cannot leave a mutated tree behind. It is capped at four mutations by default, which means it under-reports on purpose. Raise the cap to find more.

We never print a mutation score. If you want a score across a whole codebase that is Stryker, free and better at it than we are. Margyn sells the sentence instead: we inverted this line, ran your suite and it passed.

What you get is a licence, not a login

After checkout, the button in the top bar hands you a signed licence. Put it anywhere the CLI can read it:

$ npx margyn-scan /path/to/repo --mutate
The mutation proof is part of Watch and it is locked: no licence found.
Everything below is the free scan, which ran in full.

$ mkdir -p ~/.margyn && pbpaste > ~/.margyn/licence   # or export MARGYN_LICENCE=...
$ npx margyn-scan /path/to/repo --mutate
4 findings, each with a reproduction you can run.

The licence is signed with Ed25519 and checked against a public key compiled into the CLI, so verifying it needs no network. That is the whole reason this works on a locked-down runner. A licence check that phones home is a new way for a build to go red for a reason that has nothing to do with the code.

A refusal never fails your run. Ask for a paid check without a licence and Margyn prints why, runs the free scan in full, then exits on its own findings. Billing is not a reason to break someone's build.

How the licence is installed and verified · The security model

Billing, stated plainly

PriceWatch 8.99 USD a month for one repository owner. Team 29 USD a month for an organisation. Fix flow 79 USD a month for up to three fixed findings. No per seat and no per committer billing anywhere: a CI gate has no seats, so charging for engineers who never open the tool would be charging for nothing.
TrialThree days at no charge on Watch and Team. Fix flow has none, because a trial on a service is unpaid work.
RenewalMonthly, until you cancel.
CancellingAny time. The licence on your disk keeps working until it expires and the four free checks are unaffected.
RefundsAsk within 14 days of a charge and it is refunded. See the terms.
CardsHandled by Tiun, which runs sign in and checkout. We never see a card number.
Licence validity31 days from the moment it is issued. Take a new one whenever you like while the subscription is active, which is also how it stops working on its own if the subscription lapses.

For a team, plus whoever signs off on it

The price is per repository owner rather than per seat, so adding engineers who never open the tool costs nothing. One licence covers your CI runners: it is verified offline against a key compiled into the binary, so it works on every runner at once without a seat count or a phone home.

More than one repositoryThat is what Team is: one subscription across every repository the organisation owns, at 29 a month. If you need separate billing per team or a single invoice across several organisations, ask and it is set up by hand today rather than by a form.
Invoices, annual terms, purchase ordersCard checkout is what is automated. An annual arrangement or an invoice is a conversation, so ask before you subscribe rather than after.
Procurement reviewEverything a reviewer normally asks for is already written down: every process the scanner starts, the absence of a hosted scan endpoint, what the licence carries, plus the source under MIT so it can be read before it runs.
SupportRepository issues, in public, which is a channel you can check is answered before you pay. A finding you cannot reproduce is treated as a defect in the tool rather than a question about your repository.

Questions people actually ask

Do I need an account to try it?

No. npx margyn-scan /path/to/repo needs no sign in, no key and no network. An account exists to buy the mutation proof and collect a licence, nothing else.

What happens if my licence expires during a build?

The mutation proof is skipped and the reason is printed. The free scan still runs in full and the exit code still reflects your findings rather than your billing.

Is my code uploaded anywhere?

No. There is nowhere for it to go. Margyn is a local CLI. The deployed site has no scan endpoint on purpose, which you can check: POST /api/scan answers 404.

Mutation testing already exists. Why would I pay you for it?

You would not, if a mutation score is what you want. Stryker gives that away and does it better. Margyn runs a capped mutation proof as one check inside a five check audit. The other four catch things a mutation framework structurally cannot: a file that is not in the commit, a gate nobody invokes, a linter whose scope comes from the ignore file.

It edits my files?

Only under --mutate, only one file at a time, only after your suite has passed unmutated. Each file is restored in a finally block and on SIGINT. Leave the flag off and nothing is ever written.

What if you disappear?

The CLI is MIT licensed with no runtime dependencies, so it is readable and forkable. It is a CLI rather than a service, so there is nothing to go dark and nothing to migrate off. The licence is verified offline, so a scan never needs us to be reachable.

Run it before you decide

npx margyn-scan /path/to/repo

If it finds nothing, you learned that for free. If it finds something, every line comes with a command that proves it.