nth Labs Help centre
⌘K
Open console

In your editor

Running it in CI

One command, built for the case where nobody is watching the output.

The gate

node cli.cjs ci --target https://preview-123.example.dev

Runs against a preview URL, writes a summary at <out>/ci-summary.md and .json, and exits non-zero when there are new ship-blockers.

“New” is the important word

A gate that fails on every pre-existing problem gets switched off in a week. This one compares against the accepted baseline for the branch, so it fails on what your change introduced rather than on the backlog you inherited.

The gate is not free

By default ci runs audit,launch, which need a key like they do anywhere else. If you want a free gate, run vitals and guard instead. Both are deterministic and both exit non-zero on new ship-blockers.

A free gate

node cli.cjs vitals --target "$PREVIEW_URL"
node cli.cjs guard

No key, no bill, no flake: both are deterministic, and they are the two that belong in a pipeline. Add the reasoning checks later, on a schedule rather than on every push, once you know what they cost you.

Reading the result

The JSON summary carries the counts and the new findings with their ids, which is what you want if you are posting it somewhere yourself. The Markdown is written to be pasted into a pull request without editing.