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
- Apple Silicon Mac
- Docker — Colima recommended; Docker Desktop also works
- An SSH key pair (Ed25519 recommended), typically
~/.ssh/id_ed25519
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.
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
- CLI reference — every command and flag for both binaries.
- Configuration — what's in
client.yml,config.yml, and the app contract.