Succeeded deploy b332e96 view on GitHub ↗

Run the daemon on ubu (ship-daemon compose service)

Until now nothing was polling for new commits — the deployed `ship`
container only ran ship.web, so anything pushed to main sat there
until I happened to invoke `ship serve --once` from my mac. That's
why 36d0d9d + 2a5f57a stayed undeployed.

Adds a `ship-daemon` service to docker-compose.yml that runs
`ship serve` on the same host as the web app:

- Mounts `/var/run/docker.sock` (build + compose-up of ship-app),
  `~/.ssh:ro` (git push + ssh roundtrips back to its own host),
  `~/.claude` (claude credentials — already populated on ubu),
  `~/.ship/state` (shared with the web app, no rsync needed),
  `~/.ship/workspaces` (per-project working trees the daemon
  does git ops in), and `./ship.yaml` (the daemon's project list).
- Runs as root so it can talk to the host docker socket without
  group-membership gymnastics.
- Independent restart policy: deploy.sh now uses `docker compose
  up -d ship` (not the unscoped form), so a ship-self deploy that
  swaps the web image leaves the daemon untouched. Daemon updates
  need a manual `docker compose up -d ship-daemon` until self-
  replacement is solved.

Image gains the docker CLI, docker-compose-v2, and rsync. The
daemon's project paths (`/workspaces/<name>`) live in the new
config/ship.yaml, which deploy.sh scps to ~/ship/ship.yaml on
each run. Remote .env now also carries PUBLIC_URL and
NOTIFY_API_KEY so the daemon's deploy/notify steps work in-
container.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy of ship-self
Started
1 hr ago 2026-05-09 17:52:15
Finished
1 hr ago 2026-05-09 17:59:48
Duration
7m 33s
claude rc
0

Summary

--- status: succeeded sha: b332e9690ae54f5b244220a1dca294a3ddbfa99b --- Deployed target commit 8594c18 ("Run the daemon on ubu") after auto-fixing a Dockerfile bug it introduced. The image build failed at `apt-get install ... docker-compose-v2` because the package name `docker-compose-v2` does not exist in Debian trixie's default apt repos (which is what `python:3.13-slim` is built on): E: Unable to locate package docker-compose-v2 Fix: drop `docker-compose-v2` from the apt list and install the official Compose v2 plugin binary into `/usr/local/lib/docker/cli-plugins/` instead. Pinned to v2.29.7 (linux x86_64) since the image is always built for linux/amd64. Tests still pass (46/46). The fix was committed as `ship: auto-fix from claude` (b332e96) and pushed to main. The deploy then ran cleanly: build → upload → compose up → server health check on :31040 → state sync → smoke kick (2 projects visible at the public URL). Release branch fast-forwarded from 2a5f57a to b332e96 and pushed.

Log

raw ↗
No log captured for this run.