Open source · Apache 2.0

Version control built for binary-heavy projects

Nipa blends Git-style branching and merge requests with Perforce-style binary streaming and locking, plus SVN-style path permissions. One centralized, self-hosted system for game studios, 3D pipelines, and media monorepos.

In active development · Go + gRPC · FastCDC + BLAKE3 · SQLite & Postgres · Run it yourself

get the server running
$git clone https://github.com/nipalab/nipa.git
$cd nipa && make web-install && make build
$./bin/nipad# gRPC, REST and web UI on :6745

One system, three traditions

Everything your team already knows, in one tool

Nipa rebuilds the workflows artists and engineers rely on around a content-addressed chunk store — so branching, locking, and permissions all work at binary scale.

Branching & merge requests, like Git

Create branches from any commit, review changes in merge requests with inline threads, and resolve conflicts with three-way text merges. Reviews are per-head — stale approvals drop automatically when the source branch moves.

Binary streaming & locking, like Perforce

Files are split into FastCDC chunks addressed by BLAKE3, so updates and branch switches transfer only what actually changed. Tracked binaries are mandatory-lock gated, and directory-prefix locks cover a whole editing pass.

Path permissions & one source of truth, like SVN

Fine-grained path-based access rules and groups keep art, design, and code separated inside one monorepo — with a centralized, self-hosted source of truth instead of a distributed free-for-all.

Built for studios

Artists and engineers, one repo, no friction

Game builds, 3D pipelines, and rich media break tools designed around line-based diffs. Nipa is designed around the way asset-heavy teams actually work.

  • Lock the file, not the pipeline

    Tracked .blend, .psd, and .fbx edits are mandatory-lock gated. Artists take a lock on the asset — or a directory prefix covering a whole editing pass — and everyone sees exactly who owns it.

  • Branch without cloning half a terabyte

    Content-addressed chunks are cached locally, so switching branches only transfers the chunks that actually differ. A new branch does not mean re-downloading the asset library.

  • Review the change, not the noise

    Merge requests show three-dot diffs against the merge base, with inline threads and per-head review decisions. When the source branch moves, stale approvals are dismissed automatically.

nipalab.com/acme/game/merge-requests/42
Nipa web UI showing a merge request diff (placeholder for a real screenshot)
Web UI screenshot placeholder — a real capture drops in here.

Capabilities

A complete system, not a plug-in

From storage to review to permissions, everything ships in the server and CLI — no patchwork of add-ons to assemble.

Chunk-level sync

FastCDC chunking with BLAKE3 hashing and per-format chunk profiles — 4 MB for packed assets, 64 KB for in-place-edited formats like .blend and .psd. Updates move only the chunks that changed.

Mandatory binary locking

Modified or removed binaries cannot land without a lock covering them. Directory-prefix locks span a whole editing pass; branch-scoped locks keep parallel work safe.

Merge requests & reviews

Three-dot diffs, inline threads, per-head review decisions, reviewer requests, and an activity timeline. Pushing to the source branch dismisses stale approvals automatically.

A real diff engine

Myers line diffs with rename detection, whitespace-ignore modes, and external difftool support. Working-tree diffs run offline from the local chunk cache.

Path-based access control

Permission rules and groups scope access per path. Manifests are pruned server-side, so team members only ever see the parts of the monorepo they should.

Web UI included

Browse trees and history, review merge requests, manage locks and permissions from a React SPA embedded in the server binary. No extra services to deploy.

Local client daemon

nipa serve exposes a loopback gRPC API for GUI clients — the desktop app, Windows Explorer integration, and game-engine plugins all share one API.

AI-agent ready

nipa mcp serves a working copy over the Model Context Protocol. JSON output, dry-runs, and stable exit codes make scripting and agent automation first-class.

Quickstart

Your own server in a few commands

Nipa builds from source while the project is in active development. You need Go 1.27+ and Node 20+ to build the embedded web UI.

Build and run the server

bash
$git clone https://github.com/nipalab/nipa.git
$cd nipa && make web-install && make build
$./bin/nipad# gRPC, REST and web UI on :6745

Clone a repository and push

bash
$./bin/nipa clone http://localhost:6745/org/project ./work
$cd work
$nipa add assets/hero.blend
$nipa push -m "hero mesh"

A fresh server seeds a super admin account — see the README for first-run credentials and config.yaml.sample for settings. Storage is SQLite out of the box.

Comparison

How Nipa compares

A quick look at the trade-offs teams weigh when assets outgrow line-based version control.

Capability NipaGit LFSPerforce Helix CoreSubversion
Binary storage Chunk-level streaming with FastCDC + BLAKE3 and per-format chunk profilesPointer files in Git, assets in a separate LFS storeCentral depot with server-side streaming and deltasCentral repository with delta compression
File locking Mandatory on tracked binaries; directory-prefix and branch-scoped locksOptional, advisory git lfs lockStrong central lockingOptional svn:needs-lock, advisory
Branching & review Lightweight branches, merge requests, inline review threadsGit branching; review via the hosting platformStreams and branches; review via add-onsDirectory-copy branches, no native review flow
Path-based access control Yes — path-level permission rules and groupsRepository-level, hosting dependentYes — protections tableYes — authz path rules
Offline working-copy diffs Yes — working tree vs synced snapshot, no server round-tripText only; binaries live in LFSOpened-file model, server-assistedYes — local working copy compares
Web UI & API Embedded SPA, REST and gRPC in one self-hosted binaryHosting platform dependentCommercial tools (P4V, Helix)Third-party viewers
License & hosting Apache 2.0 community edition, self-hosted; ee/ under enterprise licenseMIT client, server variesCommercial licenseApache 2.0, self-hosted

Comparison reflects typical self-hosted configurations; capabilities vary with hosting providers and add-ons.

Ship binaries without the pain

Self-host Nipa and keep branching, locking, reviews, and permissions in one place — built to move gigabytes without slowing your team down.