Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Github

OAuth 2.0 developer_tools

Connect this agent connector to let your agent:

  • Read repositories — fetch repo metadata, files, commits, branches, and tags
  • Manage issues — create, update, close, and comment on issues
  • Work with pull requests — open PRs, post reviews, and merge changes
  • Search code — search across repositories by keyword, language, or file path
  • Trigger workflows — dispatch GitHub Actions workflow runs

This connector uses OAuth 2.0. Scalekit acts as the OAuth client: it redirects your user to Github, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a connectionName and a user identifier.

You supply your Github Connected App credentials (Client ID + Secret) once per environment in the Scalekit dashboard.

Set up the connector

Register your Scalekit environment with the GitHub connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

  1. Set up auth redirects

    • In Scalekit dashboard, go to Agent AuthCreate Connection. Find GitHub and click Create.

    • Click Use your own credentials and copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

      Copy redirect URI from Scalekit dashboard

    • Go to GitHub Developer Settings and open your OAuth app.

    • Under General, paste the copied URI into the Authorization callback URL field and click Save application.

      Add callback URL in GitHub OAuth app settings

  2. Get client credentials

    In GitHub Developer Settings, open your OAuth app:

    • Client ID — listed on the app’s main settings page
    • Client Secret — click Generate a new client secret if you don’t have one
  3. Add credentials in Scalekit

    • In Scalekit dashboard, go to Agent AuthConnections and open the connection you created.

    • Enter your credentials:

      • Client ID (from your GitHub OAuth app)
      • Client Secret (from your GitHub OAuth app)

      Add credentials for GitHub in Scalekit dashboard

    • Click Save.

Code examples

Connect a user’s GitHub account and make API calls on their behalf — Scalekit handles OAuth and token management automatically.

Proxy API Calls

import { ScalekitClient } from '@scalekit-sdk/node';
import 'dotenv/config';
const connectionName = 'github'; // get your connection name from connection configurations
const identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentials
const scalekit = new ScalekitClient(
process.env.SCALEKIT_ENV_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET
);
const actions = scalekit.actions;
// Authenticate the user
const { link } = await actions.getAuthorizationLink({
connectionName,
identifier,
});
console.log('🔗 Authorize GitHub:', link);
process.stdout.write('Press Enter after authorizing...');
await new Promise(r => process.stdin.once('data', r));
// Make a request via Scalekit proxy
const result = await actions.request({
connectionName,
identifier,
path: '/user',
method: 'GET',
});
console.log(result);
github_branch_create Create a new branch in a GitHub repository. Requires the SHA of the commit to branch from (typically the HEAD of main). 4 params

Create a new branch in a GitHub repository. Requires the SHA of the commit to branch from (typically the HEAD of main).

Name Type Required Description
branch_name string required Name of the new branch to create
owner string required The account owner of the repository
repo string required The name of the repository
sha string required The SHA of the commit to branch from. Use the HEAD SHA of the base branch (e.g. main).
github_branch_get Get details of a specific branch in a GitHub repository. Returns the branch name, latest commit SHA, and protection status. 3 params

Get details of a specific branch in a GitHub repository. Returns the branch name, latest commit SHA, and protection status.

Name Type Required Description
branch string required The name of the branch to retrieve
owner string required The account owner of the repository
repo string required The name of the repository
github_branches_list List all branches in a GitHub repository. Returns branch names, commit SHAs, and protection status. Supports pagination. 5 params

List all branches in a GitHub repository. Returns branch names, commit SHAs, and protection status. Supports pagination.

Name Type Required Description
owner string required The account owner of the repository
repo string required The name of the repository
page integer optional Page number of results to return (default 1)
per_page integer optional Number of results per page (max 100, default 30)
protected boolean optional Filter to only protected branches
github_file_contents_get Get the contents of a file or directory from a GitHub repository. Returns Base64 encoded content for files. 4 params

Get the contents of a file or directory from a GitHub repository. Returns Base64 encoded content for files.

Name Type Required Description
owner string required The account owner of the repository
path string required The content path (file or directory path in the repository)
repo string required The name of the repository
ref string optional The name of the commit/branch/tag
github_file_create_update Create a new file or update an existing file in a GitHub repository. Content must be Base64 encoded. Requires SHA when updating existing files. 9 params

Create a new file or update an existing file in a GitHub repository. Content must be Base64 encoded. Requires SHA when updating existing files.

Name Type Required Description
content string required The new file content (Base64 encoded)
message string required The commit message for this change
owner string required The account owner of the repository
path string required The file path in the repository
repo string required The name of the repository
author object optional Author information object with name and email
branch string optional The branch name
committer object optional Committer information object with name and email
sha string optional The blob SHA of the file being replaced (required when updating existing files)
github_issue_create Create a new issue in a repository. Requires push access to set assignees, milestones, and labels. 8 params

Create a new issue in a repository. Requires push access to set assignees, milestones, and labels.

Name Type Required Description
owner string required The account owner of the repository
repo string required The name of the repository
title string required The title of the issue
assignees array optional GitHub usernames to assign to the issue
body string optional The contents of the issue
labels array optional Labels to associate with the issue
milestone number optional Milestone number to associate with the issue
type string optional The name of the issue type
github_issues_list List issues in a repository. Both issues and pull requests are returned as issues in the GitHub API. 12 params

List issues in a repository. Both issues and pull requests are returned as issues in the GitHub API.

Name Type Required Description
owner string required The account owner of the repository
repo string required The name of the repository
assignee string optional Filter by assigned user
creator string optional Filter by issue creator
direction string optional Sort order
labels string optional Filter by comma-separated list of label names
milestone string optional Filter by milestone number or state
page number optional Page number of results to fetch
per_page number optional Number of results per page (max 100)
since string optional Show issues updated after this timestamp (ISO 8601 format)
sort string optional Property to sort issues by
state string optional Filter by issue state
github_public_repos_list List public repositories for a specified user. Does not require authentication. 6 params

List public repositories for a specified user. Does not require authentication.

Name Type Required Description
username string required The GitHub username to list repositories for
direction string optional Sort order
page number optional Page number of results to fetch
per_page number optional Number of results per page (max 100)
sort string optional Property to sort repositories by
type string optional Filter repositories by type
github_pull_request_create Create a new pull request in a repository. Requires write access to the head branch. 8 params

Create a new pull request in a repository. Requires write access to the head branch.

Name Type Required Description
base string required The name of the branch you want the changes pulled into
head string required The name of the branch where your changes are implemented (format: user:branch)
owner string required The account owner of the repository
repo string required The name of the repository
body string optional The contents of the pull request description
draft boolean optional Indicates whether the pull request is a draft
maintainer_can_modify boolean optional Indicates whether maintainers can modify the pull request
title string optional The title of the pull request
github_pull_requests_list List pull requests in a repository with optional filtering by state, head, and base branches. 9 params

List pull requests in a repository with optional filtering by state, head, and base branches.

Name Type Required Description
owner string required The account owner of the repository
repo string required The name of the repository
base string optional Filter by base branch name
direction string optional Sort order
head string optional Filter by head branch (format: user:ref-name)
page number optional Page number of results to fetch
per_page number optional Number of results per page (max 100)
sort string optional Property to sort pull requests by
state string optional Filter by pull request state
github_repo_get Get detailed information about a GitHub repository including metadata, settings, and statistics. 2 params

Get detailed information about a GitHub repository including metadata, settings, and statistics.

Name Type Required Description
owner string required The account owner of the repository (case-insensitive)
repo string required The name of the repository without the .git extension (case-insensitive)
github_user_repos_list List repositories for the authenticated user. Requires authentication. 5 params

List repositories for the authenticated user. Requires authentication.

Name Type Required Description
direction string optional Sort order
page number optional Page number of results to fetch
per_page number optional Number of results per page (max 100)
sort string optional Property to sort repositories by
type string optional Filter repositories by type