Febris.

XR and simulation training, on infrastructure you own.

Febris delivers training to headsets and desktops, and records what actually happened during the session as xAPI. One node owns everything it needs: identity and accounts, cohorts, curricula and modules, a statement store, usage analytics, and the artifact store that distributes the client software to devices. There is no Febris account, no licence key, and no service the maintainer operates.

How it fits together

Three pieces. A server you run, clients that deliver the training, and an SDK for the people building the simulations.

The node

An ASP.NET Core server you host. It holds your accounts and curricula, ingests xAPI statements from devices, and hands out the client software those devices run.

The clients

A Windows suite for desktop simulation, and an Android pair where a Mobile Server distributes modules to headsets over a direct WiFi link and relays their records back.

The SDK

Drop it into your own simulation to emit conformant statements. C# and C++ produce byte-identical output at the same version, so a mixed estate stays consistent.

What a node gives you

All of this is code in the repository rather than a roadmap. Where something is a seam rather than a finished feature, the project says so in its own README.

Learning records that survive audit
A dedicated xAPI store with its own database, statements deduplicated on the identifier their producer assigned, and the raw submission preserved alongside the parsed form.
Cohorts, curricula and modules
Organise learners, group them, assign curricula, and version the module archives that devices pull down.
Client distribution built in
The node is the artifact store. Devices ask it for the current build and it serves the bytes, checksum recorded, so a headset updates without anyone visiting a website.
Transport hardening the operator controls
HSTS, an exact-match CORS allow-list, frame and content-type headers, all from one configuration section, with defaults chosen so a node behind a TLS proxy does not loop.
Rate limiting that ships on by default
Per-IP endpoint rules returning 429, tuned tightly on login, password reset and token endpoints, retunable without a rebuild.
Nothing phones home
Federation to a hub exists as an opt-in gate and defaults to off. Learning records have no upward path at all. An air-gapped site is a supported deployment, not an afterthought.

Run one

A Docker Compose stack: Postgres 16, Valkey 8, the API, the portal, and a Caddy reverse proxy that issues its own certificate for local use.

git clone https://github.com/TRget88/Febris_Node.git febris-node && cd febris-node
./selfhost/generate-env.sh
docker compose up -d --build

The generated environment file prints your first login. Everything else, including backups, upgrades, TLS and going to production, is in SELF_HOSTING.md.

ComponentPlatformStatus
PC Client SuiteWindows 10 or later, x64Not yet published
Mobile ServerAndroid 10 or later, sideloadedNot yet published
Mobile CompanionAndroid 8 or later, installed onto the headsetNot yet published
Simulation SDK for C#.NET Standard 2.0Published
Simulation SDK for C++Windows x64, MSVC v143, C++17Published

Where the project actually is

Pre-1.0, and honest about it. Read this before you build on it.

Downloads

Every version, size and checksum below is read straight from the distribution feed, so this page describes exactly what the feed serves and nothing else. 2 of 5 components are published today, and the rest say so plainly rather than being hidden.

Not yet published

PC Client Suite

Windows 10 or later, x64

The Windows desktop suite: launcher, module manager, screen recorder, statement manager and progress bar. Runs the simulation session on the learner's machine and reports back to your node.

This client is built but not yet published. It is gated on release signing, and will appear here automatically once the feed carries it.

Not yet published

Mobile Server

Android 10 or later, sideloaded

The Android MDM server. Pairs with headsets over WiFi Direct, distributes module archives, and relays learning records back to your node.

This client is built but not yet published. It is gated on release signing, and will appear here automatically once the feed carries it.

Not yet published

Mobile Companion

Android 8 or later, installed onto the headset

The headset companion. Captures the session on-device and hands statements to the Mobile Server over a direct peer link.

Not a browser download. The Companion is delivered to the headset by your Mobile Server over a direct link, so it installs itself once the Server is paired and pointed at your node.

Version 0.1.0

Simulation SDK for C#

.NET Standard 2.0

Author conformant xAPI statements from a .NET simulation. Byte-identical output to the C++ SDK at the same minor version.

Add it to a project

dotnet add package Febris.Simulation.XApiSdk --version 0.1.0
Filefebris.simulation.xapisdk.0.1.0.nupkg
Size48.0 KB
SHA-2568d3666bc5748ab5472fcf1c57ac38fa61648b128ad30249a6f1aa0faebcac6cf
Version 0.1.0

Simulation SDK for C++

Windows x64, MSVC v143, C++17

The native twin of the C# SDK, with a flat C ABI for engines and hosts that cannot consume managed code. Verified byte-identical on every release.

Register the vcpkg registry

vcpkg-configuration.json -> registries -> https://github.com/TRget88/Febris_VcpkgRegistry

Then install

vcpkg install febris-simulation-sdk
Filefebris-simulation-sdk-cpp-v0.1.0-win-x64.zip
Size203.4 KB
SHA-2562570817c6462ae616b16f1ad9b7b77c003fbfc0765b10da7460a9cce2237cf59