openAgent
gitlabThe open source UNIVERSAL agent.
clone
https://gitlab.com/bitzzdev/openAgent.gitAIagentautomationopen-sourceuniversal-agent
# opencode GitHub ActionA GitHub Action that integrates [opencode](https://opencode.ai) directly into your GitHub workflow.Mention `/opencode` in your comment, and opencode will execute tasks within your GitHub Actions runner.## Features#### Explain an issueLeave 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 issueLeave 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 changesLeave 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```#### Review specific code linesLeave a comment directly on code lines in the PR's "Files" tab. opencode will automatically detect the file, line numbers, and diff context to provide precise responses.```[Comment on specific lines in Files tab]/oc add error handling here```When commenting on specific lines, opencode receives:- The exact file being reviewed- The specific lines of code- The surrounding diff context- Line number informationThis allows for more targeted requests without needing to specify file paths or line numbers manually.## InstallationRun the following command in the terminal from your GitHub repo:```bashopencode github install```This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.### Manual Setup1. 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`.```ymlname: opencodeon:issue_comment:types: [created]pull_request_review_comment:types: [created]jobs:opencode:if: |contains(github.event.comment.body, '/oc') ||contains(github.event.comment.body, '/opencode')runs-on: ubuntu-latestpermissions:id-token: writesteps:- name: Checkout repositoryuses: actions/checkout@v6with:fetch-depth: 1persist-credentials: false- name: Run opencodeuses: anomalyco/opencode/github@latestenv:ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}with:model: anthropic/claude-sonnet-4-20250514use_github_token: true```3. 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.## SupportThis is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/anomalyco/opencode/issues.## DevelopmentTo test locally:1. Navigate to a test repo (e.g. `hello-world`):```bashcd hello-world```2. Run:```bashMODEL=anthropic/claude-sonnet-4-20250514 \ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \GITHUB_RUN_ID=dummy \MOCK_TOKEN=github_pat_1234567890 \MOCK_EVENT='{"eventName":"issue_comment",...}' \bun /path/to/opencode/github/index.ts```- `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.- `MOCK_TOKEN`: A GitHub personal access token. This token is used to verify you have `admin` or `write` access to the test repo. Generate a token [here](https://github.com/settings/personal-access-tokens).- `MOCK_EVENT`: Mock GitHub event payload (see templates below).- `/path/to/opencode`: Path to your cloned opencode repo. `bun /path/to/opencode/github/index.ts` runs your local version of `opencode`.### Issue comment event```MOCK_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 commenter- `"number":4` with the GitHub issue id- `"body":"hey opencode, summarize thread"` with comment body### Issue comment with image attachment.```MOCK_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```MOCK_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"}}}'```### PR review comment event```MOCK_EVENT='{"eventName":"pull_request_review_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"pull_request":{"number":7},"comment":{"id":1,"body":"hey opencode, add error handling","path":"src/components/Button.tsx","diff_hunk":"@@ -45,8 +45,11 @@\n- const handleClick = () => {\n- console.log('clicked')\n+ const handleClick = useCallback(() => {\n+ console.log('clicked')\n+ doSomething()\n+ }, [doSomething])","line":47,"original_line":45,"position":10,"commit_id":"abc123","original_commit_id":"def456"}}}'```