The best way to handle an agent's filesystem: real Git repos with branches, diffs, rollback, and review.
Freestyle Git is a multi-tenant, API-first Git platform for agent filesystems. Agents get normal files; your product gets commits, branches, diffs, rollback, review, and automation.
“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 filesystem state, manage access, and commit agent changes 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 repos, file contents, diffs, and raw Git objects.
Explore repos, file contents, diffs, and raw Git 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 the workflows around your agent filesystem.
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 agent filesystem gets an isolated repo, history, and branching from day one.
Give each customer or task a durable, branchable filesystem with controlled access for collaborators and automation.
Build apps that react to pushes with webhooks for CI, previews, and deployments.

