DocsIntegrations

GitHub

GitHub connects repository work to Mobius.

A GitHub integration connects one GitHub App installation to Mobius. An assistant can read the repositories in that installation, work with issues and pull requests, and respond to repository events.

Use GitHub for issue triage, pull request review, check reporting, or merge operations. The repositories available to Mobius are the ones selected for the GitHub App installation; a Mobius grant cannot expand that upstream scope.

Capability map

CapabilityValue
Provider IDgithub
Auth kindgithub_app_install
Connect flowGitHub App installation
ActionsYes
EventsYes
Webhook deliveryYes
Event samplesYes
Live statusNo

Connect GitHub

SurfaceSupport
AppOpen Build > Integrations, choose GitHub, and start the GitHub App install flow.
CLIThe mobius CLI does not connect GitHub integrations yet. Use the app or API.
APICall POST /v1/integrations/providers/github/connect, redirect the user to install_url. The installation is bound when that same person returns to Mobius signed in.

If the GitHub App was installed but the browser did not return to Mobius, use the installation binding endpoints in the interactive API reference to attach the existing installation to the organization.

GitHub installations use the Account manager choice in Mobius. Choose You for an installation you manage personally or Your team for one organization administrators should manage. After GitHub returns you to Mobius, open the connected account and check GitHub installation for the account and repository scope.

Under Assistant access, grant the exact installation to the assistants that need it. A personal grant limits use of the installation and retention of its tool results to the manager's Mobius audience. For a team-managed installation, choose the team or named people as that audience. If another installation is connected, give each one a clear label so requests and routines can select the intended repositories.

Actions

GitHub registers actions for repositories, issues, pull requests, discussions, checks, commits, releases, and GitHub Actions runs.

github.actions.get_run
github.actions.get_workflow
github.actions.list_jobs
github.actions.list_runs
github.actions.list_workflows
github.check_run.create
github.check_run.list
github.check_suite.list
github.code.search
github.commit.get
github.commit.list
github.commit.set_status
github.discussion.create
github.discussion.create_comment
github.discussion.get
github.discussion.list
github.discussion.list_comments
github.file.get
github.issue.add_labels
github.issue.create
github.issue.create_comment
github.issue.get
github.issue.list
github.issue.list_comments
github.issue.remove_label
github.issue.search
github.issue.update_comment
github.pull_request.close
github.pull_request.create
github.pull_request.create_review
github.pull_request.get
github.pull_request.list
github.pull_request.list_files
github.pull_request.list_review_comments
github.pull_request.list_review_threads
github.pull_request.list_reviews
github.pull_request.merge
github.pull_request.reply_review_comment
github.pull_request.request_reviewers
github.pull_request.resolve_review_thread
github.pull_request.unresolve_review_thread
github.pull_request.update_review
github.pull_request.update_review_comment
github.release.get_latest
github.release.list
github.repo.get
github.repo.list
github.repo.list_branches

Reviews people can reply to

A pull request review assistant reads the diff, then calls github.pull_request.create_review with a short summary as body and one entry in comments per finding. Each entry names a path and line in the diff and becomes its own thread on that line. People reply in the thread and resolve it, the same way they do with a teammate's review. GitHub sends one email for the review, however many line comments it has.

On later pushes, the assistant calls github.pull_request.list_review_threads to see which threads are open, resolved, or outdated. It resolves its own threads whose findings are fixed with github.pull_request.resolve_review_thread, answers in a thread with github.pull_request.reply_review_comment, and posts a new review only for new findings. Resolving a thread and editing a post send no email.

The edit tools (update_review, update_review_comment, and github.issue.update_comment) only change posts the connection wrote. They refuse to edit anyone else's comment.

A line comment must be on a line in the pull request's diff. Pass the head commit as commit_sha so the lines match the diff you reviewed. If GitHub rejects a line, nothing is posted; move that finding into the review body and try again.

GitHub mutations run without an automatic Mobius confirmation after the exact installation and grant are rechecked. For a merge or other change that needs review, use an explicit interaction in the instructions and GitHub branch protection as the enforcement boundary.

Events

GitHub webhook deliveries become provider events with the github. prefix:

github.check_run.completed
github.check_run.created
github.check_run.requested_action
github.check_run.rerequested
github.check_suite.completed
github.check_suite.requested
github.check_suite.rerequested
github.create
github.deployment.created
github.deployment_status.created
github.installation.created
github.installation.deleted
github.installation.suspended
github.installation.unsuspended
github.issue_comment.created
github.issues.assigned
github.issues.closed
github.issues.edited
github.issues.opened
github.pull_request.closed
github.pull_request.edited
github.pull_request.opened
github.pull_request.reopened
github.pull_request.review_requested
github.pull_request.synchronize
github.pull_request_review.dismissed
github.pull_request_review.edited
github.pull_request_review.submitted
github.pull_request_review_comment.created
github.pull_request_review_comment.deleted
github.pull_request_review_comment.edited
github.pull_request_review_thread.resolved
github.pull_request_review_thread.unresolved
github.push
github.workflow_run.completed
github.workflow_run.in_progress
github.workflow_run.requested

Use github.pull_request.opened or github.pull_request.synchronize for review work, and github.issues.opened for triage. Avoid github.* unless every GitHub delivery is worth recording.

To answer replies in its threads, a review routine should hear replies in the same conversation as the review it wrote. Use one routine on github.* that follows each pull request, so pushes, reviews, and replies for one PR share a conversation. Its condition lets through the events it acts on.

github.pull_request_review_comment.created arrives for every line comment, including each one in a new review, not only for replies. Keep only replies from people:

(meta.event_type == "github.pull_request.opened" ||
  meta.event_type == "github.pull_request.synchronize") ||
(meta.event_type == "github.pull_request_review_comment.created" &&
  has(event.comment, "in_reply_to_id") && event.comment.in_reply_to_id != nil &&
  event.sender.type != "Bot")

Run a reply-answering routine on a GitHub App connection. Its own replies come from the App's bot account, which the condition skips. With a personal connection, the assistant's replies come from the person, so add event.sender.login != "<your login>" or the routine answers itself.

Next