← Back to Home

Lore — Epic Games' Next-Gen Open Source Version Control System

Lore — Epic Games' Next-Gen Open Source Version Control System

When Epic Games open-sourced Lore last month, the version control world took notice. Built in Rust from the ground up, Lore is a centralized, content-addressed VCS designed for the workloads that Git struggles with — multi-gigabyte binary files, massive monorepos, thousands of concurrent users, and game development pipelines where artists and developers share the same repository.

At its heart, Lore is two systems: a storage subsystem (a partition-based, content-addressed store that deduplicates all content) and a version control subsystem that builds revisions, branches, merges, and staging out of storage primitives. It's MIT-licensed, already powers Unreal Editor for Fortnite (UEFN), and comes with SDKs for Python, JavaScript, C#, Go, and Rust.

Why Is Lore Trending?

  • 3,100+ stars in under a month — rare for an infrastructure project of this ambition
  • From Epic Games — the creators of Unreal Engine, Fortnite, and dozens of AAA game franchises
  • Rust under the hood — performance, safety, and fearless concurrency from day one
  • Binary-first design — Git treats binaries as opaque blobs; Lore chunks them, deduplicates them, and fetches only what you need
  • Merkle tree architecture — content-addressed storage with BLAKE3 hashing, immutable revision chains, and cryptographic integrity
  • MIT license — fully open source, free for any use
  • Multi-language SDKs — bindings for Python, JS, C#, Go, and Rust
  • Pre-1.0 but production-proven — already used internally at Epic for UEFN (Unreal Editor for Fortnite)

Architecture Overview

Lore Architecture

Lore's architecture separates concerns into two clean layers. At the bottom sits the storage subsystem, which provides content-addressed immutable storage (keyed by BLAKE3 hashes) and a separate mutable key-value store for branch pointers and bookkeeping. On top of that, the version control subsystem builds revisions as Merkle trees, with files and directories hashed into a tree of fixed-size nodes.

Data flows through three core primitives:

  • Immutable Store — Every piece of content is stored once and addressed by its BLAKE3 hash. Files larger than a configurable threshold are split into chunks using FastCDC (content-defined chunking) or fixed-size splitting, so a single edit inside a multi-gigabyte file re-uploads only the changed chunks.
  • Mutable Store — Branch pointers, repository metadata, and name lookups live here. It's a separate, smaller key-value store that supports atomic compare-and-swap operations for safe concurrent updates.
  • Shared Store (Local) — On each machine, multiple working instances of the same repository share a single on-disk cache of immutable fragments, reducing disk usage and network transfers.

The Lore Server is a centralized service that manages partitions (16-byte access boundaries enforcing multi-tenant isolation), with optional caching tiers, read replicas, and hot/warm/cold storage backends.

Prerequisites

  • A Linux, macOS, or Windows machine (x86_64 or ARM64)
  • Ports 41337 (QUIC/gRPC) and 41339 (HTTP) free
  • No Rust toolchain needed — prebuilt binaries are available
  • No Docker required for the demo mode

Installation & Quickstart

Step 1 — Install Lore in Demo Mode

The install script downloads both the lore CLI and loreserver binary, puts them on your PATH, and starts a local server with an ephemeral store:

curl -fsSL https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.sh | bash -s -- --demo

On Windows (PowerShell):

$env:LORE_DEMO=1; irm https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.ps1 | iex

The server runs in this terminal listening on port 41337 (QUIC/gRPC) and 41339 (HTTP). Leave it running and open a new terminal.

Step 2 — Verify Server Health

curl -i http://127.0.0.1:41339/health_check

Expected: HTTP/1.1 200 OK with an empty body. Auth is disabled in demo mode.

Step 3 — Create a Repository

mkdir ~/my-project && cd ~/my-project
lore repository create lore://127.0.0.1:41337/my-project

Lore creates the repository on the server and initializes a working tree with a .lore/ directory containing the client configuration.

Step 4 — Add Files and Stage Them

echo "Hello, Lore" > hello.txt
python3 -c "import os; open('sample.bin', 'wb').write(os.urandom(256))"
lore add .

The lore add command stages files — unlike Git, Lore doesn't materialize fragments locally until commit time.

Step 5 — Commit

lore commit -m "Initial commit"

This creates a revision with a Merkle tree of the directory structure, hashes the file contents (chunking large files automatically), and stores everything in the immutable store.

Step 6 — Push to Server

lore push

Lore's push protocol uses resumable transfer — if the connection drops mid-push, it picks up where it left off. Only new fragments are sent.

Step 7 — Clone Into a Second Working Tree

mkdir ~/my-project-clone && cd ~/my-project-clone
lore clone lore://127.0.0.1:41337/my-project

Both working trees share the same on-disk shared store, so fragments are downloaded only once per machine.

Step 8 — Branching and Merging

Create a branch, make changes, and merge back:

lore branch feature-1
echo "Feature work" > feature.txt
lore add .
lore commit -m "Add feature"
lore checkout main
lore merge feature-1
lore push

Branches are lightweight mutable references — no data duplication. Merges use the Merkle tree structure to compute the merge base efficiently.

Key Concepts

Content-Addressed Storage

Every byte in Lore is addressed by its BLAKE3 hash. This means:

  • Identical files across branches or directories are stored once
  • Integrity is verified by hashing — if the hash matches, the content is correct
  • Comparisons between revisions are fast hash lookups, not byte-by-byte scans

Chunked Large File Storage

Files above a threshold (default configurable) are split into chunks using FastCDC (content-defined chunking) — boundaries are determined by the content itself, not fixed byte offsets. This means:

  • Editing 10 bytes in the middle of a 10 GB file uploads only the 2-3 affected chunks
  • Any byte range can be read without materializing the entire file
  • Deduplication works across versions even when insertions shift byte boundaries

Immutable Revision Chain

Each revision's hash is derived from its state (file tree hashes, parent revisions, metadata), forming a tamper-evident chain. You cannot rewrite history without breaking the chain — and the chain breakage is cryptographically detectable.

Sparse Working Copies by Default

Lore doesn't download everything upfront. Working trees fetch file data on demand as you access files. This is critical for large repositories where a full checkout would take hours or require terabytes of local storage.

Comparison: Lore vs Git vs Perforce

  • Binary files: Git treats binaries as opaque blobs (huge .git directory). Lore chunks them, deduplicates across versions, and fetches only needed ranges.
  • Scalability: Git bogs down at 50,000+ files or 100+ GB repos. Lore is designed for millions of files and multi-TB repositories.
  • Concurrent users: Git's distributed model doesn't enforce access control. Lore is centralized with partition-based multi-tenancy and fine-grained auth.
  • Atomic operations: Git has no server-side atomicity for pushes. Lore uses compare-and-swap on the mutable store for safe concurrent updates.
  • Checkout speed: Git clones download everything. Lore's sparse working copies fetch lazily — initial clone is seconds, not hours.
  • Large file handling: Git LFS is a bolted-on extension. Lore handles large files natively with chunking, FastCDC, and sparse reads.
  • API surface: Git's internals are porcelain/plumbing with evolving conventions. Lore has a versioned, public API with SDKs for 5 languages.

Verification Checklist

  • Lore server starts and responds to health checks on port 41339
  • Repository creation succeeds with lore repository create
  • Files can be added, committed, and pushed
  • Cloning produces a working second tree
  • Branching and merging produce correct revision history
  • Large binary files are chunked and deduplicated

Resources

← Retour à l'Accueil

Lore — Le Système de Gestion de Versions Nouvelle Génération d'Epic Games

Lore — Le Système de Gestion de Versions Nouvelle Génération d'Epic Games

Quand Epic Games a open-sourcé Lore le mois dernier, le monde des gestionnaires de versions a pris note. Construit en Rust à partir de zéro, Lore est un VCS centralisé à adressage de contenu conçu pour les charges de travail avec lesquelles Git peine — fichiers binaires de plusieurs gigaoctets, monorepos massifs, milliers d'utilisateurs concurrents et pipelines de développement de jeux où artistes et développeurs partagent le même dépôt.

Au cœur de Lore se trouvent deux sous-systèmes : un sous-système de stockage (un magasin à adressage de contenu basé sur les partitions qui déduplique tout le contenu) et un sous-système de gestion de versions qui construit révisions, branches, fusions et mise en scène à partir des primitives de stockage. Il est sous licence MIT, alimente déjà Unreal Editor for Fortnite (UEFN), et est livré avec des SDK pour Python, JavaScript, C#, Go et Rust.

Pourquoi Lore est-il Tendance ?

  • 3 100+ étoiles en moins d'un mois — rare pour un projet d'infrastructure de cette ambition
  • Signé Epic Games — les créateurs d'Unreal Engine, Fortnite et des dizaines de franchises AAA
  • Rust sous le capot — performances, sécurité et concurrence sans peur dès le premier jour
  • Conception orientée binaire — Git traite les binaires comme des blobs opaques ; Lore les fragmente, les déduplique et ne récupère que ce dont vous avez besoin
  • Architecture Merkle Tree — stockage à adressage de contenu avec hachage BLAKE3, chaînes de révisions immuables et intégrité cryptographique
  • Licence MIT — entièrement open source, libre pour toute utilisation
  • SDK multi-langages — bindings pour Python, JS, C#, Go et Rust
  • Pre-1.0 mais éprouvé en production — déjà utilisé en interne chez Epic pour UEFN

Architecture

Architecture de Lore

L'architecture de Lore sépare les préoccupations en deux couches propres. En bas se trouve le sous-système de stockage, qui fournit un stockage immuable à adressage de contenu (indexé par hachages BLAKE3) et un magasin de clé-valeur mutable séparé pour les pointeurs de branches et la comptabilité. Au-dessus, le sous-système de gestion de versions construit les révisions sous forme d'arbres de Merkle, où fichiers et répertoires sont hachés en une arborescence de nœuds de taille fixe.

Les données circulent à travers trois primitives fondamentales :

  • Stockage Immuable — Chaque contenu est stocké une fois et adressé par son hachage BLAKE3. Les fichiers dépassant un seuil configurable sont divisés en fragments via FastCDC, de sorte qu'une modification unique dans un fichier multi-gigaoctet ne réimporte que les fragments modifiés.
  • Stockage Mutable — Les pointeurs de branches, métadonnées du dépôt et recherches de noms vivent ici. C'est un magasin clé-valeur séparé qui supporte les opérations atomiques compare-and-swap pour les mises à jour concurrentes sécurisées.
  • Stockage Partagé (Local) — Sur chaque machine, plusieurs instances de travail du même dépôt partagent un cache disque unique des fragments immuables, réduisant l'utilisation du disque et les transferts réseau.

Le Serveur Lore est un service centralisé qui gère les partitions (limites d'accès de 16 octets imposant l'isolation multi-tenant), avec des niveaux de cache optionnels, des réplicas en lecture et des backends de stockage hiérarchiques.

Prérequis

  • Une machine Linux, macOS ou Windows (x86_64 ou ARM64)
  • Les ports 41337 (QUIC/gRPC) et 41339 (HTTP) libres
  • Pas besoin de Rust — les binaires précompilés sont disponibles
  • Docker n'est pas requis pour le mode démo

Installation et Démarrage Rapide

Étape 1 — Installer Lore en Mode Démo

Le script d'installation télécharge les binaires lore et loreserver, les ajoute à votre PATH et démarre un serveur local :

curl -fsSL https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.sh | bash -s -- --demo

Sur Windows (PowerShell) :

$env:LORE_DEMO=1; irm https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.ps1 | iex

Étape 2 — Vérifier l'État du Serveur

curl -i http://127.0.0.1:41339/health_check

Réponse attendue : HTTP/1.1 200 OK.

Étape 3 — Créer un Dépôt

mkdir ~/mon-projet && cd ~/mon-projet
lore repository create lore://127.0.0.1:41337/mon-projet

Lore crée le dépôt sur le serveur et initialise un espace de travail avec un répertoire .lore/.

Étape 4 — Ajouter des Fichiers et les Mettre en Scène

echo "Bonjour, Lore" > bonjour.txt
python3 -c "import os; open('fichier.bin', 'wb').write(os.urandom(256))"
lore add .

Étape 5 — Créer une Révision

lore commit -m "Premier commit"

Étape 6 — Pousser vers le Serveur

lore push

Le protocole de poussée de Lore utilise le transfert reprenable — si la connexion se coupe, la reprise se fait là où elle s'est arrêtée.

Étape 7 — Cloner dans un Second Espace de Travail

mkdir ~/mon-projet-clone && cd ~/mon-projet-clone
lore clone lore://127.0.0.1:41337/mon-projet

Étape 8 — Créer une Branche et Fusionner

lore branch fonction-1
echo "Nouvelle fonctionnalité" > fonction.txt
lore add .
lore commit -m "Ajout fonctionnalité"
lore checkout main
lore merge fonction-1
lore push

Concepts Clés

Stockage à Adressage de Contenu

Chaque octet dans Lore est adressé par son hachage BLAKE3 :

  • Les fichiers identiques dans différentes branches sont stockés une seule fois
  • L'intégrité est vérifiée par hachage — si le hachage correspond, le contenu est correct
  • Les comparaisons entre révisions sont des recherches de hachage rapides

Fragmentation des Fichiers Volumineux

Les fichiers au-dessus d'un seuil sont divisés en fragments via FastCDC (content-defined chunking) — les limites sont déterminées par le contenu lui-même :

  • Modifier 10 octets au milieu d'un fichier de 10 Go ne télécharge que les 2-3 fragments affectés
  • N'importe quelle plage d'octets peut être lue sans matérialiser le fichier entier

Chaîne de Révisions Immuable

Chaque hachage de révision est dérivé de son état (arbres de fichiers, révisions parentes, métadonnées), formant une chaîne infalsifiable.

Espaces de Travail Partiels par Défaut

Lore ne télécharge pas tout à l'avance. Les espaces de travail récupèrent les données à la demande.

Comparaison : Lore vs Git vs Perforce

  • Fichiers binaires : Git traite les binaires comme des blobs opaques. Lore les fragmente et les déduplique.
  • Passage à l'échelle : Git ralentit à 50 000+ fichiers ou 100 Go+. Lore est conçu pour des millions de fichiers et des téraoctets.
  • Utilisateurs concurrents : Git n'impose pas de contrôle d'accès. Lore est centralisé avec isolation multi-tenant par partitions.
  • Opérations atomiques : Git n'a pas d'atomicité côté serveur. Lore utilise compare-and-swap.
  • Vitesse de clonage : Lore clone en secondes avec des copies de travail partielles.
  • Fichiers volumineux : Git LFS est une extension rapportée. Lore gère les gros fichiers nativement.
  • Surface d'API : Lore a une API publique versionnée avec SDK pour 5 langages.

Liste de Vérification

  • Le serveur Lore répond aux vérifications d'état sur le port 41339
  • La création de dépôt réussit avec lore repository create
  • Les fichiers peuvent être ajoutés, commités et poussés
  • Le clonage produit un second arbre de travail fonctionnel
  • Les branches et fusions produisent un historique correct

Ressources