Skip to main content
A failing check used to be a sentence you had to translate into a command. The fix-it engine turns the common ones into typed fixes you can preview, apply, and re-verify from the dashboard or the CLI.

What a fix is

Each fix belongs to one check and has a tier: Every fix also states its risk (safe, restarts, exposes), whether it can be undone, and a list of the concrete changes it will make before you confirm.

Built-in fixes

Loop protection

  • A fix never applies without an explicit click. Re-checks may run on their own.
  • Each attempt is stored with a fingerprint of the failing check result.
  • After a failed attempt the fix drops one tier (auto, then guided, then manual) and shows “tried at T, still blocked because X”.
  • It re-arms only when the failing result changes.
  • A mutating fix runs at most APP_FIXIT_MAX_PER_HOUR times per hour (default 3).

CLI

API

GET /api/v1/fixes, POST /api/v1/fixes/{id}/preview, and POST /api/v1/fixes/{id}/apply (root). Apply responds with fixed, still_failing, cannot_fix_here, or skipped.

Limits

The saved public address updates new join commands and readiness checks immediately. The agent TLS certificate and the mesh hub endpoint pick it up at the next control plane restart. See also Troubleshooting.
Last modified on October 16, 2026