Introduction
One unified, normalized TypeScript API over GitHub, GitLab, Bitbucket Cloud, Azure DevOps, Gitea, and any git HTTP remote.
repo-sdk gives you a single, normalized API for the five major git providers — GitHub, GitLab,
Bitbucket Cloud, Azure DevOps, and Gitea — plus any plain git remote served over HTTP(S),
so you write your discovery, commit, tag, download, and webhook logic once instead of five times.
It has zero runtime dependencies (raw fetch + Web Crypto only) and is edge-compatible: it runs
on Node.js ≥ 20, Cloudflare Workers, and other Web-standard runtimes.
Why repo-sdk
One unified API
Swap the provider and the rest of your code stays the same. No per-provider branching.
Normalized types
Every result maps to a provider-agnostic shape — Namespace, Repository, Commit, Tag,
Webhook — with the untouched payload on a raw escape hatch.
Zero dependencies
Just fetch and Web Crypto. Nothing to audit, nothing to bloat your bundle.
Edge-compatible
Runs on Node.js, Cloudflare Workers, and any Web-standard runtime.
Typed errors
Every failure is a RepoError with a stable code union, retry hints, and redacted secrets.
Capability gating
Providers differ. The client throws unsupported instead of silently dropping an option.
A first look
import { createClient } from 'repo-sdk';
import { github } from 'repo-sdk/github';
const client = createClient({
provider: github({ auth: { token: process.env.GITHUB_TOKEN! } }),
});
// Resolve a ref (branch, tag, or SHA) to a single commit.
const head = await client.commits.get({ repo: 'capawesome-team/repo-sdk', ref: 'main' });
console.log(head.sha, head.message);
Switching providers means swapping the provider argument — the rest of your code stays the same.
Supported providers
GitHub
Token, GitHub App, and Enterprise Server. Import from repo-sdk/github.
GitLab
gitlab.com and self-managed. Import from repo-sdk/gitlab.
Bitbucket Cloud
Atlassian API token or access token. Import from repo-sdk/bitbucket.
Azure DevOps
PAT, Entra ID, and Server. Import from repo-sdk/azure-devops.
Gitea
Personal access token, self-hosted, and Forgejo. Import from repo-sdk/gitea.
Git HTTP
Any plain git remote over HTTP(S), by full URL. Import from repo-sdk/git-http.