diff --git a/Dockerfile.copilot b/Dockerfile.copilot new file mode 100644 index 00000000..a20a2972 --- /dev/null +++ b/Dockerfile.copilot @@ -0,0 +1,33 @@ +# --- Build stage --- +FROM rust:1-bookworm AS builder +WORKDIR /build +COPY Cargo.toml Cargo.lock ./ +RUN mkdir src && echo 'fn main() {}' > src/main.rs && cargo build --release && rm -rf src +COPY src/ src/ +RUN touch src/main.rs && cargo build --release + +# --- Runtime stage --- +FROM node:22-bookworm-slim +RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && rm -rf /var/lib/apt/lists/* + +# Install GitHub Copilot CLI (native ACP support via --acp) +RUN npm install -g @github/copilot@1 --retry 3 + +# Install gh CLI (used by Copilot for GitHub integration) +RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \ + -o /usr/share/keyrings/githubcli-archive-keyring.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ + > /etc/apt/sources.list.d/github-cli.list && \ + apt-get update && apt-get install -y --no-install-recommends gh && \ + rm -rf /var/lib/apt/lists/* + +ENV HOME=/home/node +WORKDIR /home/node + +COPY --from=builder --chown=node:node /build/target/release/openab /usr/local/bin/openab + +USER node +HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ + CMD pgrep -x openab || exit 1 +ENTRYPOINT ["openab"] +CMD ["/etc/openab/config.toml"] diff --git a/README.md b/README.md index 772f5f72..ec55ac3d 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ Supports Kiro CLI, Claude Code, Codex, Gemini, and any ACP-compatible CLI. | `codex` | Codex | [@zed-industries/codex-acp](https://github.com/zed-industries/codex-acp) | `codex login --device-auth` | | `claude` | Claude Code | [@agentclientprotocol/claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp) | `claude setup-token` | | `gemini` | Gemini CLI | Native `gemini --acp` | Google OAuth or `GEMINI_API_KEY` | +| `copilot` | GitHub Copilot CLI | Native `copilot --acp` | `gh auth login` (GitHub OAuth) | ### Helm Install (recommended) @@ -116,6 +117,16 @@ helm install openab openab/openab \ --set agents.claude.command=claude-agent-acp \ --set agents.claude.workingDir=/home/node +# Copilot only (native --acp mode) +helm install openab openab/openab \ + --set agents.kiro.enabled=false \ + --set agents.copilot.discord.botToken="$DISCORD_BOT_TOKEN" \ + --set-string 'agents.copilot.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ + --set agents.copilot.image=ghcr.io/openabdev/openab-copilot:latest \ + --set agents.copilot.command=copilot \ + --set 'agents.copilot.args={--acp}' \ + --set agents.copilot.workingDir=/home/node + # Multi-agent (kiro + claude in one release) helm install openab openab/openab \ --set agents.kiro.discord.botToken="$KIRO_BOT_TOKEN" \ @@ -158,6 +169,12 @@ command = "gemini" args = ["--acp"] working_dir = "/home/node" env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" } + +# GitHub Copilot (native ACP — requires copilot CLI in PATH) +[agent] +command = "copilot" +args = ["--acp"] +working_dir = "/home/node" ``` ## Configuration Reference