Caissons, in private testing
Agents edit the repository, not a copy of it.
A caisson is an online worktree on Sailfork. Each agent reads and writes files in the repository itself, on its own branch, with no clone on a disk and no sandbox to start. Its work comes back as a pull request.
One agent, start to finish
It opens a caisson on its own branch, works in the repository on Sailfork, and hands back a pull request. See how caissons work
sailfork.com/acme-pay/api
- open agent/round-totals caisson
- read src/billing/invoice.ts
- read src/billing/money.ts
- edit src/billing/invoice.ts +4 −2
- edit src/billing/invoice.test.ts +18
- commit Round invoice totals
- open pull request #418
Clone race
The Linux kernel, served by Sailfork and by stock git on the same machine. How it was measured
Sailfork
Pack segments, sent as stored
1.89 s
$ git clone https://sailfork.com/torvalds/linux
First byte after 0.14 ms, 2.17 GiB sent in 1.89 s.
git upload-pack 2.54
Pack bitmap, same machine
8.89 s
$ git clone file:///srv/git/linux.git
First byte after 4.50 s, 2.03 GiB sent in 8.89 s.
linux.git, 11,845,633 objects, replayed at the measured speed. Server time to send the pack, median of 5 runs on one Apple M4 Max; git had a pack bitmap. Your machine still resolves deltas after the pack arrives.
Copied, not computed
Where the 4.5 seconds go, and why Sailfork skips them.
Stock git
First byte at 4.50 s
Sailfork
First byte at 0.14 ms, about 32,158 times sooner
- Stored ready to send
- When you push, Sailfork writes the repository as pack segments. A clone sends those segments as they are.
- Nothing to count first
- Stock git enumerates objects and builds a pack for every clone, even with a bitmap. That is the 4.5 seconds before its first byte.
- The git you already have
- No client to install. Push and clone with stock git over HTTPS or SSH.
Every operation, timed
Clones, shallow clones and fetches, from the first byte to the last. Every number
Sailfork Stock git
Full clone
11,845,633 objects
0.14 ms4.50 s32,158x
Shallow clone
101,713 objects
0.18 ms2.86 s15,863x
Fetch 100 commits
8,434 objects
0.32 ms195.26 ms610x
CPU to serve 1 GB of a full clone
Fast, and still git
A push is acknowledged only once it is durable in storage and recorded. Then it was tested until it broke.
- Push arrives
- Durable in storage
- Recorded
- Acknowledged
git’s own test suite
pass
0 differences
0 lost
Room for big repositories
Written down, so nothing surprises you halfway through a push.
- 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
- No limit
- on how often you clone, fetch or push
- 100 minutes
- for a single push to finish
Everything around the git
Review
Reviews, drafts and threads. Merge, squash or rebase behind branch rules.
Browse
Blame, diffs and path history, highlighting for 16 languages and a fuzzy file finder.
Script
A REST API with an OpenAPI spec, tokens scoped to what they need, and ed25519 SSH keys.
$ curl -fsSL https://sailfork.com/downloads/sf/install.sh | sh
Installs sf, the command-line client for sign-in, repositories, SSH keys and
tokens.
Where your code lives
And everything Sailfork keeps about you while it is there.
- us-east-2
- Amazon Web Services, Ohio. Email goes through Amazon SES.
- 1 cookie
- A session cookie, set only when you sign in
- 0 trackers
- No advertising or tracking cookies
- 0 analytics
- No analytics scripts on any page