Skip to main content

Forks

A fork creates a new bucket from a snapshot or the current state of a bucket, sharing objects by reference with zero copying. Unlike copying a bucket which duplicates all data, forks share the baseline data and only store new or modified objects.

  • Forks are instant: no data is copied at creation time.
  • Writes to the fork are isolated; the source bucket is never affected.
  • You can fork from the current bucket state or from any snapshot.
  • Forked buckets diverge from the source bucket at the moment of the fork.

How forks work

Traditional object storage forces a tradeoff: share buckets and risk corruption, or copy them and pay for expensive duplication. Tigris's append-only architecture eliminates this tradeoff. When you create a fork, Tigris creates new metadata pointers that reference the existing object versions. Writes to the fork create new versions: the forked bucket diverges from the source bucket at the moment of the fork.

A fork uses a snapshot as its starting point. When you create a fork, Tigris either uses a snapshot you specify or automatically creates one from the current bucket state.

Billing

You only pay for new object versions written to forks. Forks themselves incur no extra charges—you don't pay for the shared baseline data.

Use cases

Forks enable safe experimentation with production data:

  • Isolated testing: Fork production data for each developer, CI job, or staging environment. If something breaks, delete the fork.
  • Agent workflows: Give each AI agent its own fork to work in parallel without collisions. Each agent operates in isolation, preventing data corruption.
  • A/B testing: Fork datasets to run different models or training configurations on identical, immutable data splits.
  • Safe experimentation: Test transformations, migrations, or schema changes without touching production. If it goes wrong, delete the fork and start over.

How to create forks

Create a fork and view its forking history from the Tigris Console:

You can also create forks programmatically:

Example using the Tigris SDK for JavaScript:

import { createBucket } from "@tigrisdata/storage";

const result = await createBucket("my-fork", {
sourceBucketName: "my-source-bucket",
sourceBucketSnapshot: "1760550614083112540", // optional snapshot version
});

if (result.error) {
console.error("Error creating fork:", result.error);
} else {
console.log("Fork created");
}

For detailed instructions:

FAQ

Can I fork a fork?

Yes. Each fork is independent and can be further forked or snapshotted.

What happens if I delete the source bucket?

Source buckets cannot be deleted while forks depend on them. You must delete all forks first before deleting the source bucket.

Do I need to enable snapshots to use forks?

Yes. Snapshot support must be enabled at bucket creation to use forks.

Do forks affect performance?

No. Forks are metadata-only operations and don't slow down reads or writes.