deleteTap before createTap in all four call sites:
snapshot restore, cold boot, agent start, snapshot create.
Prevents "Device or resource busy" from leftover taps.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Don't overwrite the host's resolv.conf with hardcoded 8.8.8.8.
The host's DNS config is already correct for both build and runtime.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy host /etc/resolv.conf into chroot before apk install.
Set static nameserver after install for runtime.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Copy host /etc/resolv.conf into chroot before apk install (fixes DNS)
- Set static DNS (8.8.8.8) after chroot install for runtime
- Use PATH-based mkfs.ext4 instead of hardcoded /usr/sbin/
- Show chroot package install output (stdio: inherit)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Unmount and remove leftover files from previous failed install
attempts before starting the agent rootfs build.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All commands now show their output for debugging
- Use PATH-based e2fsck/resize2fs instead of hardcoded /usr/sbin/
- Add error checks with meaningful messages at each step
- set -e in chroot to fail fast on errors
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- setup.ts now downloads Alpine Linux minirootfs instead of Ubuntu squashfs
- Installs Alpine packages (openssh, python3, curl, ca-certificates) in chroot
- Fixes install script failing on non-Alpine base rootfs (adduser syntax)
- Clean up unused imports and lint warnings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Step headers, checkmarks, skip indicators for each component
- Shows what's being installed vs already present
- Progress messages for long operations (model pulls, rootfs build)
- Banner at start and summary at end with disk usage and model count
- Per-package install status on Debian/Ubuntu
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Install script now detects existing Node.js < 20 and upgrades it
instead of skipping. Supports apt, dnf, and apk package managers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Quote all variable expansions in setup-bridge.sh, teardown-bridge.sh,
and install.sh. Fix redirect order and unused variable in test-suite.sh.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- !status: shows agent count, load, RAM, disk, uptime, Ollama model loaded
- web_search tool: agents can search via SearXNG (searx.mymx.me)
Works in both structured and text-based tool call paths
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-read agents.json immediately before writing in startAgent to avoid
one start overwriting another's entry. Also clean stale sockets before
starting new agents.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Trigger only matches when nick is at start of message, not mid-text
Fixes: "coder: say hi to worker" no longer triggers worker
- Network policies per agent: "full" (default), "local" (LAN only), "none" (IRC+Ollama only)
Configured via template "network" field, applied as iptables rules per agent IP
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- IRC socket writes protected by threading.Lock in agent.py
- Overseer runs periodic health check (30s interval)
- Detects dead agent processes, cleans up resources, announces in #agents
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>