Lore is a next-generation, open source version control system https://lore.org
  • Rust 87.3%
  • Python 9.9%
  • C 2.1%
  • Shell 0.4%
  • HCL 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Valentin Ritzi 8297704fda lore-revision: verify a link merge's paths at the link's mount
## Motivation
`lore branch merge start` checked a linked repository's merge paths at the top-level root instead of at the link's mount, so local work inside a link went unnoticed until the merge had partly started. With several links, a later link or the main repository could also refuse after earlier links were already merged, leaving a half-started merge.

## Summary
A link's merge checks each changed and conflicting path where its mount holds it on disk. `merge start` checks every link and the main repository before writing anything, and refuses with `LocalModifications`, naming the path as the user sees it.

## Test Plan
Edit a file inside a link that the merge changes, then run `merge start`: it's refused, the edit is kept, and no merge is in progress. Reset the edit and the merge runs.

```
> lore branch merge start main --message "Merge main"
[Error] File has local changes: linked/repo/a.txt (incoming size 7 bytes, file system size 11 bytes)
[Error] Local modifications prevent synchronization
> lore branch merge abort
[Error] No merge is in progress
```

Lore-RevId: 2289
Lore-Signature: a05ddc64914a3b1de0fd3bf708a960443dc653359d762d445644fc207487384f
2026-11-10 09:43:39 +00:00
.cargo build: Add sccache binaries with the Lore cache backend for CI 2026-10-30 16:12:40 +00:00
.claude/skills Update the LEP and governance process 2026-11-09 13:40:34 +00:00
.github Update the LEP and governance process 2026-11-09 13:40:34 +00:00
contrib Add contrib/bench, a harness for repeatable P4 and Lore benchmarks over a shaped link 2026-11-10 06:20:12 +00:00
docs lore-revision: verify a link merge's paths at the link's mount 2026-11-10 09:43:39 +00:00
lore lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-aws lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-base lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-capi lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-chaos-client lore-revision: carry per-link commit messages through branch merge 2026-10-16 08:35:24 +00:00
lore-client lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-credential lore: return NotAuthenticated for expired refresh token refresh failures 2026-11-05 16:19:04 +00:00
lore-error-set Move lints from .cargo/config.toml rustflags to [workspace.lints] 2026-10-07 21:50:07 +00:00
lore-error-set-macro Move lints from .cargo/config.toml rustflags to [workspace.lints] 2026-10-07 21:50:07 +00:00
lore-fuse lore: Start the service for virtual clones, add a Linux FUSE how-to, create a move's missing parents 2026-11-07 15:12:59 +00:00
lore-hashicorp Move lints from .cargo/config.toml rustflags to [workspace.lints] 2026-10-07 21:50:07 +00:00
lore-integration-tests lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-io lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-macro lore: Add the FUSE virtual filesystem provider for Linux 2026-11-07 09:16:21 +00:00
lore-notification lore-transport, lore-revision: Report a refused request as NotAuthenticated or NotAuthorized 2026-11-06 06:16:32 +00:00
lore-proto lore-proto, lore-revision, lore-server: Attribute revisions on RevisionTree 2026-11-09 09:27:24 +00:00
lore-revision lore-revision: verify a link merge's paths at the link's mount 2026-11-10 09:43:39 +00:00
lore-server lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-storage lore: Add --fast-flush to write the local stores' index in place 2026-11-10 09:04:20 +00:00
lore-telemetry lore-server: Add per-phase timing to branch push 2026-10-29 13:32:11 +00:00
lore-transport lore: Add a machine-level Lore server for containers over Unix sockets (prototype) 2026-11-09 19:37:25 +00:00
notices notices: resolve license text for base64-simd, vsimd, and rs-consul 2026-06-05 17:53:57 +00:00
scripts lore-revision: verify a link merge's paths at the link's mount 2026-11-10 09:43:39 +00:00
vendor Reject a path by a glob's literal prefix and suffix before matching 2026-11-02 17:41:28 +00:00
.dockerignore Initial code copy from private repo 2026-05-29 18:50:20 +00:00
.gitignore docs: Strengthen review, testing and terminology rules 2026-11-05 20:50:29 +00:00
.loreignore contrib/oidc: Add a local ZITADEL provider example 2026-11-09 11:42:50 +00:00
.markdownlint-cli2.jsonc docs: add content_tabs hook for comment-delimited tabs 2026-06-12 20:50:31 +00:00
.pre-commit-clippy.py Add missing executable bit on precommit script and add missing entries to ignore file 2026-06-01 09:00:30 +00:00
.pre-commit-config.yaml lore: Add the FUSE virtual filesystem provider for Linux 2026-11-07 09:16:21 +00:00
.rustfmt.toml Initial code copy from private repo 2026-05-29 18:50:20 +00:00
.vale.ini docs: add project level README, migrate Lore design doc, updated branding assets, and glossary 2026-06-05 22:47:33 +00:00
about.toml notices: resolve license text for base64-simd, vsimd, and rs-consul 2026-06-05 17:53:57 +00:00
AGENTS.md Update the LEP and governance process 2026-11-09 13:40:34 +00:00
build-helper.rs lore-base: Stamp the build version into finished artifacts post link 2026-09-25 08:43:00 +00:00
Cargo.lock lore: Add a machine-level Lore server for containers over Unix sockets (prototype) 2026-11-09 19:37:25 +00:00
Cargo.toml lore: Add a machine-level Lore server for containers over Unix sockets (prototype) 2026-11-09 19:37:25 +00:00
clippy.toml lore-base: Shrink the tokio blocking pool to a fixed two-thread vestige and unify the thread count calculations 2026-08-08 15:07:09 +00:00
CODE_OF_CONDUCT.md Initial code copy from private repo 2026-05-29 18:50:20 +00:00
CONTRIBUTING.md Update the LEP and governance process 2026-11-09 13:40:34 +00:00
DCO Initial code copy from private repo 2026-05-29 18:50:20 +00:00
deny.toml Initial code copy from private repo 2026-05-29 18:50:20 +00:00
GOVERNANCE.md Update the LEP and governance process 2026-11-09 13:40:34 +00:00
LICENSE Initial code copy from private repo 2026-05-29 18:50:20 +00:00
MAINTAINERS.md update MAINTAINERS to propose adding specialist maintainers 2026-06-23 21:51:30 +00:00
mkdocs.yml Update the LEP and governance process 2026-11-09 13:40:34 +00:00
pyproject.toml Make SWFS enabled by default and include the SWFS library. 2026-11-06 16:44:46 +00:00
pyrightconfig.json Initial code copy from private repo 2026-05-29 18:50:20 +00:00
README.md docs: add public roadmap and crosslink to it across the docs 2026-06-17 11:11:32 +00:00
SECURITY.md update SECURITY to include link to Vulnerability Disclosure Program 2026-06-15 15:39:15 +00:00
uv.lock tests: Bound requires-python below 3.15 so uv runs the smoke tests on a CPython the locked grpcio ships wheels for 2026-10-13 06:23:28 +00:00

Lore — open source version control by Epic Games

Lore

Next-generation open source version control

Download Lore  ·  Quickstart  ·  Read the docs  ·  Join the conversation

License: MIT Built with Rust

Table of contents

About Lore

Lore is an open source version control system designed for unprecedented scalability of both data and teams. It is optimized for projects that combine code with large binary assets, including games and entertainment, and caters for the needs of developers and artists alike.

Note

Lore is pre-1.0 and under active development. Interfaces, on-disk formats, and APIs may change between releases.

(back to top)

Get started with Lore

  • Quickstart — install Lore and make your first commit by following the quickstart guide.
  • Read the docs — delve into Lore's ethos and architecture in the Lore documentation.
  • Have questions? — the FAQ covers licensing, supported platforms, production readiness, and how Lore compares to other version control systems.
  • See where Lore is headed — the roadmap lays out the big-rock features by time horizon, from scalable locking to an open source desktop client.
  • Join the conversation — chat with us and our community on Discord.

Or try it right now — install Lore and start a local server in demo mode:

macOS / Linux

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

Windows (PowerShell)

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

(back to top)

Overview

  • Easy setup, on-demand scalability — Get started in local mode in minutes. Then, scale up as far and as fast as you need.
  • Fast and efficient processes — Scale without slowdowns, thanks to shared, reusable data and as-needed downloads.
  • Free branching — Quickly and easily create, manage, and sync branches to freely experiment, iterate, and release.
  • History you can trust — Confidently track and manage revisions with Lore's verifiable tamper-evident source of truth.
  • Intuitive interface — Enjoy complete one-to-one access to the full Lore functionality via the CLI.
  • Full-surface API — Extend, customize, and integrate Lore via C/C++, C#, Rust, Go, Python, or JavaScript.

Note

Lore is the built-in version control system for UEFN (Unreal Editor for Fortnite), but today's open source tooling can't yet talk to it: the UEFN build uses a proprietary compression format that can't ship with the open source project. We're actively moving UEFN onto an open compression format — the same one this open source project uses — to eliminate the gap between the two.

(back to top)

Lore's architecture

Lore is a centralized, content-addressed version control system that represents repository state as Merkle trees and an immutable revision chain, optimized for binary-first storage, deduplication, and sparse/on-demand data hydration at scale. For the full model—on-disk formats, chunking internals, and the mechanics of the Merkle tree—read the system design doc.

Highlights

  • Content-addressed storage — Repository data is stored and referenced by content hash in a Merkle tree, enabling fast comparisons, integrity checks, and reuse across history and branches.
  • Immutable revision chain — A revision's hash signature is derived from its revision state, including parent revision hashes and contained data hashes, forming an immutable chain with cryptographic integrity.
  • Chunked storage for large files — Files are stored as reusable chunks with indexed lookup, reducing duplication and enabling efficient updates and transfer for large binary assets.
  • On-demand hydration and sparse workspaces — Workspaces can stay lightweight by fetching file data only when needed, so you don't have to download everything up front.
  • Centralized service with caching — A service-backed architecture uses caching in front of durable storage to scale throughput for large teams and repositories.
  • Lightweight branches and fast switching — Branches are lightweight mutable references, so creating and switching branches is low-overhead without duplication of underlying data.

(back to top)

Lore's repositories

Lore spans a family of repositories: the core library, server, and CLI in this repository, plus a software development kit (SDK) for each supported language.

Repository Description Link
Lore Library, Server & CLI The core Lore library, the Lore Server, and the Lore CLI. You are here. View on GitHub
JavaScript SDK The JavaScript binding for the Lore API. View on GitHub
Python SDK The Python binding for the Lore API. View on GitHub
C# SDK The C# binding for the Lore API. View on GitHub
Go SDK The Go binding for the Lore API. View on GitHub

(back to top)

Fully open source

We believe a truly open ecosystem is built collectively using open standards. Lore is fully open source under an MIT license, and we invite you to build the version control system of the future in the open. See CONTRIBUTING.md to get involved.

(back to top)

Contributing

Contributions of every kind are welcome — code, documentation, bug reports, and reviews. Start with CONTRIBUTING.md for the development workflow, then read the Code of Conduct and the project governance model. New to the codebase? The good-first-issue label is a good place to start.

(back to top)

License

Lore is released under the MIT License. See LICENSE for the full text. Copyright (c) 2026 Epic Games, Inc.

(back to top)

Contact and community

  • Discord — chat with the team and community on Discord.
  • GitHub Issues — report bugs and request features through GitHub Issues.

(back to top)