Native · Rust · GPU-rendered

Orchestrate every branch at once.

Crane is a desktop development environment built entirely in Rust. Terminals, file editing, diffs, and full git workflows — orchestrated across isolated git worktrees, drawn on the GPU, shipped as a single binary.

98.7% Rust 0 Electron 1 binary MIT licensed
crane · main · feature/build
Crane running on the desktop — projects and worktrees in the left panel, a code editor in the center, and a git file tree on the right.

The model

Project Workspace Tab Layout Pane

A clean containment hierarchy — and a single window holds many projects at once. Each Workspace is one of a project's existing git worktrees, so moving between them never disturbs your other work.

What's inside

An IDE that thinks in worktrees.

Crane was designed from the worktree up. Everything — panes, git, the job system — exists to let you hold several lines of work in your hands at once.

01

Every worktree, in one place

Open a git project and Crane surfaces all of its existing worktrees at once — no checkout dance. Create or delete worktrees right from the app whenever you need a new branch on disk.

02

Many projects, one window

Keep several projects open side by side in a single window. Reorder them in the projects tree, and move workspaces between projects that share the same git remote.

03

GPU-rendered, single binary

Drawn with egui over wgpu. No Electron, no bundled browser, no web runtime. One native binary that starts instantly and stays out of your way.

04

A full git-log pane

A DAG history pane (Cmd+9) with lane-based layout and ref pills — green HEAD, purple local, blue remote, yellow tag. Right-click any commit to checkout, branch, spin up a worktree, cherry-pick, revert, or copy its hash.

05

Hunk-level git, in reach

Staged and unstaged tracking with per-hunk staging in the diff pane, plus a branch picker in the status bar that switches branches across every repo in the active workspace.

06

Zero idle subprocesses

No async runtime — just std::thread with parking_lot. A bounded JobSystem with cooperative cancellation. Only real file changes wake background work.

Composable panes

Build the layout your work needs.

Split, stack, and arrange any of these into a tab. Each pane is native code.

  • Terminal VT parser via the in-house crane_term crate beta
  • Files Tabbed editor — syntax highlighting & find / replace alpha
  • Diff Unified view with per-hunk staging stable
  • Markdown Rendered with pulldown-cmark stable
  • Browser wry-backed embedded webview alpha
  • PDF pdfium-render document viewer alpha
  • Git Log DAG history, ref pills, right-click commit ops alpha
Performance by architecture

Fast because it does nothing it doesn't have to.

No background spinning, no idle subprocesses, no garbage-collected runtime. Crane leans on threads, bounded work pools, and aggressive caching so the machine stays quiet until you actually do something.

  • std::thread + parking_lotNo async runtime overhead
  • JobSystemBounded worker pools, cooperative cancellation
  • FileWatcher50ms event coalescing on real changes
  • DirCacheZero-allocation directory reads
  • 38 unit testsCovering VT parser behavior
Getting started

From clone to running in three steps.

Grab a pre-built binary below, or build from source — you only need a recent Rust toolchain.

  1. 01

    Clone the repository

    # pure Rust, ~99% of the tree
    git clone https://github.com/rajpootathar/Crane.git
    cd Crane
  2. 02

    Build the release binary

    # requires Rust 1.94+
    cargo run --release
  3. 03

    Open a project

    Point Crane at a git repo (or any folder) and it surfaces every worktree the project already has. Add or remove worktrees as you need them, open as many projects as you like, then split a tab into the panes you want. Your session saves to ~/.crane/session.json automatically.

Download · v-latest · Free · MIT

Get Crane for your platform.

Pre-built binaries for every desktop. One file, no installer ceremony.

Prefer to build it yourself? Build from source →  ·  All releases live on GitHub ↗

Stop juggling branches.
Start orchestrating them.