Docs
Connect the app.
The CLI reads your servers in CI. The app decides, and keeps the record.
How it fits
Three places, one reading.
Your CI
npx nulladrift push
The control plane
compare · policy · verdict
app.nulladrift.com
a person rules
Your organization
Everything in the app belongs to one.
- 1. Sign up at app.nulladrift.com.
- 2. Name your organization. That is the whole setup.
Collector token
What a pipeline authenticates with. Issued by an owner or admin.
In the app: Settings → Collector tokens. Name it, choose Push readings, and copy it. It is shown once. Only its hash is kept, so losing it means issuing another.
Push from CI
Swap check for push. The verdict now comes from the app.
Add the token as a secret, NULLADRIFT_TOKEN, and the control plane's API address as NULLADRIFT_API_URL.
name: nulladrift
on: [push, pull_request]
permissions:
contents: read
id-token: write # sign each reading
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx nulladrift push
env:
NULLADRIFT_API_URL: ${{ vars.NULLADRIFT_API_URL }}
NULLADRIFT_TOKEN: ${{ secrets.NULLADRIFT_TOKEN }}What comes back
The control plane decides the verdict and the exit code.
Rule on a change
Open Drift, pick the change, read what moved.
Policy
Evaluated on every reading, in the app, not in the repo.
Notifications
Settings → Organization.
Roles
Who can do what in an organization.