Skip to content

Daily workflow

The normal Cadder workflow starts in each project and moves to the operator only when you need the shared view.

  1. Start each project from its own directory.

    caddy run

    Each live shim owns one registration and renews it periodically. Exiting the command removes that live registration.

  2. Check the shared runtime.

    cadder status

    Use cadder projects list or cadder domains list when you need the registered routes rather than daemon details.

  3. Open the routes workspace when you need to act.

    cadder tui

    The TUI groups domains beneath their projects. Use Space or Enter to toggle the selected row. Cadder keeps the current domain owner when another active project requests the same canonical domain.

  4. Leave the project normally.

    Exit caddy run in the project terminal. Cadder removes the live registration without stopping unrelated projects.

Use the boundary you already know:

cadder port inspect 3000
cadder caddyfile inspect ./Caddyfile
cadder domains inspect app.localhost

Port inspection works without cadderd. When daemon state is available, Cadder connects the listener and process to its project, Caddyfile, domain, and upstream.

Use the Caddyfile to select a project. Add --caddyfile when a domain name could belong to more than one registration.

cadder projects disable ./Caddyfile
cadder projects enable ./Caddyfile
cadder domains disable app.localhost --caddyfile ./Caddyfile
cadder domains enable app.localhost --caddyfile ./Caddyfile

Stop the daemon from the TUI or with cadder daemon stop. Replace cadder, cadderd, and the caddy shim from one release, keep cadder.toml, then start the next managed project.

Cadder may restore desired activation from SQLite after restart, but a project becomes live only after a current shim registers it. Old leases and process identities never become live state.