Files
opencode/github
2025-07-25 17:34:47 -04:00
..
2025-07-25 17:34:47 -04:00
2025-07-25 17:34:47 -04:00
2025-07-25 17:34:47 -04:00

opencode GitHub Action

A GitHub Action that integrates opencode directly into your GitHub workflow.

Start your comment with hey opencode, and opencode will take action via your GitHub Actions runner.

Features

Triage and explain issues

hey opencode, explain this issue

Fix or implement issues - opencode will create a PR with the changes.

hi opencode, fix this
  • Review PRs and make changes
Delete the attachment from S3 when the note is removed @opencode-agent

Installation

Run the following command in the terminal from your GitHub repo:

opencode github install

This will walk you through installing the GitHub app, configuring the workflow, and setting up secrets.

Manual Setup

  1. Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository.
  2. Add the following workflow file to .github/workflows/opencode.yml in your repo. Set the appropriate model and required API keys in env.
name: opencode

on:
  issue_comment:
    types: [created]

jobs:
  opencode:
    if: |
      startsWith(github.event.comment.body, 'opencode') ||
      startsWith(github.event.comment.body, 'hi opencode') ||
      startsWith(github.event.comment.body, 'hey opencode') ||
      contains(github.event.comment.body, '@opencode-agent')
    runs-on: ubuntu-latest
    permissions:
      id-token: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run opencode
        uses: sst/opencode/github@latest
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        with:
          model: anthropic/claude-sonnet-4-20250514
  1. Store the API keys in secrets. In your organization or project settings, expand Secrets and variables on the left and select Actions. Add the required API keys.

Support

This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/sst/opencode/issues.

Development

To test locally:

  1. Navigate to a test repo (e.g. hello-world):
cd hello-world
  1. Run:
MODEL=anthropic/claude-sonnet-4-20250514 \
  ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \
  GITHUB_RUN_ID=dummy \
  bun /path/to/opencode/packages/opencode/src/index.ts github run \
  --token 'github_pat_1234567890' \
  --event '{"eventName":"issue_comment",...}'
  • MODEL: The model used by opencode. Same as the MODEL defined in the GitHub workflow.
  • ANTHROPIC_API_KEY: Your model provider API key. Same as the keys defined in the GitHub workflow.
  • GITHUB_RUN_ID: Dummy value to emulate GitHub action environment.
  • /path/to/opencode: Path to your cloned opencode repo. bun /path/to/opencode/packages/opencode/src/index.ts runs your local version of opencode.
  • --token: A GitHub persontal access token. This token is used to verify you have admin or write access to the test repo. Generate a token here.
  • --event: Mock GitHub event payload (see templates below).

Issue comment event

  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'

Replace:

  • "owner":"sst" with repo owner
  • "repo":"hello-world" with repo name
  • "actor":"fwang" with the GitHub username of commentor
  • "number":4 with the GitHub issue id
  • "body":"hey opencode, summarize thread" with comment body

Issue comment with image attachment.

  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image ![Image](https://github.com/user-attachments/assets/xxxxxxxx)"}}}'

Replace the image URL https://github.com/user-attachments/assets/xxxxxxxx with a valid GitHub attachment (you can generate one by commenting with an image in any issue).

PR comment event

  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'