UnityFreak doesn't run your builds — and you don't need to switch CI systems to use required status checks. Your existing CI reports pass/fail to one API endpoint, and UnityFreak gates merges on it, exactly like it already gates on required approvals and CODEOWNERS.
repo:write scope under Settings → Personal Access Tokens, and store it as a secret in your CI system.POST /api/v1/repos/{owner}/{slug}/statuses/{sha} with an X-API-Key header (or Authorization: Bearer <token>, if that fits your CI system's secret handling better — see the Any Other Runner recipe below) — once when the build starts (pending), once when it ends (success or failure).context name (e.g. ci/tests) to Required Status Checks — the same settings picker used for CODEOWNERS and required approvals — and merges block until it reports success.Keep GitHub as your CI runner, push to UnityFreak, post statuses back.
A .gitlab-ci.yml job that curls the statuses API around your existing stages.
Post pending/success/failure from a Jenkinsfile using the shared credential.
The three curl calls every recipe boils down to — for CircleCI, Buildkite, or a bare shell script.
Wiring CI to pull requests? Check fromFork first.
A pull request opened from a fork contains code written by someone without write access to your repository. Running that code in a CI job that has your repository's secrets in scope is the most common CI compromise on every code-hosting platform (a "pwn request").
Read the full guidance on fork-sourced pull requestsNone of this page applies if you just want basic safety checks. Every repository runs three checks automatically on push, with no CI system, no config file, and no token to manage — turn them on or off under Repository settings → Checks.
unityfreak/secret-scan) — scans the diff of every push for likely credentials (AWS keys, GitHub/Slack/Stripe tokens, private key blocks, high-entropy assigned secrets). On by default.unityfreak/large-files) — flags files over a configurable size threshold (10 MB by default) that aren't tracked with Git LFS. On by default.unityfreak/policy) — opt-in checks for allowed commit-subject prefixes, allowed branch-name patterns, and a required Signed-off-by (DCO) trailer. Off until you configure at least one rule.Like any external CI status, these post as ordinary unityfreak/* commit statuses — visible on the PR checks panel, but non-blocking by default. To make one required for merging, add its context to Branch protection → required status checks, the same picker used for your CI's own contexts. Because they run on UnityFreak's side, the unityfreak/ context prefix is reserved — external CI (and the API above) can't post under it, so a native check's result can never be spoofed by something posting to the statuses endpoint.
Looking for the full API contract — request/response schemas, auth scheme, the status-history endpoint? See the API documentation or the interactive OpenAPI explorer.
Want build results and PR activity in Slack instead of (or alongside) required checks? Project and repository settings each have their own Slack notifications section — paste an incoming-webhook URL, pick the events, send a test message.