feat: add tool-images directory with Dockerfiles for all base tool types

- Create tool-images/ directory with organized Dockerfile templates
- Add base.dockerfile with common dev tools (git, nvim, ranger, tmux, node)
- Add code-server.dockerfile with VS Code in browser
- Add jupyter.dockerfile with Jupyter Lab
- Add opencode.dockerfile with OpenCode agent
- Add pi-agent.dockerfile with Pi Coding Agent (pi.dev)
- All images include: git, neovim, ranger, tmux, htop, tree, jq, Node.js 20
- Add README with usage instructions
This commit is contained in:
Alex Blank
2026-05-27 15:51:43 +02:00
parent 23485833d8
commit 44dd80cb58
6 changed files with 232 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
# Tool Images
This directory contains Dockerfile templates for the base tool types used in Headquarter.
## Available Images
| File | Tool | Description |
|------|------|-------------|
| `base.dockerfile` | - | Common base with git, nvim, ranger, tmux, node |
| `code-server.dockerfile` | VS Code | Browser-based VS Code with extra tools |
| `jupyter.dockerfile` | Jupyter | Jupyter Lab/Notebook with extra tools |
| `opencode.dockerfile` | OpenCode | OpenCode agent server |
| `pi-agent.dockerfile` | Pi Agent | Pi coding agent with full terminal setup |
## Usage
When creating a tool type in the Tool Workshop, you can reference these Dockerfiles:
1. Copy the contents of the desired `.dockerfile`
2. Paste into the "Dockerfile Template" field
3. Set `definition_type` to `dockerfile`
## Building Locally
To test an image locally:
```bash
cd tool-images
docker build -f pi-agent.dockerfile -t pi-agent:latest .
docker run -it pi-agent:latest
```
## Customizing
All images include:
- **git** - Version control
- **neovim** - Terminal editor
- **ranger** - Terminal file manager
- **tmux** - Terminal multiplexer
- **htop** - Process viewer
- **tree** - Directory tree
- **jq** - JSON processor
- **Node.js 20** - For npm-based tools
The `pi-agent` image additionally includes the [Pi Coding Agent](https://pi.dev/) for AI-assisted development.
## Adding New Images
1. Create a new `.dockerfile` in this directory
2. Use `base.dockerfile` as a starting point if applicable
3. Document it in the table above
4. Update the tool type in the database via the Tool Workshop
+36
View File
@@ -0,0 +1,36 @@
# Base development image with common tools
FROM ubuntu:24.04
# Prevent interactive prompts during apt install
ENV DEBIAN_FRONTEND=noninteractive
# Install base tools
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
neovim \
ranger \
tmux \
htop \
tree \
jq \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Create a non-root user
RUN useradd -m -s /bin/bash user
WORKDIR /home/user
# Install Node.js (needed for pi and many dev tools)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Set up git configuration defaults
RUN git config --global init.defaultBranch main \
&& git config --global user.email "dev@headquarter.local" \
&& git config --global user.name "Developer"
USER user
CMD ["/bin/bash"]
+28
View File
@@ -0,0 +1,28 @@
# VS Code in browser
FROM lscr.io/linuxserver/code-server:latest
USER root
# Install additional tools
RUN apt-get update && apt-get install -y \
git \
neovim \
ranger \
tmux \
htop \
tree \
jq \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Set up git
RUN git config --global init.defaultBranch main
# Code-server runs as abc user by default
USER abc
EXPOSE 8443
+23
View File
@@ -0,0 +1,23 @@
# Jupyter Notebook/Lab
FROM jupyter/scipy-notebook:latest
USER root
# Install additional tools
RUN apt-get update && apt-get install -y \
git \
neovim \
ranger \
tmux \
htop \
tree \
jq \
&& rm -rf /var/lib/apt/lists/*
# Set up git
RUN git config --global init.defaultBranch main
# Switch back to jovyan user (default for scipy-notebook)
USER ${NB_UID}
EXPOSE 8888
+40
View File
@@ -0,0 +1,40 @@
# OpenCode agent environment
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
# Install base dependencies
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
neovim \
ranger \
tmux \
htop \
tree \
jq \
ca-certificates \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Install OpenCode
RUN npm install -g opencode
# Create non-root user
RUN useradd -m -s /bin/bash user
WORKDIR /home/user
# Set up git
RUN git config --global init.defaultBranch main
USER user
EXPOSE 3000
CMD ["opencode", "server"]
+53
View File
@@ -0,0 +1,53 @@
# Pi Coding Agent - Terminal-based coding harness
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
# Install base dependencies
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
neovim \
ranger \
tmux \
htop \
tree \
jq \
ca-certificates \
python3 \
python3-pip \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js (required for Pi)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Install Pi Coding Agent globally
RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent
# Create non-root user
RUN useradd -m -s /bin/bash user
WORKDIR /home/user
# Set up git
RUN git config --global init.defaultBranch main \
&& git config --global user.email "dev@headquarter.local" \
&& git config --global user.name "Developer"
# Create default tmux config
RUN echo 'set -g mouse on\nset -g default-terminal "screen-256color"' > /home/user/.tmux.conf
# Create default ranger config
RUN mkdir -p /home/user/.config/ranger \
&& echo 'set preview_files true\nset use_preview_script true' > /home/user/.config/ranger/rc.conf
# Set up Pi config directory
RUN mkdir -p /home/user/.pi/agent
USER user
# Default to bash (Pi is invoked manually via `pi` command)
CMD ["/bin/bash"]