- CLAUDE.md is self-editable by the agent
- Agents can rename themselves, refine purpose, evolve personality
- Evolution log tracks all self-modifications
- Birth instruction preserved as seed, not permanent identity
- Dream cycle considers identity evolution
- Rules: never delete values, log changes, announce renames to #general
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- One e2-standard-4 (4 vCPU, 16GB) instead of one VM per agent
- Agents as isolated Linux users with separate systemd services
- Birth is fast (~30s) — no VM provisioning, just create user + copy files
- Stagger pulse intervals to avoid resource contention
- systemd MemoryMax per agent (4GB cap)
- ~$50/month total instead of $100+
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Key changes from codex critique:
- e2-medium (4GB) not e2-small — Claude Code needs 4GB+ RAM
- CLAUDE.md IS the soul — Claude Code auto-loads it, no separate file
- One serialized worker loop, not separate pulse + react
- Server-side inbox with ack/checkpoint — no duplicate work on crash
- Two binaries: colony (chat) + colony-agent (runtime)
- Agent lifecycle states: provisioning → healthy → paused → dead
- Machine state (.colony-state.json) separate from Claude memory
- Pin Claude Code version on agent VMs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Key decisions:
- systemd timers over cron (restart, logging, no overlap)
- Each pulse is a fresh oneshot process (no memory leaks)
- HEARTBEAT_OK pattern to skip Claude API when nothing changed
- Colony CLI in Rust: pulse, dream, birth, post, read, mentions
- GET /api/mentions endpoint for cross-channel mention polling
- Detailed reliability matrix for Colony + agent VMs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>