Rift: A Better Alternative to Git Worktrees with Instant Copy-on-Write Snapshots

✍️ OpenClawRadar📅 Published: June 2, 2026🔗 Source
Rift: A Better Alternative to Git Worktrees with Instant Copy-on-Write Snapshots
Ad

Rift is a command-line tool and JavaScript FFI library that replaces Git worktrees with instant, copy-on-write snapshots. On Linux, it uses btrfs subvolumes and snapshots; on macOS, APFS clonefile. A 10GB workspace snapshot takes under 0.1 seconds.

Installation

npm install -g rift-snapshot
# or
bun add -g rift-snapshot

Release archives are available on GitHub.

Supported Platforms

  • Linux x64: Writable btrfs snapshots. rift init converts an ordinary directory into a btrfs subvolume.
  • macOS arm64 / x64: APFS clonefile. rift init registers the source directory.
  • Windows x64: Package published but workspace creation not yet implemented.

CLI Usage

Initialize in your project root:

cd ~/code/app
rift init

rift init picks the nearest Git root. Use --here to force the exact directory. On Linux, it converts to a btrfs subvolume with reflink import.

Create a workspace snapshot:

rift create --name parser-fix
rift create --into /fast/rifts

The new workspace has detached HEAD in a Git repo, preserving index and working tree.

List and manage:

rift list
rift ancestors
rift remove
rift gc

rift remove moves the workspace to an adjacent .trash folder. rift gc physically deletes trashed data.

Ad

Shell Integration

eval "$(rift shell-init zsh)"
# or bash

This changes directory automatically after init, create, or remove.

Storage Layout

~/code/app/           # source workspace
~/code/.rifts/app/parser-fix/  # created workspace
~/code/.rifts/app/.trash/      # removed workspace

Each managed workspace has a .rift marker; an SQLite registry tracks paths and parents.

JavaScript API

Supports Bun and Node.js (requires Node 26.1+ with --experimental-ffi).

import { create, list, remove, gc } from 'rift-snapshot';

const workspace = create({ from: process.cwd(), name: 'schema-work' }); console.log(list({ of: process.cwd() })); remove({ at: workspace }); gc();

Functions: init, create, remove, list, ancestors, gc. Options include at, name, into, database.

Rift is experimental — APIs may change. Works on Linux and macOS only for now.

📖 Read the full source: HN LLM Tools

Ad

👀 See Also