levelrail-cli domains diagnose and as an API call.
It builds on the domain doctor: same checks, plus Cloudflare proxy detection, wildcard awareness, plain language certificate errors, propagation timing, and fixes that the platform can apply for you.
What it checks
Every check has a state:
pass, warn, fail, skipped or unavailable.
Certificate errors in plain language
The raw error from Let’s Encrypt is kept, but the diagnosis leads with what it means:Fixes
Each problem carries one fix of one of three kinds:
After any fix, press Re-check. The diagnosis never assumes a fix worked.
The record to create depends on the name: an address record (
A, or AAAA for an IPv6-only server) at a zone apex such as example.com or example.co.uk, and a CNAME to this server’s public hostname for a subdomain such as app.example.com. When the server has no public hostname set, a subdomain gets an address record too.
Propagation
The result includes apropagation block:
The dashboard polls on that schedule while the dialog or panel is open.
From the dashboard
- Domains page: open a domain’s row and choose Diagnose. Results stream in, DNS first.
- Add domains dialog: after adding, each domain shows the exact records to create and a live propagation status, so you can leave the dialog with DNS done.
From the CLI
--fix only runs fixes of kind auto. Guided and manual fixes are printed, never applied.
From the API
The owning app is found for you, and a caller who cannot see that app gets
404. Applying an auto fix is a normal API call (for a record, POST /api/v1/apps/{name}/domains/{domain}/dns-records, which needs root).
Speed
All network probes have a time limit and run concurrently: the three resolvers (and the A and AAAA lookups of each) in parallel, and the checks that do not depend on each other at the same time. The whole run is capped byAPP_DOMAIN_DOCTOR_TIMEOUT (default 20 seconds) and each probe by APP_DOMAIN_DOCTOR_PROBE_TIMEOUT (default 4 seconds). On a healthy domain the first results arrive as soon as DNS answers.