Get started: Single machine

Run both the CLI and the daemon on one Mac for local-dev or solo use.

This is the fastest path: install both binaries, run the daemon directly, and deploy from the same machine. Useful for trying StackPaaS out, building app templates, or running a personal PaaS on your own hardware.

Requirements

Install both binaries

brew tap stackcube/tap
brew install stackcube stackcubed

Initialize the daemon

Use your own SSH public key as the bootstrap admin and localhost as the daemon domain:

stackcubed init \
  --admin-key ~/.ssh/id_ed25519.pub \
  --domain localhost

This writes ~/.stackcubed/config.yml, generates the daemon's deploy key, registers your key as admin, creates the stackcube-net Docker network, and starts the bundled stackcube-proxy Caddy container. The data directory defaults to ~/.stackcubed.

Note: Caddy binds host ports 80 and 443. If something else on your machine already uses them, init will fail at the proxy-start step. Free those ports first.

Run the daemon

Two options — pick whichever fits your workflow.

Foreground (development)

Runs in the current terminal so you can watch logs and Ctrl-C to stop:

stackcubed serve

Background as a LaunchAgent (always-on)

Installs stackcubed as a per-user launchd LaunchAgent so it survives terminal close and starts at login:

stackcubed service install
stackcubed service status

stackcubed service restart bounces the agent after config changes; stackcubed service uninstall removes it.

Configure the CLI

Point stackcube at the local daemon. No TLS — this connects to gRPC port 9090 directly, bypassing Caddy:

stackcube init --server localhost:9090

The CLI writes ~/.stackcube/client.yml and uses ~/.ssh/id_ed25519 as the identity by default. Apps you deploy will still be reachable via Caddy on :80/:443 using their --domain — only the daemon control plane bypasses the proxy.

Smoke test

stackcube list

Empty table = working. If you get an auth error, double-check that --admin-key matched the public key whose private counterpart your CLI is using.

Deploy your first app

1. Scaffold

From inside a fresh project directory:

stackcube scaffold

Generates docker-compose.yml + .env. Add a Dockerfile next to them.

2. Get the daemon's deploy key

stackcube deploy-key

Add this read-only key to your git host so the daemon can fetch your repo over SSH.

3. Create and deploy

stackcube create myapp --domain myapp.localhost
git push origin main
stackcube deploy myapp

The CLI streams deploy progress (fetch → build → compose up). Once it finishes, the app is reachable via the front proxy on the host.

Where to go next