- docker-compose.prod.yml + .env.prod.example: one container per agent, Quince
first; deployed under /opt/gu_agents and wired into the server's start/stop.sh.
- Route API + git via host-gateway (containers can't hairpin the host's public IP).
- Dockerfile: drop the base image's uid-1000 user before creating quince.
- entrypoint: pip install --break-system-packages (Debian bookworm PEP 668).
Verified on prod: image builds, API reachable (200), PyPI egress ok, gutask
installs and runs, git clone from ramanujan works via host-gateway.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Identity (CLAUDE.md, GOALS.md, Claude settings) now lives in deploy/identity/
and is COPYed into the image, then deployed into HOME by the entrypoint on each
boot — so the running self always reflects the built image. Rebuilding is what
promotes an identity change (a push alone does not). quince-home is now purely
the runtime volume (.ssh, notes, workspace, logs, .claude memory, gutasktool).
Updated CLAUDE.md self-update loop, README (architecture + redeploy steps), and
.gitignore accordingly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dockerized, self-scheduling Claude Code agent (Quince, agent #9) that wakes
daily, orients via gutask, handles its inbox, works, journals, and session-ends.
Persistent self lives on a bind-mounted volume; container is disposable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>