Skip to content

GitHub

Use OpenGPT0 in GitHub issues and pull-requests.

OpenGPT0 integrates with your GitHub workflow. Mention /opengpt0 in your comment, and OpenGPT0 will execute tasks within your GitHub Actions runner.


Features

  • Triage issues: Ask OpenGPT0 to look into an issue and explain it to you.
  • Fix and implement: Ask OpenGPT0 to fix an issue or implement a feature. And it will work in a new branch and submits a PR with all the changes.
  • Secure: OpenGPT0 runs inside your GitHub’s runners.

Installation

Run the following command in a project that is in a GitHub repo:

Terminal window
opengpt0 github install

This will walk you through installing the GitHub app, creating the workflow, and preparing the provider runtime.


Manual Setup

Or you can set it up manually.

  1. Install the GitHub app

    Head over to github.com/apps/opengpt0-agent. Make sure it’s installed on the target repository.

  2. Add the workflow

    Add the following workflow file to .github/workflows/opengpt0.yml in your repo. This example uses Ollama on the runner. The Browser provider requires an authenticated ChatGPT browser profile, so it is better suited to local, interactive use than GitHub-hosted CI.

    .github/workflows/opengpt0.yml
    name: opengpt0
    on:
    issue_comment:
    types: [created]
    pull_request_review_comment:
    types: [created]
    jobs:
    opengpt0:
    if: |
    contains(github.event.comment.body, '/opengpt0')
    runs-on: ubuntu-latest
    permissions:
    id-token: write
    steps:
    - name: Checkout repository
    uses: actions/checkout@v6
    with:
    fetch-depth: 1
    persist-credentials: false
    - name: Install Ollama
    run: curl -fsSL https://ollama.com/install.sh | sh
    - name: Start Ollama and pull model
    run: |
    ollama serve > /tmp/ollama.log 2>&1 &
    sleep 5
    ollama pull gpt-oss:20b
    - name: Run OpenGPT0
    uses: YanghaoZYH/OpenGPT0/github@latest
    with:
    model: ollama/gpt-oss:20b
    # share: true
    # github_token: xxxx
  3. Prepare the provider runtime

    For Ollama, make sure the workflow starts Ollama and pulls the configured model before running OpenGPT0. For Browser, use a local environment where the dedicated ChatGPT browser profile can stay logged in.


Configuration

  • model: The model to use with OpenGPT0. Takes the format of provider/model. This is required.

  • agent: The agent to use. Must be a primary agent. Falls back to default_agent from config or "build" if not found.

  • share: Whether to share the OpenGPT0 session. Defaults to true for public repositories.

  • prompt: Optional custom prompt to override the default behavior. Use this to customize how OpenGPT0 processes requests.

  • token: Optional GitHub access token for performing operations such as creating comments, committing changes, and opening pull requests. By default, OpenGPT0 uses the installation access token from the OpenGPT0 GitHub App, so commits, comments, and pull requests appear as coming from the app.

    Alternatively, you can use the GitHub Action runner’s built-in GITHUB_TOKEN without installing the OpenGPT0 GitHub App. Just make sure to grant the required permissions in your workflow:

    permissions:
    id-token: write
    contents: write
    pull-requests: write
    issues: write

    You can also use a personal access tokens(PAT) if preferred.


Supported Events

OpenGPT0 can be triggered by the following GitHub events:

Event TypeTriggered ByDetails
issue_commentComment on an issue or PRMention /opengpt0 in your comment. OpenGPT0 reads context and can create branches, open PRs, or reply.
pull_request_review_commentComment on specific code lines in a PRMention /opengpt0 while reviewing code. OpenGPT0 receives file path, line numbers, and diff context.
issuesIssue opened or editedAutomatically trigger OpenGPT0 when issues are created or modified. Requires prompt input.
pull_requestPR opened or updatedAutomatically trigger OpenGPT0 when PRs are opened, synchronized, or reopened. Useful for automated reviews.
scheduleCron-based scheduleRun OpenGPT0 on a schedule. Requires prompt input. Output goes to logs and PRs (no issue to comment on).
workflow_dispatchManual trigger from GitHub UITrigger OpenGPT0 on demand via Actions tab. Requires prompt input. Output goes to logs and PRs.

Schedule Example

Run OpenGPT0 on a schedule to perform automated tasks:

.github/workflows/opengpt0-scheduled.yml
name: Scheduled OpenGPT0 Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opengpt0:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install Ollama
run: curl -fsSL https://ollama.com/install.sh | sh
- name: Start Ollama and pull model
run: |
ollama serve > /tmp/ollama.log 2>&1 &
sleep 5
ollama pull gpt-oss:20b
- name: Run OpenGPT0
uses: YanghaoZYH/OpenGPT0/github@latest
with:
model: ollama/gpt-oss:20b
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.

For scheduled events, the prompt input is required since there’s no comment to extract instructions from. Scheduled workflows run without a user context to permission-check, so the workflow must grant contents: write and pull-requests: write if you expect OpenGPT0 to create branches or PRs.


Pull Request Example

Automatically review PRs when they are opened or updated:

.github/workflows/opengpt0-review.yml
name: opengpt0-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install Ollama
run: curl -fsSL https://ollama.com/install.sh | sh
- name: Start Ollama and pull model
run: |
ollama serve > /tmp/ollama.log 2>&1 &
sleep 5
ollama pull gpt-oss:20b
- uses: YanghaoZYH/OpenGPT0/github@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: ollama/gpt-oss:20b
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements

For pull_request events, if no prompt is provided, OpenGPT0 defaults to reviewing the pull request.


Issues Triage Example

Automatically triage new issues. This example filters to accounts older than 30 days to reduce spam:

.github/workflows/opengpt0-triage.yml
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- name: Install Ollama
if: steps.check.outputs.result == 'true'
run: curl -fsSL https://ollama.com/install.sh | sh
- name: Start Ollama and pull model
if: steps.check.outputs.result == 'true'
run: |
ollama serve > /tmp/ollama.log 2>&1 &
sleep 5
ollama pull gpt-oss:20b
- uses: YanghaoZYH/OpenGPT0/github@latest
if: steps.check.outputs.result == 'true'
with:
model: ollama/gpt-oss:20b
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.

For issues events, the prompt input is required since there’s no comment to extract instructions from.


Custom prompts

Override the default prompt to customize OpenGPT0’s behavior for your workflow.

.github/workflows/opengpt0.yml
- uses: YanghaoZYH/OpenGPT0/github@latest
with:
model: ollama/gpt-oss:20b
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements

This is useful for enforcing specific review criteria, coding standards, or focus areas relevant to your project.


Examples

Here are some examples of how you can use OpenGPT0 in GitHub.

  • Explain an issue

    Add this comment in a GitHub issue.

    /opengpt0 explain this issue

    OpenGPT0 will read the entire thread, including all comments, and reply with a clear explanation.

  • Fix an issue

    In a GitHub issue, say:

    /opengpt0 fix this

    And OpenGPT0 will create a new branch, implement the changes, and open a PR with the changes.

  • Review PRs and make changes

    Leave the following comment on a GitHub PR.

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

    OpenGPT0 will implement the requested change and commit it to the same PR.

  • Review specific code lines

    Leave a comment directly on code lines in the PR’s “Files” tab. OpenGPT0 automatically detects the file, line numbers, and diff context to provide precise responses.

    [Comment on specific lines in Files tab]
    /opengpt0 add error handling here

    When commenting on specific lines, OpenGPT0 receives:

    • The exact file being reviewed
    • The specific lines of code
    • The surrounding diff context
    • Line number information

    This allows for more targeted requests without needing to specify file paths or line numbers manually.