CLI
The `ringtail` command — print the plan, boot the cockpit, or emit agent-readable JSON.
The ringtail bin is the terminal surface. It reads ./.env.example (the manifest) from the
directory you run it in and never prints secret values — the plan and --json emit key
names and status only.
ringtail — provision every API key a new project needs.
Usage:
ringtail Print the plan (reads ./.env.example — the manifest).
ringtail up Boot the daemon (serving the dashboard) and open the cockpit.
ringtail up --project <path>
Same, preselecting the project at <path> (skips the picker).
ringtail --json Agent mode: JSON status of what's MISSING (no secret values).
ringtail --help Show this help.ringtail
Prints the plan — every credential the project needs, grouped by section, with a ✓ for
present and ○ for missing, and a count of how many are left to provision.
ringtail up
Boots the daemon on a free localhost port and opens the cockpit in your browser. The daemon
serves the built dashboard itself (apps/dashboard/dist), so the UI, /api/*, /events,
and /mcp are ALL one origin on one port — one process, no Vite dev server. If the dashboard
isn't built yet, up builds it first. Ctrl-C stops the daemon.
Pass --project <path> to preselect the project (the daemon rebuilds the grid from that dir's
.env.example and skips the picker); otherwise the dashboard's project picker handles it.
ringtail --json
Agent mode. Emits the missing keys as JSON — names + section only, never values — so a coding agent can read what's left to do:
{
"missing": [{ "key": "RESEND_API_KEY", "section": "Email" }],
"total": 7
}--json also works with up as a dry-run: it reports what up would serve (the dashboard
dist path + whether it's built) without spawning anything — testable and CI-safe.