Every day a GitHub Action runs the unmodified
internetnl CLI
against api.westerweel.work — a self-hosted
Internet.nl batch instance behind the
multi-tenant netnl facade — and commits the CLI’s own
--json output here. What you see below is that file, rendered.
Type a domain you operate — this only rewrites the examples below, nothing is measured from this page.
Live measurements share one public budget (a few runs per hour, max 2 per visitor) and run on our own instance. Only measure a domain you operate or have permission to test. The result expires after 24 hours. Batch results can differ slightly from internet.nl's website test.
# 1. install the CLI (Python, via uv) uv tool install git+https://github.com/MWest2020/internetnl-cli # 2. point it at an endpoint + your credential export INTERNETNL_ENDPOINT=https://api.westerweel.work export INTERNETNL_USERNAME=you INTERNETNL_PASSWORD=… # 3. measure — web or mail (table on your terminal, --json for CI) internetnl submit example.nl internetnl submit --type mail example.nl
Three lines of YAML and every deploy gates on the same standards internet.nl measures: exit 3 when a scored subtest fails, so the pipeline goes red. Full CI guide →
# .github/workflows/standards.yml - uses: MWest2020/internetnl-cli@main # pin a SHA in production with: hosts: example.nl endpoint: https://api.westerweel.work username: ${{ secrets.INTERNETNL_USERNAME }} password: ${{ secrets.INTERNETNL_PASSWORD }}
The internetnl CLI speaks the Internet.nl batch API. It measures a list of hosts and returns the verdicts — as a table for humans or JSON for CI. Behind api.westerweel.work sits netnl: a small multi-tenant facade in front of a self-hosted Internet.nl batch instance, so multiple teams can measure without running their own stack. Full picture in the illustrated walk-through.
Everything is open source: the CLI, the facade, and the deploy runbooks (Kubernetes or a single VPS). Own your measurements end-to-end, like this page does.
Repo & runbooks →Prefer not to host? A small donation gets you a lifetime credential on our instance — an endpoint, a username and a password; the CLI (or the GitHub Action) does the rest. Leave your email in the donation message and your key arrives by mail. Best-effort beta, no SLA; fair use is enforced by per-tenant rate limits. Only measure hosts you operate or have permission to test.
☕ Buy a coffee, get a lifetime key or just ask →Mail measurements are coming. internet.nl tests email standards too (SPF, DKIM, DMARC, STARTTLS, DNSSEC) and so does our instance — but our measurement VPS is still waiting for its outbound SMTP unblock at the hosting provider (new-account limit). Rather than publish a verdict our own infrastructure distorts, we wait. Web scores are unaffected.
Why not 100%? The remaining points on the two public hosts are
Cloudflare edge-TLS cipher tests (fixable only with a paid Cloudflare
add-on — a deliberate trade-off for now), and
netnl.westerweel.work deliberately refuses public HTTPS:
the measurement instance is reachable over a private network only.
An honest scoreboard shows its own trade-offs.