Skip to content

feat: add ggcoder ACP adapter and Dockerfile#770

Closed
Joseph19820124 wants to merge 2 commits into
openabdev:mainfrom
Joseph19820124:feat/ggcoder-acp
Closed

feat: add ggcoder ACP adapter and Dockerfile#770
Joseph19820124 wants to merge 2 commits into
openabdev:mainfrom
Joseph19820124:feat/ggcoder-acp

Conversation

@Joseph19820124
Copy link
Copy Markdown
Contributor

Summary

Integrates @kenkaiiii/ggcoder into OpenAB by adding a minimal ACP adapter, following the same pattern as the Codex integration.

ggcoder does not support ACP natively — it exposes a custom --rpc JSON-over-stdio protocol. This PR adds a thin Node.js adapter (ggcoder-acp) that bridges OpenAB's JSON-RPC 2.0 ACP protocol to ggcoder's --rpc mode.

Changes

File Description
ggcoder-acp/ ACP adapter package — handles initialize, session/new, session/load, session/prompt, session/set_config_option; streams text_delta and tool_call events as ACP notifications
Dockerfile.ggcoder Multi-stage image (Rust builder + node:22-bookworm-slim) — installs @kenkaiiii/ggcoder and ggcoder-acp globally; follows Dockerfile.codex pattern
docs/ggcoder.md Setup guide: Docker, Helm, manual config.toml, OAuth + API key auth, model switching, troubleshooting
charts/openab/values.yaml Adds commented-out ggcoder agent block alongside existing opencode/cursor examples

Usage

config.toml

[agent]
command = "ggcoder-acp"
args    = []
working_dir = "/home/node"

Helm

helm install openab openab/openab \
  --set agents.kiro.enabled=false \
  --set agents.ggcoder.discord.enabled=true \
  --set agents.ggcoder.discord.botToken="$DISCORD_BOT_TOKEN" \
  --set-string 'agents.ggcoder.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \
  --set agents.ggcoder.image=ghcr.io/openabdev/openab-ggcoder:latest \
  --set agents.ggcoder.command=ggcoder-acp \
  --set agents.ggcoder.workingDir=/home/node

Protocol mapping

ACP method ggcoder --rpc command
initialize (static reply, no ggcoder call)
session/new new_session
session/load new_session (ggcoder has no persistent load)
session/prompt prompt + stream text_delta/tool_call_* events
session/set_config_option switch_model (for model/provider)

Tested

  • Adapter starts and responds to initialize correctly
  • session/new spawns ggcoder and returns a session ID
  • session/prompt streams text deltas as session/textDelta ACP notifications

@Joseph19820124 Joseph19820124 requested a review from thepagent as a code owner May 7, 2026 17:34
@github-actions github-actions Bot added the closing-soon PR missing Discord Discussion URL — will auto-close in 3 days label May 7, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

⚠️ This PR is missing a Discord Discussion URL in the body.

All PRs must reference a prior Discord discussion to ensure community alignment before implementation.

Please edit the PR description to include a link like:

Discord Discussion URL: https://discord.com/channels/...

This PR will be automatically closed in 3 days if the link is not added.

@github-actions github-actions Bot added the pending-screening PR awaiting automated screening label May 7, 2026
- Add Dockerfile.ggcoder (node:22 + @kenkaiiii/ggcoder)
- Add ggcoder example to values.yaml and NOTES.txt auth hint
- Add ggcoder to CI build/smoke-test/pr-preview matrices
- Add docs/ggcoder.md with install and auth instructions
- Add ggcoder row to README agents table
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

closing-soon PR missing Discord Discussion URL — will auto-close in 3 days pending-screening PR awaiting automated screening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant