Engineering integration guide

GitHub + UbiGrowth workflows

GitHub is the code hosting and collaboration platform where repositories, pull requests, and engineering activity live. This guide covers the records that matter, how the connection should be scoped, and what the first bounded workflow should be.

Introduction

Make GitHub part of the workflow, not another silo.

Verified UbiVibe connection

This guide covers how a team designs a engineering workflow around GitHub with UbiGrowth: which records stay authoritative, how the connection should be scoped, what the first bounded workflow should be, and how to tell whether it worked.

The records that matter are Repository, Pull Request, Issue, Commit, Check Run, Workflow Run, and Release. A GitHub Pull Request is an Issue with extra fields, so issue endpoints return PRs and issue counts include them. Reporting that treats the two as disjoint double-counts or silently mixes them.

GitHub is a live, governed UbiVibe connection today: it is authorized through an OAuth grant your workspace approves, scoped to the access you approve, and tenant-scoped so no other organization can see your data.

Launch is the usual destination for this connection, because the value shows up as a tool, dashboard, or internal surface built on the connected data.

Why teams evaluate this connection

Integrations create value when they remove operating friction.

The first design decision is not which API endpoint to call; it is which system owns the record, what event should trigger work, who owns the exception path, and what successful completion means.

Engineering systems produce more signal than any other part of the business and the least usable summary. GitHub knows exactly what happened; turning that into something the rest of the company can act on is manual work that nobody owns.

The second problem is direction of risk. An integration that reads engineering activity is low-risk and useful. An integration that can act on infrastructure or production systems is a different category entirely, and the two are often discussed as if they were the same project.

You're likely here because

  • Engineering activity is invisible outside the engineering team
  • Incident context has to be reassembled manually every time
  • Internal tool requests sit behind product work indefinitely

Record model

What a GitHub integration actually reads and writes.

Integration design starts from the objects the system really exposes, not from a generic connector diagram. These are GitHub's.

RepositoryPull RequestIssueCommitCheck RunWorkflow RunRelease

Identity and matching

A GitHub Pull Request is an Issue with extra fields, so issue endpoints return PRs and issue counts include them. Reporting that treats the two as disjoint double-counts or silently mixes them.

Start here

Read open Pull Requests with no review activity past the team's agreed limit and route them with the diff size and the reviewer named.

What this will not do

It will not measure engineering productivity. PR counts describe throughput of a process, not value delivered, and optimising them directly makes the signal worse.

The constraint to plan around

REST and GraphQL have separate rate limits, and GitHub Apps are limited per installation rather than per user, so a busy org shares one budget across every automation running in it.

Build notes

What you actually have to reason about in GitHub.

The fields that carry meaning, how the connection authenticates, and whether the event surface can be trusted. This is the part that decides whether the integration works in month three.

FieldWhy it matters
state vs mergeda closed PR may or may not be merged, and treating closed as merged overstates delivery
draftexcludes a PR from review expectations, so review-latency metrics must filter on it
requested_reviewers vs reviewsrequested is an intention, reviews are the fact; measuring the wrong one misreports the bottleneck
head.shathe commit checks attach to, which changes on every push and invalidates prior check runs
labels[]the de facto workflow state in most repositories, since GitHub models no other

Authentication

A GitHub App with per-repository installation and fine-grained permissions is the correct choice; a personal access token inherits one human's access and dies with their account. App installation tokens are short-lived by design, which is a feature rather than an inconvenience.

Events and delivery

Webhooks are comprehensive and delivered at-least-once with redelivery available, so idempotency is required rather than optional. Ordering is not guaranteed: a synchronize event can arrive before the opened event it follows.

Workflow

How the GitHub workflow runs.

The operating sequence, from reading the source system through to the result landing back where it belongs.

01Connect read-only first02Assemble the engineering picture03Build the internal surface04Bound any action path

Step 01

Connect read-only first

GitHub is connected with scoped, read-only credentials so context and reporting value can be proven without any action risk.

Step 02

Assemble the engineering picture

Delivery, incident, or operational activity is summarized in a form the rest of the business can act on rather than a raw feed.

Step 03

Build the internal surface

Launch produces the dashboard or internal tool that was never going to clear the product backlog, reviewed like any other internal service.

Step 04

Bound any action path

If the workflow needs to act, that path is specified separately with explicit scope, approval, and a record of what ran.

Design decisions

The engineering decisions this connection forces.

Each of these has to be settled before the GitHub workflow is allowed to write anything.

01Separate read from act02Make execution paths explicit

Step 01

Separate read from act

Reading GitHub for context and reporting is a different risk decision from letting a workflow act on it. Do not bundle them into one project.

Step 02

Make execution paths explicit

Any action that reaches a real environment should run through a reviewable execution path with a record of what ran, not an implicit side effect.

Implementation path

How to implement the GitHub workflow.

  1. 01

    Start read-only against GitHub and produce something the team already wants: delivery visibility, incident context, or an operational summary.

  2. 02

    Use scoped credentials rather than a shared token, and confirm what the scope can actually reach.

  3. 03

    Build the internal surface in Launch, and review the result as you would any other contribution.

  4. 04

    After stale-PR routing works, add the review-load view: who is being asked to review everything, which is usually the real constraint rather than any individual PR.

Governance

Controls that matter.

01

Control 01

Credentials are scoped and workspace-approved; no shared secret belongs in a prompt or in generated code.

02

Control 02

Actions that reach production systems run through explicit, reviewable execution paths.

03

Control 03

Generated code and configuration are reviewed on the same terms as any other change.

Failure modes

How a GitHub integration breaks in production.

Not generic integration advice. These follow from how this system actually behaves, which is why they look nothing like the list on the next guide over.

Symptom 01

Issue counts are inflated compared with what the team sees.

Cause

Pull requests are issues, and the issues endpoint returns both.

Fix

Filter on the pull_request key, or query the pulls endpoint when you mean pull requests.

Symptom 02

The same webhook is processed twice.

Cause

Delivery is at-least-once and redelivery is available.

Fix

Key handlers on the delivery id and make every effect idempotent.

Symptom 03

Rate limits are exhausted by a bot nobody is running heavily.

Cause

The limit is per installation and shared with every other automation in the org.

Fix

Use conditional requests with ETags, prefer GraphQL for compound reads, and monitor the installation's remaining budget.

What changes at scale

REST and GraphQL have separate budgets, and GraphQL is metered by computed node cost. Large-org automation should be GraphQL-first with conditional REST for the rest.

Examples

What a working GitHub workflow looks like.

Bounded scenarios rather than a feature list. Each one can be verified against work the team already does.

Repository context

With GitHub connected read-only, delivery and operational activity can appear alongside commercial context instead of living in a separate report.

Internal tool that was stuck in the backlog

A small tool reading GitHub gets built in Launch and reviewed like any other internal service, without consuming sprint capacity.

Limitations and considerations

What to validate before you depend on this.

  • REST and GraphQL have separate rate limits, and GitHub Apps are limited per installation rather than per user, so a busy org shares one budget across every automation running in it.
  • Automated writes to pull requests are visible to the whole team and hard to retract from the timeline. A bot that comments on every PR trains reviewers to ignore bot comments, which then hides the one that mattered.
  • When the goal is measuring engineering productivity. PR counts and cycle times describe process throughput, and optimising them directly degrades the signal within a quarter.
  • Write or action access to GitHub is a materially different risk decision from read access and should be scoped, reviewed, and approved separately.
  • Generated code and configuration still require review. Speed of production does not change ownership of what ships.

FAQ

GitHub integration questions.

What records does a GitHub integration actually work with?

The primary records are Repository, Pull Request, Issue, Commit, Check Run, Workflow Run, and Release. A GitHub Pull Request is an Issue with extra fields, so issue endpoints return PRs and issue counts include them. Reporting that treats the two as disjoint double-counts or silently mixes them.

What should the first GitHub workflow be?

Read open Pull Requests with no review activity past the team's agreed limit and route them with the diff size and the reviewer named.

What will a GitHub integration not do?

It will not measure engineering productivity. PR counts describe throughput of a process, not value delivered, and optimising them directly makes the signal worse.

What is the main constraint to plan around?

REST and GraphQL have separate rate limits, and GitHub Apps are limited per installation rather than per user, so a busy org shares one budget across every automation running in it.

What changes about a GitHub integration at scale?

REST and GraphQL have separate budgets, and GraphQL is metered by computed node cost. Large-org automation should be GraphQL-first with conditional REST for the rest.

How does authentication work for GitHub?

A GitHub App with per-repository installation and fine-grained permissions is the correct choice; a personal access token inherits one human's access and dies with their account. App installation tokens are short-lived by design, which is a feature rather than an inconvenience.

Does GitHub support webhooks, and can they be trusted?

Webhooks are comprehensive and delivered at-least-once with redelivery available, so idempotency is required rather than optional. Ordering is not guaranteed: a synchronize event can arrive before the opened event it follows.

What is the risk of writing to GitHub?

Automated writes to pull requests are visible to the whole team and hard to retract from the timeline. A bot that comments on every PR trains reviewers to ignore bot comments, which then hides the one that mattered.

When is connecting GitHub the wrong call?

When the goal is measuring engineering productivity. PR counts and cycle times describe process throughput, and optimising them directly degrades the signal within a quarter.

What should a GitHub integration automate first?

Start with one bounded workflow that removes a measurable handoff, duplicate-entry step, reporting delay, or follow-up gap. Expand only after the first workflow is reliable.

Does UbiGrowth require GitHub to be replaced?

No. The operating model is designed around connecting to systems that should remain authoritative and building workflows around them rather than forcing a wholesale replacement.

Is connector availability identical for every workspace?

No. Availability can depend on provider configuration, authentication, scopes, workspace setup, and deployment state. Validate the required connection before treating it as an operational dependency.

Can the workflow act on GitHub, not just read it?

Action paths are possible but should be treated as a separate, bounded project with scoped credentials, explicit approval, and a record of what ran.

How are credentials handled?

Through workspace-approved, scoped grants. A shared secret pasted into a prompt or embedded in generated code is not an acceptable pattern.

What is a safe first integration?

A read-only workflow that produces something the team already wants from GitHub — delivery visibility or incident context — before any action path is considered.

How this access is governed

What ARIA is allowed to do in GitHub, and who decides.

Connecting GitHub is a permission decision, not just a setup step. These are the controls that decide what ARIA can reach, what it can change, what gets recorded, and how you take the access back.

Required permissions

ARIA works through the scopes the connection was granted, and no others. Authorization happens at the provider, so the permissions being requested are shown by the system itself before anything is connected.

What it can reach

Reachable systems are the intersection of what your organization approved in the connector registry and what the requesting identity is permitted to use. Identity resolves before execution, not after.

What it can do

Actions run through explicit execution paths with state, spend, and failure boundaries — a bounded worker path rather than an open-ended agent loop with a credential.

Credential handling

Credentials live in the governed connection layer and are resolved through canonical connection identity. They are not pasted into individual workflows, prompts, or generated artifacts.

Action logging

Execution carries state and traces: what triggered the work, which connection it used, and what came back — including an explicit failure when something did not run.

Approval and revocation

Consequential actions can be made to require a person to approve them. Access can be changed or revoked at the connection, and ARIA loses that reach without unpicking the work already completed.

Start with ARIA

Ask ARIA to run this integration.

Describe the outcome you need across this system. ARIA works out the scopes, data, and actions the job requires, and operates inside the access you grant — which you can change or revoke.

  • ARIA acts only through the systems and permissions you connect.
  • Connections use scoped credentials you can change or revoke.
  • Actions are recorded, and consequential ones can require approval.

Goes to UbiGrowth, with the page you asked from attached. We do not sell or share it. Prefer to talk? Call 972-823-1294.

Start here

Turn the integration into a working business outcome.

Start with ARIA to describe the outcome, then continue into the product path that fits the workflow. Connector availability and required scopes should be validated for the specific workspace before production use.