Releasing Anchorpoint for Lore
Anchorpoint for Lore – a fast, visual desktop client for Epic's new version control system

TL;DR:
ue6-main branch. It works, but needs workarounds: builds have to be started by hand and the agent needs the Lore port set explicitly.This week we made a trip to London. The AWS for Games Hackathon was a full day of hands-on building for game developers, run by AWS together with Code Wizards, MPG (The Multiplayer Group) and Databricks. In small teams we could pick one of three pillars and build a prototype or a proof of concept:
We got access to Amazon Bedrock, Kiro, Databricks, GameLift and all the other AWS services in an AWS Workshop account. In two building blocks around lunch, roughly four hours in total, we could prepare our demo.
Our idea for the pipeline pillar was to build a proof of concept for a CI/CD pipeline around Lore, Epic's new open-source version control system. The loop we wanted: an artist pushes a change in Anchorpoint, a tester can start a build for the change, and a few minutes later they can play exactly that revision as a build in the browser for testing. No local build, no download, no installer needed.
Around Lore we needed three more things:
Since four hours on the day wasn't much time for all of that, and the sandbox accounts were only available for the day, we prepared some of the deployment steps beforehand and ran a small local Horde + Lore test to see whether the Horde Lore plugin already works in its current state. On the day we applied everything from our prepared Terraform setup in the sandbox account and made fixes where necessary.
Everything on AWS runs in one region (us-west-2 in the sandbox):
loreserver 0.10.0 image. Chunks go to S3, metadata and locks to four DynamoDB tables. Lore terminates its own TLS with a Let's Encrypt certificate, because its QUIC transport needs UDP and can't sit behind an Application Load Balancer (ALB).Out of the box, Horde's CI currently only supports Perforce. Epic's Lore support exists only on the unreleased ue6-main branch of the Unreal Engine GitHub repository, in two parts:
Engine/Source/Programs/Horde/Plugins/Lore/HordeServer.Lore, a server plugin that reads a stream's history from Lore.Engine/Source/Programs/Horde/Drivers/LoreDriver, an agent-side job driver that materializes a Lore workspace using the lore CLI.The first commit (August 2026) says it is work in progress and will change significantly. There are no docs, the plugin is off by default, and it isn't in the published Horde images. Everything below reflects the branch as we pinned it in late September 2026.
The mapping is simple. A Horde commit ID is the 64-character Lore revision signature, and the change number is the per-branch revision number, so BuildGraph's $(Change) becomes the Lore revision. A Lore-backed stream looks like this (trimmed):
{
"name": "StackOBot/main",
"vcs": "Lore",
"repositoryName": "<lore repository name>",
"defaultBranchName": "main",
"enginePath": "../../../Epic/UE_5.6/Engine",
"workspaceTypes": {
"Lore": {
"identifier": "SOB",
"method": "name=Lore&branch=main&useSharedStore=true",
"incremental": true
}
},
"templates": [{
"id": "package-win64",
"jobOptions": { "driver": "LoreDriver" },
"arguments": [
"-Script=D:/H/SOB/Sync/StackOBot/Build/Hackathon.xml",
"-Target=Publish Win64"
],
"schedule": { "enabled": false }
}]
}
On the server, the plugin needs Horde__Plugins__Lore__Enabled=true, Horde__Plugins__Lore__ApiKey (the horde-ci key) and plugins.lore.address pointing at the Lore gRPC endpoint in globals.json.
ue6-main. Run Setup.bat for the Git dependencies (the Lore .proto files come from there), then the Build HordeServer with Dashboard target of BuildHorde.xml.JobDriver and LoreDriver, and lore.exe 0.10.0 in LoreDriver/Tools/win-x64/. BuildHorde.xml doesn't package LoreDriver, so we assembled the package ourselves.BuildCookRun for Win64, aws s3 sync into the revision's folder, then a callback to our web dashboard with the S3 prefix.POST /api/v1/jobs with the Lore revision. With a single laptop as the only agent, deliberate builds suited us anyway, since we didn't need to build every revision.lore CLI dialed gRPC on 443 and the sync failed. Setting LORE_GRPC_PORT=41337 in the agent's service environment fixes it.ue6-main Horde works. 5.6's BuildGraph accepts every argument the newer executor passes (-HordeExport, -ListOnly, -SingleNode).conformDiskFreeSpace: 0 loops forever. The zero turns into null on the agent's round trip, the server's comparison never matches, and every conform starts again ("Pending workspaces have changed - running conform again"). Leave the field unset. We only hit this one on the day itself.%LOCALAPPDATA%\UnrealEngine and related folders for the account the agent runs as. We run the agent as a SYSTEM service, point UE-LocalDataCachePath at a separate DDC folder, and give the SYSTEM lore CLI a file-based token store (LORE_AUTH_STORE=fallback).D3D12RayTracing.cpp. Session logs in S3 pointed straight at it. We could fix it by setting r.RayTracing.Enable=0 with r.RayTracing.EnableOnDemand=0.contrib/aws Terraform example.Anchorpoint for Lore signs in through the browser with Cognito, once. We change the color of a material on the start level, commit and push. The new revision shows up in the dashboard's revision list with its number, message and author.
The initial import of the sample (1,961 files, about 1 GB) went in once via the Lore CLI. Content uploads during lore commit; the lore push afterwards took 6 seconds.
Clicking Build starts Horde's package-win64 job for that revision. The laptop agent leases it, syncs the revision from Lore, packages Win64 with the local UE 5.6, uploads the 1.3 GB build to its S3 folder and calls the dashboard back. The revision turns succeeded and shows its S3 prefix and a link to the Horde job.
On the laptop (i7-12700H, 32 GB) a cold cook and package took 12.6 minutes. With a warm DDC, an incremental package took 79 seconds.
As soon as the build callback arrives, the dashboard creates a GameLift Streams application from the revision's folder. When someone clicks Play, it creates a stream URL and opens the AWS-hosted player in a new tab. Stop revokes the URL, ends the session and scales capacity back to zero. The dashboard's Pre-warm button keeps one idle instance ready before a demo, which hides the Windows cold start.
The hackathon was a great day. Four hours is short for a pipeline this size, and the local rehearsal the week before is what made it fit. A huge thank you to Carl Prescott and Lawrie Williams for their technical support during the event, and thanks to Code Wizards, MPG and Databricks for supporting it.
Many conversations on the day turned to Lore. There is general interest in it, and studios want to know how ready it is for production. Our answer after this build: the core works well, and the edges are still raw. Lore is pre-1.0. It relies on an external service for auth, and the clients don't speak OIDC yet. The Horde integration lives on an unreleased branch, and Horde can't yet start a build from a Lore push.
Here's what we'd like to see next:
For Anchorpoint, this is the direction we are going. Anchorpoint becomes the place where you manage Lore repositories: projects, members, permissions and sign-in, as the dashboard did in this proof of concept. On top of that come the asset management features Anchorpoint can offer, like previews, tags and reviews. The goal is a complete setup with auth for your Lore usage, so a studio doesn't have to build what we built for this hackathon. If you want to try Lore with a desktop client today, have a look at Anchorpoint for Lore.