Sandbox Docker OpenCode

Executer OpenCode depuis une sandbox Docker Dagu.

La commande non interactive d'OpenCode est opencode run. Placez le binaire opencode et les credentials provider dans un runner container, puis appelez provider: opencode depuis harness.run.

Etape OpenCode dans Docker
steps:
  - id: opencode_review
    action: harness.run
    container:
      image: dagu-opencode-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
        - ${HOME}/.local/share/opencode:/root/.local/share/opencode:ro
    with:
      provider: opencode
      model: anthropic/claude-sonnet-4-5
      prompt: |
        Review this repository and summarize the highest-risk issues.

Installe OpenCode avec le package npm opencode-ai.

Verifie opencode --version via Dagu avant les appels modele.

Peut monter ~/.local/share/opencode/auth.json pour les providers configures.

Peut aussi utiliser des variables d'environnement provider dans container.env.

01

Image runner

Installez OpenCode dans l'image runner et verifiez le binaire au build. L'entrypoint vide laisse Dagu controler la commande.

Dockerfile
FROM node:22-bookworm-slim

RUN apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates git bash \
  && rm -rf /var/lib/apt/lists/*

RUN npm install -g opencode-ai
RUN opencode --version

WORKDIR /workspace
ENTRYPOINT []
CMD ["bash"]
02

Smoke test

Avant de monter les credentials, lancez un shell provider qui affiche la version OpenCode et le chemin du binaire dans le container.

DAG de verification de version
type: graph

harnesses:
  shell:
    binary: sh
    prefix_args:
      - -c
    prompt_mode: arg

steps:
  - id: opencode_version
    action: harness.run
    container:
      image: dagu-opencode-runner:local
      pull_policy: never
    with:
      provider: shell
      prompt: |
        set -eu
        opencode --version
        command -v opencode
03

Credentials

OpenCode stocke les logins provider dans ~/.local/share/opencode/auth.json et lit aussi les cles provider depuis l'environnement ou un .env projet. Montez ou passez seulement ce que le provider choisi exige.

04

Nom de modele

Les noms de modele OpenCode ont la forme provider/model. L'exemple utilise anthropic/claude-sonnet-4-5; remplacez-le par un modele disponible dans votre configuration OpenCode.