Skip to content

Commit b302f55

Browse files
Trixieclaude
andcommitted
clawk-dev-plus: clawk-dev + docker/compose/glab/firecrawl-cli
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 parents  commit b302f55

3 files changed

Lines changed: 96 additions & 0 deletions

File tree

.github/workflows/publish.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: publish
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- Dockerfile
8+
- .github/workflows/publish.yml
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
packages: write
14+
15+
jobs:
16+
build-and-push:
17+
runs-on: ubuntu-24.04-arm
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- uses: docker/login-action@v3
22+
with:
23+
registry: ghcr.io
24+
username: ${{ github.actor }}
25+
password: ${{ secrets.GITHUB_TOKEN }}
26+
27+
- name: Build (linux/arm64, native)
28+
run: |
29+
docker build \
30+
-t ghcr.io/gitthass/clawk-dev-plus:v0 \
31+
-t ghcr.io/gitthass/clawk-dev-plus:latest \
32+
.
33+
34+
- name: Push
35+
run: |
36+
docker push ghcr.io/gitthass/clawk-dev-plus:v0
37+
docker push ghcr.io/gitthass/clawk-dev-plus:latest

Dockerfile

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# clawk-dev-plus — ghcr.io/clawkwork/clawk-dev + the system tools our
2+
# sandboxes need present after EVERY boot (clawk re-clones the rootfs
3+
# from this image at each `up`; only mounts persist).
4+
#
5+
# Contract inherited from the base (see its Dockerfile): no user is
6+
# created here (clawk-init creates `agent` at boot with the host
7+
# uid/gid), no init/sshd, CMD/ENTRYPOINT ignored. Filesystem + Env only.
8+
FROM ghcr.io/clawkwork/clawk-dev:v0
9+
10+
# Docker engine + CLI. dockerd is started per-boot by clawk.mod's on-up
11+
# hook (guest init is clawk-init, not systemd — no service units run).
12+
RUN apt-get update && apt-get install -y --no-install-recommends docker.io \
13+
&& rm -rf /var/lib/apt/lists/*
14+
15+
# Compose v2 plugin (static binary; bump ARG to update)
16+
ARG COMPOSE_VERSION=v2.39.1
17+
RUN mkdir -p /usr/local/lib/docker/cli-plugins \
18+
&& curl -fsSL https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-aarch64 \
19+
-o /usr/local/lib/docker/cli-plugins/docker-compose \
20+
&& chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
21+
22+
# GitLab CLI (arm64 — the guest is an Apple-silicon arm64 VM)
23+
ARG GLAB_VERSION=1.109.0
24+
RUN curl -fsSL https://gitlab.com/gitlab-org/cli/-/releases/v${GLAB_VERSION}/downloads/glab_${GLAB_VERSION}_linux_arm64.deb \
25+
-o /tmp/glab.deb && dpkg -i /tmp/glab.deb && rm /tmp/glab.deb
26+
27+
# Firecrawl CLI (the firecrawl plugin skill drives it; reads FIRECRAWL_API_KEY)
28+
RUN npm install -g firecrawl-cli@1.8.0

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# clawk-dev-plus
2+
3+
Custom rootfs image for [clawk](https://github.com/clawkwork/clawk)
4+
sandboxes: the official `clawk-dev` base plus the system tools we want
5+
present after **every** boot — clawk re-clones the rootfs from the image
6+
at each `up`, so anything not baked here (or on a mount) vanishes at
7+
reboot.
8+
9+
Adds on top of `ghcr.io/clawkwork/clawk-dev:v0`:
10+
11+
- `docker.io` (engine + CLI; dockerd is started per-boot by the
12+
`clawk.mod` `on up` hook)
13+
- Docker Compose v2 plugin
14+
- `glab` (GitLab CLI, arm64)
15+
- `firecrawl-cli`
16+
17+
## Use
18+
19+
vm (
20+
image ghcr.io/gitthass/clawk-dev-plus:v0
21+
)
22+
23+
## Update flow
24+
25+
Edit the `Dockerfile` (bump an ARG, add a tool), push to `main` — the
26+
workflow builds on GitHub's native arm64 runner and republishes `:v0` +
27+
`:latest`. clawk re-resolves the tag at every sandbox boot, so the change
28+
reaches all sandboxes on their next `up`. Pin a digest in `clawk.mod` if a
29+
sandbox must stay frozen.
30+
31+
Companion docs: `SANDBOX-SETUP.md` in gitthass/clawkvscodium.

0 commit comments

Comments
 (0)