.. | ||
script | ||
action.yml | ||
README.md |
opencode GitHub Action
A GitHub Action that integrates opencode directly into your GitHub workflow.
Mention /opencode
in your comment, and opencode will execute tasks within your GitHub Actions runner.
Features
Explain an issues
Leave the following comment on a GitHub issue. opencode
will read the entire thread, including all comments, and reply with a clear explanation.
/opencode explain this issue
Fix an issues
Leave the following comment on a GitHub issue. opencode will create a new branch, implement the changes, and open a PR with the changes.
/opencode fix this
Review PRs and make changes
Leave the following comment on a GitHub PR. opencode will implement the requested change and commit it to the same PR.
Delete the attachment from S3 when the note is removed /oc
Installation
Run the following command in the terminal from your GitHub repo:
opencode github install
This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
Manual Setup
-
Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository.
-
Add the following workflow file to
.github/workflows/opencode.yml
in your repo. Set the appropriatemodel
and required API keys inenv
.name: opencode on: issue_comment: types: [created] jobs: opencode: if: | contains(github.event.comment.body, '/oc') || contains(github.event.comment.body, '/opencode') 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
-
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:
-
Navigate to a test repo (e.g.
hello-world
):cd hello-world
-
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 theMODEL
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 ofopencode
.--token
: A GitHub persontal access token. This token is used to verify you haveadmin
orwrite
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 "}}}'
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"}}}'