Cordon needs to be running before your application starts making API calls. There are two approaches. Project scope is the default; useDocumentation Index
Fetch the complete documentation index at: https://docs.codezero.io/llms.txt
Use this file to discover all available pages before exploring further.
--scope user for user-wide setups such as Hermes.
- Procfile (recommended for development) — start Cordon alongside your app in a process manager. Simple, no system-level installation, stops when you stop developing.
- Background service (optional) — install Cordon as a launchd/systemd service for a project or user scope. Starts on login, restarts on failure. Useful when you want the proxy always available without manually starting it.
Procfile (foreman / overmind)
The simplest approach for development. Usecordon wait to block until the proxy is ready:
cordon wait polls the health endpoint until it returns 200, then exits. Your application starts only after credentials are loaded and the proxy is accepting connections.
Background service
Install cordon as an OS-managed service that starts automatically:- macOS (launchd)
- Linux (systemd)
The service is installed as a launchd user agent. It starts on login and restarts on failure.
Named instances
Run multiple cordon instances with different configs:Health endpoint
The health endpoint is available atGET /health once the proxy binds its listener:
| Status | Response | Meaning |
|---|---|---|
200 | {"status":"ok"} | Proxy is ready — secrets loaded, accepting connections |
| (connection refused) | (no response) | Proxy has not finished starting |
503 state. Before the listener binds, there is no open port (connection refused). Once TcpListener::bind() succeeds, /health immediately returns 200. Process supervisors can distinguish between “not started yet” (connection refused) and “ready” (200).
Proxy not running checks
Use these checks from any integration when requests fail with connection refused or the tool reports that Cordon is down:200:
--scope user to these commands.
Startup sequence
The proxy starts in a strict order:- Parse and validate
cordon.toml. Exit on invalid config. - Validate HTTP route secrets from configured sources. Exit if any fail.
- Resolve PostgreSQL listener credentials at startup, if listeners are configured.
- If TLS enabled: generate or load CA keypair.
- Bind listener on
127.0.0.1:<listen>. The health endpoint serves200from this point. - Begin accepting connections.