refactor: FROM opencode-devbox:latest-pi-only (lean, no opencode)
Re-point the re-brand at the new pi-only variant instead of with-pi, so pi-devbox stays a lean pi-focused image (no opencode) while the pi install logic still lives in one place upstream. This keeps pi-devbox meaningfully distinct from opencode-devbox:latest-with-pi. - Dockerfile: BASE_IMAGE default -> joakimp/opencode-devbox:latest-pi-only. - smoke-test.sh: size threshold 2900 -> 2750 MB (pi-only = with-pi minus opencode's ~145 MB binary). - Docs (README/AGENTS/DOCKER_HUB/CHANGELOG/docker-compose): drop the 'also contains opencode' notes; describe pi-only basis and the distinction from with-pi. Publish ordering unchanged: release opencode-devbox first so latest-pi-only carries the target pi version, then tag here (smoke asserts pi --version).
This commit is contained in:
@@ -9,9 +9,10 @@ A Docker container with [pi coding-agent](https://github.com/earendil-works/pi)
|
||||
|
||||
## What's inside
|
||||
|
||||
pi-devbox is a re-brand of the **opencode-devbox `with-pi` variant** — it `FROM`s
|
||||
`opencode-devbox:latest-with-pi` and adds no layers of its own. Everything below
|
||||
is inherited from that single source of truth.
|
||||
pi-devbox is a re-brand of the **opencode-devbox `pi-only` variant** — it `FROM`s
|
||||
`opencode-devbox:latest-pi-only` and adds no layers of its own. Everything below
|
||||
is inherited from that single source of truth. The pi-only variant is built with
|
||||
`INSTALL_OPENCODE=false`, so this image is lean and pi-focused — no opencode.
|
||||
|
||||
Base tooling:
|
||||
|
||||
@@ -26,12 +27,13 @@ Base tooling:
|
||||
|
||||
pi and companions:
|
||||
|
||||
- **pi** ([`@earendil-works/pi-coding-agent`](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)) — baked at `/usr/bin/pi`, version pinned by the with-pi base build
|
||||
- **pi** ([`@earendil-works/pi-coding-agent`](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)) — baked at `/usr/bin/pi`, version pinned by the pi-only base build
|
||||
- **[pi-toolkit](https://gitea.jordbo.se/joakimp/pi-toolkit)** — mosh/tmux-friendly keybindings (Shift+Enter, Ctrl+J, Alt+J newline), AWS env loader, settings template
|
||||
- **[pi-extensions](https://gitea.jordbo.se/joakimp/pi-extensions)** — 7 extensions: `ext-toggle`, `mcp-loader`, `todo`, `ssh-controlmaster`, `notify`, `git-checkpoint`, `confirm-destructive`
|
||||
- **`fork` tool** ([pi-fork](https://github.com/elpapi42/pi-fork)) and **`recall` tool** ([pi-observational-memory](https://github.com/elpapi42/pi-observational-memory)) — baked into `/opt` and registered at runtime
|
||||
- **mempalace bridge** — auto-symlinked MCP extension so pi reads/writes the same palace as opencode
|
||||
- **opencode** — also present, since the image FROMs the with-pi variant
|
||||
- **mempalace bridge** — auto-symlinked MCP extension so pi reads/writes the same palace as opencode-devbox's palace
|
||||
|
||||
(opencode itself is **not** included — that's the difference from `opencode-devbox:latest-with-pi`. If you want both opencode and pi in one image, use that variant instead.)
|
||||
|
||||
The entrypoint deploys/registers all of these on first container start. Idempotent and preserves user edits.
|
||||
|
||||
@@ -206,22 +208,22 @@ Tags follow the pi npm package version: `v0.74.0`, `v0.75.0`, … `latest` alway
|
||||
|
||||
Container-level rebuilds on the same pi version (security updates, base bumps, fixes) get a letter suffix: `v0.74.0b`, `v0.74.0c`, …
|
||||
|
||||
The pi binary is inherited from `opencode-devbox:latest-with-pi`, so a release of this image must be preceded by an opencode-devbox release that bakes the target pi version into `latest-with-pi`. The smoke test enforces this (it asserts `pi --version` matches the tag).
|
||||
The pi binary is inherited from `opencode-devbox:latest-pi-only`, so a release of this image must be preceded by an opencode-devbox release that bakes the target pi version into `latest-pi-only`. The smoke test enforces this (it asserts `pi --version` matches the tag).
|
||||
|
||||
---
|
||||
|
||||
## Building from source
|
||||
|
||||
This image is a thin re-brand of the with-pi variant, so building it just pulls
|
||||
the base. To pin a specific with-pi build or hack on it:
|
||||
This image is a thin re-brand of the pi-only variant, so building it just pulls
|
||||
the base. To pin a specific pi-only build or hack on it:
|
||||
|
||||
```bash
|
||||
git clone https://gitea.jordbo.se/joakimp/pi-devbox
|
||||
cd pi-devbox
|
||||
|
||||
# Default tracks latest-with-pi; override BASE_IMAGE to pin a build:
|
||||
# Default tracks latest-pi-only; override BASE_IMAGE to pin a build:
|
||||
docker compose build \
|
||||
--build-arg BASE_IMAGE=joakimp/opencode-devbox:v1.15.13-with-pi
|
||||
--build-arg BASE_IMAGE=joakimp/opencode-devbox:v1.15.13-pi-only
|
||||
|
||||
docker compose up -d
|
||||
```
|
||||
@@ -234,7 +236,7 @@ Build args supported:
|
||||
|
||||
| Arg | Default | Effect |
|
||||
|---|---|---|
|
||||
| `BASE_IMAGE` | `joakimp/opencode-devbox:latest-with-pi` | Parent image — set to a `:vX.Y.Z-with-pi` tag or a digest for reproducible builds |
|
||||
| `BASE_IMAGE` | `joakimp/opencode-devbox:latest-pi-only` | Parent image — set to a `:vX.Y.Z-pi-only` tag or a digest for reproducible builds |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user