Forgejo Action that runs opencode on /opencode mentions in issues and PRs, backed by NOMYO AI or any OpenAI-compatible model. https://www.nomyo.ai/
Find a file
2026-05-11 15:20:46 +02:00
node_modules initial commit 2026-05-11 11:18:49 +02:00
.gitignore fix: update workflow 2026-05-11 15:09:43 +02:00
action.yml fix: update workflow 2026-05-11 15:09:43 +02:00
bun.lock initial commit 2026-05-11 11:18:49 +02:00
index.ts feat: add nomyo inference 2026-05-11 13:09:04 +02:00
package.json initial commit 2026-05-11 11:18:49 +02:00
README.md README.md aktualisiert 2026-05-11 11:21:59 +02:00
tsconfig.json initial commit 2026-05-11 11:18:49 +02:00

opencode Forgejo Action

A Forgejo Action that integrates opencode directly into your Forgejo Actions workflow.

Mention /opencode or /oc in your comment, and opencode will execute tasks within your Forgejo Actions runner.

Features

Explain an issue

Leave the following comment on a Forgejo issue. opencode will read the entire thread, including all comments, and reply with a clear explanation.

/opencode explain this issue

Fix an issue

Leave the following comment on a Forgejo issue. opencode will create a new branch, implement the changes, and open a merge request with the changes.

/opencode fix this

Review MRs and make changes

Leave the following comment on a Forgejo MR. opencode will implement the requested change and commit it to the same MR.

Delete the attachment from S3 when the note is removed /oc

Review specific code lines

Leave a comment directly on code lines in the MR'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 information

Installation

Quick setup

Add the following workflow file to .forgejo/workflows/opencode.yml in your repo.

Manual setup

  1. Create a PAT

    Go to your Forgejo instance → Settings → Applications → Generate Token. Give it repo scope (contents, pull-requests, issues).

  2. Add the PAT as a secret

    Go to your repository → Settings → Actions → Secrets → New Repository Secret. Add:

    Secret name Value
    FORGEJO_TOKEN Your PAT
    NOMYO_API_KEY Your Nomyo API key
  3. Add the workflow file

    Create .forgejo/workflows/opencode.yml:

    name: opencode
    on:
      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-latest
        permissions:
          id-token: write
          contents: write
          pull-requests: write
          issues: write
        steps:
          - uses: actions/checkout@v6
            with:
              fetch-depth: 1
              persist-credentials: false
    
          - name: Run opencode
            uses: bitfreedom.net/code/nomyo-ai/actions@v1
            env:
              NOMYO_API_KEY: ${{ secrets.NOMYO_API_KEY }}
            with:
              model: anthropic/claude-sonnet-4-20250514
              forgejo_api_url: bitfreedom.net/code/
              forgejo_token: ${{ secrets.FORGEJO_TOKEN }}
    
  4. Set the model

    Replace anthropic/claude-sonnet-4-20250514 with your preferred model format: provider/model.

Configuration

Input Required Description
model Yes Model to use (format: provider/model)
forgejo_api_url No Forgejo instance API URL (e.g., https://git.example.com). Defaults to https://git.bitfreedom.at
forgejo_token No Forgejo PAT with repo scope
agent No Agent to use (must be a primary agent)
share No Share the opencode session (defaults to true for public repos)
prompt No Custom prompt to override default behavior
mentions No Comma-separated trigger phrases. Defaults to /opencode,/oc
variant No Model variant (e.g., high, max, minimal)

Supported Events

Event Type Triggered By Details
issue_comment Comment on an issue or MR Mention /opencode or /oc in your comment
pull_request_review_comment Comment on specific PR/MR code lines Mention /opencode or /oc when reviewing code

Examples

Explain an issue

/opencode explain this issue

Fix an issue

/opencode fix this

Review MRs

/opencode review this merge request

Development

To test locally:

  1. Set up environment:
export FORGEJO_API_URL="https://git.your-instance.com"
export FORGEJO_TOKEN="your-pat-here"
export MODEL="anthropic/claude-sonnet-4-20250514"
export GITHUB_RUN_ID="test"
export GITHUB_REPOSITORY="owner/repo"
export GITHUB_ACTOR="testuser"
export GITHUB_EVENT_NAME="issue_comment"
export GITHUB_EVENT_PATH="/tmp/event.json"
  1. Create a mock event payload in /tmp/event.json:
{
  "eventName": "issue_comment",
  "repo": { "owner": "owner", "repo": "repo" },
  "actor": "testuser",
  "payload": {
    "issue": { "number": 1, "index": 1, "title": "Test issue", "body": "Test body" },
    "comment": { "id": 1, "body": "/opencode fix this" }
  }
}
  1. Run:
bun index.ts

License

MIT