From the first push to the merge, on one platform.

Follow a change through Sailfork as it ships today, or jump to any part of it.

Storage that copies

Every push is written as ready-to-send pack segments, so a clone starts sending at once. Benchmarks

Stock git

Enumerate 11,845,633 objects Build a pack

First byte at 4.50 s

Sailfork

Send the stored segments

First byte at 0.14 ms, about 32,158 times sooner

One full clone of linux.git, server time only. The two steps are not drawn to scale against each other; together they take the whole bar.

New

Caissons

Online worktrees for agents. Each one edits the repository on Sailfork on its own branch, with no clone to make and no sandbox to start.

  1. Open

    A caisson on a new branch

    open caisson
  2. Edit in place

    Read and write files on Sailfork

    edit invoice.ts
  3. Commit

    Saved to the branch

    commit "Round totals"
  4. Pull request

    Reviewed behind your branch rules

    #418 merged

Pull requests

Review next to the code, and merge only when the rules hold.

A sample pull request. The merge button waits until every check above it holds.
Three ways to merge
Merge commit, squash or rebase, checked for conflicts first.
Reviews and threads
Line comments, requested reviewers and drafts.
Branch rules
Require a pull request and a number of approvals.
Issues
Labels, assignees and a timeline of every change.

Code browser

The git engine runs in your browser, so moving around a repository never waits on a server.

Sample blame and command menu. Every line knows its commit, and every page is a keystroke away.
Blame and history
Who changed each line, and the history of any path.
Highlighting
Tree-sitter for 16 languages, from Rust and Go to Svelte and YAML.
Command menu
Any action, page or file from the keyboard.
Diffs and raw files
Every commit, every diff, and the bytes when you need them.

Access and security

Sign in the way you want, and give every script only what it needs.

SSH keys
  • ed25519 Accepted
  • ECDSA Accepted
  • RSA Refused
  • DSA Refused
Two-factor sign-in

Authenticator codes, ten recovery codes, or sign in with GitHub.

Scoped tokens

Seven scopes, from reading one repository to managing an organization.

Sessions and audit log

See and revoke every session, and every security event on your account.

CLI and API

Sign in from a terminal with a one-time code, then manage repositories, SSH keys and tokens without a browser.

$ curl -fsSL https://sailfork.com/downloads/sf/install.sh | sh

$ sf auth login
Enter the one-time code WDJB-MJHT in your browser
Signed in as fenil
$ sf repo list
fenil/ocean-landing    private
fenil/dotfiles         public

Everything else is in the REST API, described by an OpenAPI spec at /api/openapi.json.

Limits

Written down, so nothing surprises you halfway through a push. Sign-in is rate limited per account and per address.

  • One push

    up to 100 GiB, finished within 100 minutes

  • The Linux kernel

    2.03 GiB, every commit since 2005

  • One file

    up to 10 GiB

The whole history of Linux fits in a single push 49 times over.
No limit
on how often you clone, fetch or push
100 minutes
for a single push to finish