INIclaw / Dockerfile
Nitish kumar
Upload folder using huggingface_hub
0722e92 verified
Raw
History Blame Contribute Delete
2.63 kB
# IniClaw sandbox image — OpenClaw + IniClaw plugin inside OpenShell
FROM node:22-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv \
curl git ca-certificates \
iproute2 \
&& rm -rf /var/lib/apt/lists/*
# Create sandbox user (matches OpenShell convention)
RUN groupadd -r sandbox && useradd -r -g sandbox -d /sandbox -s /bin/bash sandbox \
&& mkdir -p /sandbox/.openclaw /sandbox/.iniclaw \
&& chown -R sandbox:sandbox /sandbox
# Install OpenClaw CLI
RUN npm install -g openclaw@2026.3.11
# Install PyYAML for blueprint runner
RUN pip3 install --break-system-packages pyyaml
# Copy our plugin and blueprint into the sandbox
COPY iniclaw/dist/ /opt/iniclaw/dist/
COPY iniclaw/openclaw.plugin.json /opt/iniclaw/
COPY iniclaw/package.json /opt/iniclaw/
COPY iniclaw-blueprint/ /opt/iniclaw-blueprint/
# Install runtime dependencies only (no devDependencies, no build step)
WORKDIR /opt/iniclaw
RUN npm install --omit=dev
# Set up blueprint for local resolution
RUN mkdir -p /sandbox/.iniclaw/blueprints/0.1.0 \
&& cp -r /opt/iniclaw-blueprint/* /sandbox/.iniclaw/blueprints/0.1.0/
# Copy startup script
COPY scripts/iniclaw-start.sh /usr/local/bin/iniclaw-start
RUN chmod +x /usr/local/bin/iniclaw-start
WORKDIR /sandbox
USER sandbox
# Pre-create OpenClaw directories
RUN mkdir -p /sandbox/.openclaw/agents/main/agent \
&& chmod 700 /sandbox/.openclaw
# Write openclaw.json: set nvidia as default provider, route through
# inference.local (OpenShell gateway proxy). No API key needed here —
# openshell injects credentials via the provider configuration.
RUN python3 -c "\
import json, os; \
config = { \
'agents': {'defaults': {'model': {'primary': 'nvidia/nemotron-3-super-120b-a12b'}}}, \
'models': {'mode': 'merge', 'providers': {'nvidia': { \
'baseUrl': 'https://inference.local/v1', \
'apiKey': 'openshell-managed', \
'api': 'openai-completions', \
'models': [{'id': 'nemotron-3-super-120b-a12b', 'name': 'NVIDIA Nemotron 3 Super 120B', 'reasoning': False, 'input': ['text'], 'cost': {'input': 0, 'output': 0, 'cacheRead': 0, 'cacheWrite': 0}, 'contextWindow': 131072, 'maxTokens': 4096}] \
}}} \
}; \
path = os.path.expanduser('~/.openclaw/openclaw.json'); \
json.dump(config, open(path, 'w'), indent=2); \
os.chmod(path, 0o600)"
# Install IniClaw plugin into OpenClaw
RUN openclaw doctor --fix > /dev/null 2>&1 || true \
&& openclaw plugins install /opt/iniclaw > /dev/null 2>&1 || true
ENTRYPOINT ["/bin/bash"]
CMD []