Freestyle Git is a multi-tenant, API-first Git platform for agent platforms.
“We use hundreds of thousands of repositories in our users' projects. Freestyle Git lets us provision repositories, manage permissions, and track every change through an API — without worrying about Git infrastructure.”

Marcus Lowe
CEO, Anything
“Sauna needs a way to version knowledge work, Freestyle's git product slotted in perfectly with git LFS support out the box.”

Robert Chandler
CTO, Wordware
“Freestyle Git has made it easy for us to handle version control across our users' projects. The API for creating repositories and managing permissions has worked really well for us.”

David Oort Alonso
Cofounder, Bloom
Provision repositories, manage access, and push code from your backend in seconds.
Provision a repository for each project in one API call.
Bring in code from Git URLs, tarballs, or raw files.
Assign read, write, and merge permissions per identity.
Mint tokens for secure clone and push operations.
Clone with your issued token and push immediately.
import { freestyle } from "freestyle";
// Create an empty repository
const { repo: emptyRepo, repoId } = await freestyle.git.repos.create();
// Or fork from an existing source
const { repo: forkedRepo } = await freestyle.git.repos.create({
source: { url: "https://github.com/user/repo.git" }
});
// Or import files directly (no git history)
const { repo: importedRepo } = await freestyle.git.repos.create({
import: {
type: "git",
url: "https://github.com/user/repo.git",
commitMessage: "Initial import"
}
});
// Create an identity with write access
const { identity } = await freestyle.identities.create();
await identity.permissions.git.grant({
repoId,
permission: "write"
});
// Generate a token for cloning
const { token } = await identity.tokens.create();
console.log(`git clone https://x-access-token:${token}@git.freestyle.sh/${repoId}`);Explore the API through repos, contents, and raw objects.
Explore the API through repos, contents, and raw objects.
Create repos, branch per task, and automate on push.
Fork from GitHub
const { repo } = await freestyle.git.repos.create({
source: {
url: "https://github.com/user/repo.git"
}
})Branch per task
repo.branches.create("feature-auth")Deploy on push
repo.triggers.create({
trigger: {
event: "push",
branches: ["main"]
},
action: { ... }
})Inspect files, compare branches, and export archives — no checkout needed.
Read any file
repo.contents.get({
path: "src/index.ts",
rev: "main"
})Compare branches
repo.compare({
base: "main",
head: "feature"
})Download as archive
repo.contents.downloadTarball({ rev: "main" })Create a commit
const { commit } = await repo.commits.create({
message: "Add new feature",
branch: "main",
files: [
{ path: "README.md", content: "# My Project" },
{ path: "src/index.ts", content: "console.log('Hello!');" }
],
author: { name: "John Doe", email: "john@example.com" }
})Traverse trees, read blobs, and inspect commits by SHA.
Walk a tree
repo.git.trees.get({ sha: "a1b2c3" })Read a blob
repo.git.blobs.get({ hash: "d4e5f6" })Inspect a commit
repo.git.commits.get({ hash: "f7a8b9" })Integrates with your stack
Configure granular webhooks per repo. Filter by branch, path, or event type.
Bidirectional sync between Freestyle and GitHub repos.
Push to deploy with Freestyle Deployments, or clone into a VM — your repo, your workflow.
Create your first repository in seconds. No credit card required.
Build coding platforms where each project gets an isolated repo, history and branching capabilities from day one.
Give each customer an isolated repo with controlled access for collaborators and automation.
Build apps that react to pushes with webhooks for CI, previews, and deployments.

