autojanet/container/Dockerfile
Zoë cf8832c79c feat: initial platform scaffold
- 19 agent definition files with role, responsibilities, secrets, tools, constraints
- k8s manifests: namespace, ServiceAccounts, RBAC, NetworkPolicies, Job template, dispatcher CronJob
- dispatcher: Python CronJob that claims Vikunja Todo tasks and spawns agent Jobs
- container: Dockerfile + entrypoint bootstrapping OpenBao auth and opencode runtime
- Separate Dockerfile.dispatcher for the lightweight dispatcher image
2026-05-30 14:19:09 -07:00

75 lines
2.1 KiB
Docker

# AutoJanet Agent Container
#
# Single image used for all 19 agent roles.
# Role is determined at runtime via AGENT_ROLE env var.
#
# Build:
# docker build -t registry.ctz.fyi/autojanet/agent:latest .
#
# The image bundles:
# - opencode CLI (Node.js)
# - Python entrypoint + dependencies
# - All 19 agent .md files
# - Common tools: git, curl, kubectl, helm
FROM node:22-bookworm-slim AS opencode-builder
# Install opencode globally
RUN npm install -g opencode-ai@latest
# ── Final image ───────────────────────────────────────────────────────────────
FROM debian:bookworm-slim
ARG KUBECTL_VERSION=v1.31.0
ARG HELM_VERSION=v3.16.0
# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
git \
python3 \
python3-pip \
python3-venv \
jq \
&& rm -rf /var/lib/apt/lists/*
# kubectl
RUN curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
-o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl
# helm
RUN curl -fsSL "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" \
| tar -xz -C /usr/local/bin --strip-components=1 linux-amd64/helm
# Copy opencode from builder
COPY --from=opencode-builder /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=opencode-builder /usr/local/bin/node /usr/local/bin/node
RUN ln -sf /usr/local/lib/node_modules/opencode-ai/cli.js /usr/local/bin/opencode && \
chmod +x /usr/local/bin/opencode
# Create agent user
RUN useradd -m -u 1000 -s /bin/bash agent
WORKDIR /app
# Python deps
COPY container/requirements.txt /app/requirements.txt
RUN python3 -m venv /app/venv && \
/app/venv/bin/pip install --no-cache-dir -r /app/requirements.txt
# Agent entrypoint
COPY container/entrypoint.py /app/entrypoint.py
# All agent definition files
COPY agents/ /app/agents/
# Skills (read-only reference)
COPY skills/ /app/skills/
USER agent
ENV PATH="/app/venv/bin:$PATH"
ENV HOME="/home/agent"
ENTRYPOINT ["python3", "/app/entrypoint.py"]