Commit graph

10 commits

Author SHA1 Message Date
e91b74ea38 tools: Install on first use instead of baking them into the image
Baked installs had two failure modes: anything installed into $HOME
at build time is shadowed by the container-home bind mount at runtime,
and system-wide installs are root-owned, so the tools' own update
commands (pi update, claude update, opencode upgrade) failed with an
unwritable install path. With pi releasing new versions almost daily,
the only remedy, a full image rebuild that also deleted every
container, was too heavy for that cadence.

Now each tool is installed at runtime into the persistent container
home by its official installer (no sudo), the same way the Docker
image itself is built on first use. Self-updates work inside the
container and survive image rebuilds and container recreation. The
image shrinks to a plain Arch base, and agent-container update no
longer removes containers, so sudo-installed project dependencies
survive it too.

docker exec now attaches a TTY only when stdin is one, so scripted
runs like 'pi -p' work without a terminal.
2026-09-18 08:38:23 +09:00
70699026c3 setup: Show a plan and ask for confirmation before changing anything 2026-09-12 21:40:17 +09:00
d110942710 setup: Add script to share agent state via container home symlinks 2026-09-12 21:38:39 +09:00
a3aa03e14d readme: Document sharing agent state via symlinks in container home 2026-09-12 21:36:03 +09:00
336ec1d97d readme: Document local aliases and bundled OpenCode plugin 2026-09-09 09:42:20 +09:00
6c859eb427 readme: Remove broken Claude Pro/Max bridge docs and mention local aliases 2026-09-09 09:39:47 +09:00
5c2f3ae83c container: Add Pi coding agent (pi.dev) as a third harness
- Install @earendil-works/pi-coding-agent globally via npm in the
  image so it survives the home directory bind mount
- Add pi subcommand forwarding PI_* and provider key prefixes
- Add pi shell wrapper alias
- Build with --network host so image builds work on hosts where the
  Docker bridge network cannot create veth pairs
2026-08-30 11:50:56 +09:00
a3db357b6f container: Forward env vars by prefix and source shell config from container-home
Replace hardcoded env var lists with prefix-based forwarding (OPENCODE_*,
ANTHROPIC_*, CLAUDE_*) so new env vars are picked up automatically.

Run tools through bash -l inside the container so that .bashrc, .bash_profile,
and .profile from container-home are sourced. Seed container-home with default
shell config from /etc/skel on first run if the files don't already exist.
2026-03-31 04:26:20 +00:00
2d3d5caacb container: Improve usability of web mode, error handling, and CLI commands
Use --network host so that web interfaces (e.g. opencode web) are
accessible from the host. Suppress Python tracebacks when the tool
exits with a non-zero code. Ignore SIGTSTP to prevent Ctrl+Z from
leaving orphaned containers. Rename force-cleanup to purge.
2026-03-28 22:07:58 +00:00
61017da6ba Combine opencode-container and claude-container into a unified agent-container
Merge the two separate container projects into a single image and
management script. Both OpenCode and Claude Code are installed in the
same Arch Linux image and share one persistent $HOME directory, which
enables the opencode-claude-bridge plugin to read Claude CLI credentials
from within OpenCode.

Subcommands: opencode, claude, update, force-cleanup.
2026-03-24 09:39:25 +09:00