| umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:rockcraft-base /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/.temp_layer.9106.tar --tag 26.04 |
| umoci config --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 --clear=config.entrypoint --clear=config.cmd |
| umoci config --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 --clear=config.cmd --config.cmd /bin/bash |
| umoci config --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 --config.env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| umoci config --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 --clear=config.labels --config.label org.opencontainers.image.version=26.04 --config.label org.opencontainers.image.title=ubuntu --config.label org.opencontainers.image.created=2026-06-10T03:30:57.931695+00:00 --config.label org.opencontainers.image.description=The Ubuntu container image maintained by Canonical
Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things.
It is the world's most popular operating system across public clouds and OpenStack clouds.
It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale.
Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
|
| umoci config --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 --clear=manifest.annotations --manifest.annotation org.opencontainers.image.version=26.04 --manifest.annotation org.opencontainers.image.title=ubuntu --manifest.annotation org.opencontainers.image.created=2026-06-10T03:30:57.931695+00:00 --manifest.annotation org.opencontainers.image.description=The Ubuntu container image maintained by Canonical
Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things.
It is the world's most popular operating system across public clouds and OpenStack clouds.
It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale.
Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
|
| umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/ubuntu:26.04 /home/buildd/rockcraft-ubuntu-79fcbede9d5522fcffb04b46daf93b5a/images/.temp_layer.control_data.9106.tar |
| ARG TARGETPLATFORM=linux/amd64 |
| ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global |
| ENV PATH=/home/agent/.local/bin:/usr/local/share/npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV NO_PROXY=localhost,127.0.0.1,::1,172.17.0.0/16 |
| ENV no_proxy=localhost,127.0.0.1,::1,172.17.0.0/16 |
| WORKDIR /home/agent/workspace |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -euxo pipefail
# Add Docker repos
apt-get update
apt-get install -yy --no-install-recommends \
ca-certificates \
curl \
gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
# buildkit |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -ex
# Remove base image user
userdel ubuntu || true
# Create non-root user
useradd --create-home --uid 1000 --shell /bin/bash agent
groupadd -f docker
usermod -aG sudo agent
usermod -aG docker agent
# Configure sudoers
mkdir /etc/sudoers.d
chmod 0755 /etc/sudoers.d
echo "agent ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/agent
echo "Defaults:%sudo env_keep += \"http_proxy https_proxy no_proxy HTTP_PROXY HTTPS_PROXY NO_PROXY SSL_CERT_FILE NODE_EXTRA_CA_CERTS REQUESTS_CA_BUNDLE JAVA_TOOL_OPTIONS\"" > /etc/sudoers.d/proxyconfig
# Create sandbox config
mkdir -p /home/agent/.docker/sandbox/locks
# Pre-create .local directories with correct ownership to prevent OCI runtime
# from creating them as root when mounting volumes at deep paths like
# /home/agent/.local/share/opencode (see docker/dash#914).
mkdir -p /home/agent/.local/share /home/agent/.local/state
chown -R agent:agent /home/agent
# Set up npm global package folder under /usr/local/share
mkdir -p /usr/local/share/npm-global
chown -R agent:agent /usr/local/share/npm-global
# buildkit |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c touch /etc/sandbox-persistent.sh && chmod 644 /etc/sandbox-persistent.sh && chown agent:agent /etc/sandbox-persistent.sh # buildkit |
| ENV BASH_ENV=/etc/sandbox-persistent.sh |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -ex
cat > /etc/profile.d/sandbox-persistent.sh << 'PROFILEEOF'
# Source the sandbox persistent environment file
if [ -f /etc/sandbox-persistent.sh ]; then
. /etc/sandbox-persistent.sh
fi
# Export BASH_ENV so non-interactive child shells also source the persistent env
export BASH_ENV=/etc/sandbox-persistent.sh
PROFILEEOF
chmod 644 /etc/profile.d/sandbox-persistent.sh
# buildkit |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -ex
# Create our prepend content
cat > /tmp/sandbox-bashrc-prepend << 'PREPEND'
# Docker Sandbox: Source persistent environment for interactive shells
if [ -f /etc/sandbox-persistent.sh ]; then
. /etc/sandbox-persistent.sh
fi
# Export BASH_ENV so non-interactive child shells also source the persistent env
export BASH_ENV=/etc/sandbox-persistent.sh
PREPEND
# Prepend our content to existing bashrc
cat /tmp/sandbox-bashrc-prepend /etc/bash.bashrc > /tmp/new-bashrc
mv /tmp/new-bashrc /etc/bash.bashrc
chmod 644 /etc/bash.bashrc
rm /tmp/sandbox-bashrc-prepend
# buildkit |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -ex
cat > /home/agent/.bashrc << 'BASHRCEOF'
# Source the sandbox persistent environment file
if [ -f /etc/sandbox-persistent.sh ]; then
. /etc/sandbox-persistent.sh
fi
# Export BASH_ENV for child non-interactive shells
export BASH_ENV=/etc/sandbox-persistent.sh
BASHRCEOF
chmod 644 /home/agent/.bashrc
chown agent:agent /home/agent/.bashrc
# buildkit |
| COPY /uv /usr/local/bin/uv # buildkit |
| COPY /out/clipboard-bridge /usr/local/bin/clipboard-bridge # buildkit |
| USER root |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -euxo pipefail
apt-get update
apt-get install -yy --no-install-recommends \
bubblewrap \
dnsutils \
docker-buildx-plugin \
docker-ce-cli \
docker-compose-plugin \
git \
gh \
jq \
less \
lsof \
make \
openssh-client \
procps \
psmisc \
ripgrep \
rsync \
socat \
sudo \
tini \
unzip
apt-get clean
rm -rf /var/lib/apt/lists/*
# buildkit |
| USER agent |
| ENTRYPOINT ["tini" "--"] |
| USER root |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -euxo pipefail
apt-get update
apt-get install -yy --no-install-recommends \
bc \
default-jdk-headless \
golang \
man-db \
nodejs \
npm \
python3 \
python3-pip
apt-get clean
rm -rf /var/lib/apt/lists/*
# buildkit |
| USER agent |
| USER root |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -euxo pipefail
apt-get update
apt-get install -yy --no-install-recommends \
containerd.io \
docker-ce
apt-get clean
rm -rf /var/lib/apt/lists/*
# buildkit |
| USER agent |
| RUN |1 TARGETPLATFORM=linux/amd64 /bin/sh -c set -ex
# Install Claude Code
curl -fsSL https://claude.ai/install.sh | bash
# buildkit |
| ENV CLAUDE_ENV_FILE=/etc/sandbox-persistent.sh |
| LABEL com.docker.sandboxes.start-docker=true |
| CMD ["claude" "--dangerously-skip-permissions"] |
| ARG NEOVIM_VERSION=v0.12.4 |
| ARG NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 |
| ARG AI_SANDBOX_REF=v1.11.0 |
| LABEL dev.mroberts.claude-sbx.neovim=v0.12.4 dev.mroberts.claude-sbx.ai-sandbox-ref=v1.11.0 |
| USER root |
| RUN |3 NEOVIM_VERSION=v0.12.4 NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 AI_SANDBOX_REF=v1.11.0 /bin/sh -c apt-get update && apt-get install -y --no-install-recommends jq tmux && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN |3 NEOVIM_VERSION=v0.12.4 NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 AI_SANDBOX_REF=v1.11.0 /bin/sh -c curl -fsSL -o /tmp/nvim.tar.gz "https://github.com/neovim/neovim/releases/download/${NEOVIM_VERSION}/nvim-linux-x86_64.tar.gz" && printf '%s /tmp/nvim.tar.gz\n' "${NEOVIM_SHA256}" | sha256sum -c - && tar -xzf /tmp/nvim.tar.gz -C /usr/local --strip-components=1 && rm -f /tmp/nvim.tar.gz && nvim --version | head -1 # buildkit |
| ADD --chmod=755 https://git.mroberts.dev/mroberts/ai-sandbox/raw/tag/v1.11.0/tasks/ai/workspace /usr/local/bin/ai-sbx-workspace # buildkit |
| RUN |3 NEOVIM_VERSION=v0.12.4 NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 AI_SANDBOX_REF=v1.11.0 /bin/sh -c bash -n /usr/local/bin/ai-sbx-workspace # buildkit |
| USER agent |
| COPY --chown=agent:agent claude/ /home/agent/.claude/ # buildkit |
| RUN |3 NEOVIM_VERSION=v0.12.4 NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 AI_SANDBOX_REF=v1.11.0 /bin/sh -c curl https://mise.run | sh && printf 'export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH"\n' >> /home/agent/.bashrc # buildkit |
| COPY --chown=agent:agent plugins.json /tmp/plugins.json # buildkit |
| COPY --chown=agent:agent scripts/install-plugins.sh /tmp/install-plugins.sh # buildkit |
| RUN |3 NEOVIM_VERSION=v0.12.4 NEOVIM_SHA256=012bf3fcac5ade43914df3f174668bf64d05e049a4f032a388c027b1ebd78628 AI_SANDBOX_REF=v1.11.0 /bin/sh -c /tmp/install-plugins.sh /tmp/plugins.json && rm -f /tmp/plugins.json /tmp/install-plugins.sh # buildkit |