From 341a6e1eda343dd82991aeeda95e9d38d226b379 Mon Sep 17 00:00:00 2001 From: nprodromou <73134621+nprodromou@users.noreply.github.com> Date: Wed, 6 May 2026 22:18:34 -0700 Subject: [PATCH 1/2] Dockerfile: install bubblewrap for codex-cli sandbox Codex CLI uses bubblewrap (bwrap) for FS sandboxing on Linux. Without it codex falls back to a vendored binary and warns on every launch. bubblewrap is in Debian's main repo as a tiny add to the apt list. --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 8e8410a..815e303 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,6 +28,7 @@ RUN set -eux; \ ca-certificates curl git gnupg jq less vim sudo tini \ bash-completion locales tmux unzip zip openssh-client \ build-essential python3 python3-pip \ + bubblewrap \ passwd; \ # Node.js from NodeSource (pinned major version). The previous # node:*-bookworm-slim base shipped a phantom uid/gid 1000 user that From 01da7d0fc4f59378d85937b144c388afd794e72a Mon Sep 17 00:00:00 2001 From: nprodromou <73134621+nprodromou@users.noreply.github.com> Date: Wed, 6 May 2026 22:20:59 -0700 Subject: [PATCH 2/2] entrypoint: auto-launch codex on ttyd connect, with bash fallback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lands the user straight in the codex agent UI when they hit codex.prodromou.com — no need to type "codex" at a bash prompt first. If codex exits (or crashes), drops to an interactive login bash so the pod stays usable for triage. --- bin/entrypoint.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bin/entrypoint.sh b/bin/entrypoint.sh index b3c11d2..2b9d99f 100644 --- a/bin/entrypoint.sh +++ b/bin/entrypoint.sh @@ -62,11 +62,14 @@ EOF # -p 7681 : listen port # -t titleFixed: avoids leaking shell pid/host into the title # -T xterm-256color : sane terminal -# bash -l : login shell so .bashrc runs +# +# The shell command auto-launches codex on connect so the user lands +# straight in the agent UI. If codex exits or crashes, we drop to an +# interactive bash login so the pod isn't bricked. exec ttyd \ --writable \ --port 7681 \ --terminal-type xterm-256color \ --client-option titleFixed='codex-cli' \ --client-option fontSize=14 \ - bash -l + bash -lc 'codex; exec bash -l'