Skip to content

GitHub Setup Beta ​

Many MSPs keep scripts, automation, and custom projects for clients in their own GitHub organization. Connect GitHub to give the agent that context: which repositories exist, what each one is for, and which customer it was built for. The agent can search code, read files, issues, pull requests, and commits, and -- with approval -- open or close issues. Tickets can also be linked to GitHub issues so the requester is told when the fix ships.

Junto supports one GitHub connection per organization, installed on your MSP's own GitHub organization -- not on your customers' accounts.

How Junto Connects ​

Junto connects through the Junto GitHub App. You install the app on your GitHub organization and choose which repositories it can see, then sign in with GitHub from Junto to link that installation to your Junto organization. Junto never stores a GitHub password or personal token.

Only an owner of the GitHub organization can link the installation to Junto. This prevents someone with read-only access to a repository from connecting your whole organization.

Prerequisites ​

  • A Junto Admin or Owner account
  • Owner access to the GitHub organization that holds your repositories
  • Customer companies in Junto, imported from your PSA, if you want to link repositories to customers

Step 1: Install the Junto GitHub App ​

  1. In Junto, go to Settings > Integrations > GitHub.
  2. Click Install the GitHub App. GitHub opens in a new tab.
  3. Pick your GitHub organization and choose All repositories or Only select repositories.
  4. Complete the installation on GitHub.

You can change which repositories the app can see at any time from the app's settings on GitHub.

Step 2: Connect GitHub in Junto ​

  1. Back on Settings > Integrations > GitHub, click Connect GitHub and sign in with GitHub.
  2. In Choose your GitHub organization, select the organization where you installed the app. Only accounts where the app is installed and you are an owner are listed.
  3. Click Connect.

The connection card shows the GitHub organization, whether all or selected repositories are shared, and when repositories were last synced.

Step 3: Describe Your Repositories ​

The Repositories table lists every repository the app can see. Every repository is available to the agent unless you turn it off.

ColumnWhat it does
RepositoryThe repository name, with Private, Archived, or No longer shared badges where they apply
DescriptionWhat the repository is for, written by your team. Falls back to GitHub's own description until you add one
CustomerThe Junto company the project was built for, or internal
AgentsTurn off to hide a repository from the agent. A hidden repository reads exactly like one that doesn't exist

To describe a repository, click its edit button and fill in:

  • Description -- What the repository is, what it runs or deploys, and when the agent should look at it (up to 2,000 characters).
  • Customer -- The company the project was built for, or No customer (internal).

Descriptions and customer links are context, not access control. When the agent works on a ticket for a customer, that customer's repositories are listed first, but every repository that is turned on stays available.

What the Agent Can Do ​

CapabilityWhat Junto can doRisk level
List repositoriesList the repositories Junto can use with your descriptions, GitHub's description, the linked customer, language, and last push; a customer's repositories are listed firstLow
Search codeSearch code on the default branch across all repositories or one repository, narrowed by path or languageLow
Read filesRead a file's text or list a directory, on the default branch or a chosen branch, tag, or commitLow
List and search issuesList a repository's issues by state, label, assignee, or update date, or search issues and pull requests by text across repositoriesLow
Get issueRead an issue's title, body, state, labels, assignees, milestone, and recent commentsLow
Pull requestsList a repository's pull requests and read one, including merge status, reviewers, and the changed files (no diffs)Low
List commitsList recent commits on a branch, optionally for one file or directory or one authorLow
Create issueOpen a new issue with a title, Markdown body, labels, and assignees. When it comes from a ticket, the issue links back to the ticketMedium
Close issueClose an open issue as completed or not planned, optionally with a closing commentMedium

All write actions require technician approval before execution. Read-only tools do not require approval.

Where the Tools Are Available ​

  • Explore chat: every GitHub capability.
  • Ticket chat: listing repositories, listing, searching, and reading issues, and opening an issue. An issue opened from ticket chat is automatically linked to the ticket. Code, files, pull requests, commits, and closing issues are available from Explore.
  • GitHub is not used during automatic ticket triage.

Limits ​

  • Code search covers each repository's default branch and files under 384 KB. GitHub allows about 10 code searches a minute, so the agent prefers one precise search over many broad ones.
  • Files over 5 MB and binary files return details only, not their contents.
  • Labels and assignees on a new issue must already exist in the repository. GitHub drops any it can't apply, and the agent reports them.
  • Pull requests can't be closed with the close issue capability.

Example requests:

  • "Which of our repositories are for Acme, and what does each one do?"
  • "Find where our onboarding script sets the default printer."
  • "What changed in the backup-scripts repo in the last two weeks?"
  • "Is there already an open issue about the VPN installer failing on macOS?"
  • "Open an issue in acme-portal for the login timeout on this ticket."

Linking Tickets to Issues ​

When a ticket is waiting on engineering work, link it to the GitHub issue that tracks the fix. Several tickets can point at the same issue.

  1. Open the ticket and find Linked issues in the ticket details panel.
  2. Click Link issue.
  3. Paste a GitHub issue URL or owner/repo#number, and click Link.

Each linked issue shows its state and the pull requests that closed it. Use the unlink button to remove a link. The agent can also link, unlink, and list a ticket's issues, and can add a comment to an issue already linked to the ticket -- for example, new reproduction steps or confirmation that a fix worked. Linking and commenting on a linked issue don't require approval, and the agent writes those comments as a summary for developers without the requester's name, contact details, or messages.

Telling the Requester the Fix Shipped ​

When a linked issue is closed, each linked ticket gets an approval card with a drafted update for the requester, written from that ticket's own conversation. Click Approve & Send to post it to the requester as a discussion note in your PSA, or Dismiss to skip it. If the issue is reopened before anyone answers the card, the card is withdrawn. See Action Requests for how approval cards work.

What Developers See on GitHub ​

Junto keeps one comment on each linked issue listing the Junto tickets waiting on it, such as "Linked Junto tickets: 3 (2 open)", and edits it in place as tickets are linked, unlinked, or closed. On a private repository the comment lists each ticket's company and ticket number. On a public repository it shows counts only. Requester replies are never copied to GitHub.

Managing the Connection ​

  • Share more repositories: Change the app's repository access on GitHub (or click Manage on GitHub), then click Sync now.
  • Sync now: Refreshes the repository list. Repositories removed from the app keep their descriptions and customer links, marked No longer shared, so nothing is lost if you share them again.
  • Disconnect: Click Disconnect and confirm. The agent loses access to your repositories, and every repository description and customer link is deleted. The Junto GitHub App stays installed on GitHub until you uninstall it there.

Troubleshooting ​

  • "No GitHub organization you own has the Junto GitHub App" -- Install the app on your organization first (Step 1), and connect with a GitHub account that is an owner of that organization.
  • Your organization isn't listed in Choose your GitHub organization -- Only organizations where the app is installed and you are an owner appear. Ask an organization owner to connect, or to make you an owner.
  • A repository is missing -- Confirm the app can see it in its repository access settings on GitHub, then click Sync now. Also check that its Agents switch is on.
  • Sync now reports that GitHub no longer has this installation -- The app was uninstalled on GitHub. Disconnect, reinstall the app, and connect again.
  • The agent can't find code you know exists -- Code search only covers the default branch and files under 384 KB. Ask the agent to read the file directly if you know its path or branch.
  • A label or assignee didn't apply to a new issue -- It must already exist in the repository and be assignable. The agent reports anything GitHub dropped.