Files
bot-bottle/docs/prds/prd-new-modernize-built-in-agent-images.md
T
didericis-codex 51b82f80d1
tracker-policy-pr / check-pr (pull_request) Successful in 13s
test / integration-docker (pull_request) Successful in 36s
test / unit (pull_request) Successful in 43s
lint / lint (push) Successful in 50s
test / integration-firecracker (pull_request) Failing after 7m18s
test / coverage (pull_request) Has been skipped
test / publish-infra (pull_request) Has been skipped
refactor(agent-images): use explicit Debian base
2026-07-21 17:40:18 +00:00

2.1 KiB

PRD prd-new: Modernize built-in agent images

  • Status: Draft
  • Author: Codex
  • Created: 2026-07-21
  • Issue: #451

Summary

Keep every built-in agent provider on Debian's current stable release and make Podman available inside each image. This gives agents a consistent, modern userspace and an OCI container tool without requiring per-project setup.

Problem

The Claude, Codex, and Pi images inherited the generic node:22-slim tag. That tag did not make Debian the explicit supported base and left the images on the older Bookworm release. None of the built-in images installed Podman, so tasks that need to inspect or build OCI images first had to modify the bottle or could not run at all.

Goals / success criteria

  • Every Dockerfile under bot_bottle/contrib/*/Dockerfile explicitly inherits debian:trixie-slim, Debian 13 (the current stable release).
  • Every image explicitly creates the non-root node runtime user with UID and GID 1000 instead of relying on a language image to provide it.
  • Every built-in agent image installs Podman from Debian stable.
  • Every built-in agent image retains an SSH client for Git-over-SSH workflows.
  • The non-root agent user owns a traversable XDG Git configuration directory, so Git can load bot-bottle's global git-gate rewrites without permission errors.
  • A shared test enforces both requirements for current and future built-in providers.

Non-goals

  • Configuring privileged or nested-container execution for bottles.
  • Pinning Podman outside Debian's stable package repository.
  • Changing the Node.js or agent CLI release policy.

Design

Use the explicit debian:trixie-slim base. Install Node.js and npm from Debian stable where a provider needs them, and create the common node runtime user explicitly. Install the podman package with each image's existing apt-get dependency layer, so package metadata and caches are still removed in the same layer. Treat Debian stable as the Node.js and Podman stability and update channel; this keeps the images distribution-first and avoids adding a third-party package repository.