Preflight is a deterministic environment scanner with a Rust CLI, Axum-powered local dashboard, and optional cloud sync. It inspects runtimes, databases, ports, GPUs, and remote hosts, then writes a canonical .preflight/scan.json contract that downstream tooling and the dashboard consume without divergence. The /branding directory contains the canonical SVG wordmark shared by the dashboard, CLI output, and docs so there are no binary assets required.
cargo install preflight-clicargo install --path core --lockedRelease assets are published for macOS (arm64 + x86_64) and Linux (x86_64 + aarch64):
preflight-macos-arm64.tar.gzpreflight-macos-x86_64.tar.gzpreflight-linux-x86_64.tar.gzpreflight-linux-aarch64.tar.gz
Download the matching tarball, verify the .sha256 file, then extract directly into your PATH:
curl -L "$PREFLIGHT_TARBALL_URL" | tar -xz
sudo install -m 0755 preflight /usr/local/bin/preflightReplace PREFLIGHT_TARBALL_URL with the direct link to the release asset for your platform.
The CLI serves the built Vite assets from web/dist. Build once per update:
cd web
npm install
npm run build
cd ..preflight scan— run a local scan and write.preflight/scan.jsondeterministically.preflight scan --json— emit the scan envelope to stdout in addition to writing the contract.preflight dashboard— start the Axum server, serveweb/dist, and openhttp://localhost:8787.preflight sync— upload.preflight/scan.jsonto your cloud endpoint (Pro). RequiresPREFLIGHT_API_URLandPREFLIGHT_API_KEY.preflight simulate/simulate-proposed— model changes before running them.preflight watch,deps,doctor,security, and more for specialized workflows.
preflight dashboard starts the embedded Axum server at http://localhost:8787 and mounts the Vite bundle from web/dist under /dashboard/. Set PREFLIGHT_DASHBOARD_DIST to point at a built web/dist directory when running the installed binary from outside the repo. The backend exposes:
GET /api/state— parsedscan.jsonplus risk summaries.GET /api/mtime— deterministic timestamp and fingerprint for cache busting.GET /ws/updates— websocket updates when a new scan is detected.
Synchronize local scans to Supabase or another hosted endpoint:
export PREFLIGHT_API_URL=https://your-api.example.com
export PREFLIGHT_API_KEY=service_role_key
preflight syncReference API (see cloud/api.rs and cloud/supabase.sql):
POST /upload— storehostandpayload(the contents ofscan.json).GET /history— list recent scans.
scan.jsonkeys are ordered, fingerprints are stable, and re-running on an unchanged machine produces identical output.- Remote scans retain hardened SSH defaults from the security patch while continuing to validate against
scan.schema.json. - Dashboard reads from the same contract to avoid drift.
GitHub Actions builds release artifacts for macOS (ARM + Intel) and Linux (x86_64 + ARM64), tars the preflight binary, and publishes SHA256 checksums. Install via tarballs or cargo install preflight-cli.
The site/ directory contains a static marketing page ready for Vercel deployment with hero, features, install instructions, pricing, and GitHub links.