Self-hosted build distribution for game teams

Game builds,
without the re-download.

V-Sync turns game builds into content-addressed chunks, so fetching a build transfers only the chunks missing from your local store—not a second copy of the whole build.

Built for
game teams
Runs on
your infrastructure
Works with
CLI + desktop app
V-Sync — Starfall Drift connected
Builds

Starfall Drift  ·  FastCDC  ·  BLAKE3

ϟ   live stream tip

v0.9.4 #4821

Passing ·  b3:a3f91c2e05  ·  19h ago

ϟ   Already on an older live build? Fetch this one in seconds — only 412 MB of new chunks.
WIN   ↓ 412 MBPS5   ↓ 486 MBXBX   ↓ 455 MBSW   ↓ 318 MB
Passingv0.9.5mara/grapple↓ 180 MB
Failingv0.9.5dev↓ 146 MB

The next build is usually mostly already on disk.

The old way

“I need that build.”
“See you tomorrow.”

A tiny change to a giant game build should not mean another giant download. V-Sync makes each new build reuse the content your team already has.

How it works

One shared memory
for every build.

  1. 01

    Commit a build

    V-Sync breaks files into content-addressed chunks and uploads only chunks the server does not already have.

    vsync commit ./build --stream nightly
  2. 02

    Point a stream

    Move a named stream such as live, rc, or a personal branch to the build your teammates need.

    live→ v0.9.4 #4821
  3. 03

    Fetch missing chunks

    V-Sync reads the build manifest, compares its chunk hashes with the local store, pulls the difference, then materializes a ready-to-run checkout.

    95% already local↓ 412 MB

Under the hood

A build is a manifest.
The data is shared.

Every regular file is split with FastCDC into variable-sized chunks (2 MiB average by default). Each chunk is addressed by a BLAKE3 hash and kept in a local content-addressable store.

A build is not a copied directory: it is a deterministic manifest of its file tree and ordered chunk references. The manifest’s hash is the build ID.

On commit, the client asks the server which hashes it is missing, uploads that subset, then registers the manifest. On fetch, it performs the same comparison in reverse. That is why a new build can be large on disk yet small on the wire.

Dedup depends on the build output. V-Sync is designed to re-synchronize across normal file shifts; non-deterministic packing or solid compression can still make a build largely new.

BUILD MANIFESTb3: a3f91c2e05file tree + ordered chunk hashes
7c8aa12fe09b3d6cc4a190de
already localmissing → transfer
local CAS remote CAS

CLI-first by design

For CI, build engineers,
and anyone in a terminal.

The vsync command is the primary interface: authenticate once, publish a build with its game/platform metadata, move streams, fetch by stream, version, or build ID, and manage the local cache.

For automation, CI supplies VSYNC_SERVER and VSYNC_TOKEN; developers can sign in with a personal token or an existing Perforce ticket.

$ vsync login --server https://builds.studio.com
logged in as ali

$ vsync --game starfall --platform win64 \
    commit ./Build --stream nightly --version 0.9.5
uploaded 146 MiB · 2,417 chunks already present

$ vsync --game starfall --platform win64 fetch nightly
pulled 42 chunks, 146 MiB → builds/starfall/win64/nightly

Made for the reality of game builds

Builds are huge.
The chunk delta isn’t.

Nightlies, QA repros, release candidates, and a teammate’s local work can reference most of the same chunks. V-Sync turns that overlap into much smaller transfers and a predictable local build library.

  • Content-defined chunkingRe-synchronizes with unchanged content after normal file shifts.
  • Content-addressed storageIdentical chunks are stored and transferred once.
  • Named build streamsShare a moving build pointer, not a folder path.
V-Sync streams view with live, release candidate, and development builds
Streams let the team share the build that matters right now.

Your builds stay yours

Self-hosted.
Team-ready.

Run V-Sync on a straightforward server you control. Each person signs in with their own access token; CI can publish unattended. It also supports Perforce-backed sign-in for teams already using Helix.

  • Simple deploymentOne ordinary Linux server, HTTPS, and local disk.
  • Multi-game, multi-platformKeep builds organized by game and target.
  • Retention and safetyPin important builds; clean up old, unreferenced content.
V-Sync build detail view showing platform-specific fetch options
See the exact build, platform, and transfer size before you fetch.

For the people who keep builds moving

01

Build & release

Publish nightly and candidate builds directly from CI, with the same command every time.

02

Engineering & QA

Fetch a known-good build or a precise repro without clearing room for another full copy.

03

Game teams

Share personal, feature, and team-wide streams without losing where a build came from.