Generated Computers
Locals는 Apple Silicon 엔진으로 로컬 LLM을 최대 3배 빠르게 실행하는 Generated Computers 제품
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Experience API (xAPI 2.0 / IEEE 9274.1.1, and 1.0.3) for .NET: models and validation, an async LRS client with a durable outbox, and a Learning Record Store you can embed in an ASP.NET Core app.
Status: 0.x. 0.3.0 is on NuGet and
the LRS image is on ghcr.io. The API can
change between minor versions until 1.0; the 1.0 milestone lists
what is left. Documentation: https://nurullahturkoglu.github.io/xapi-dotnet/
The 2.0 standard is IEEE 9274.1.1-2023, also adopted as ISO/IEC/IEEE 39274-1-1:2025.
| Package | What it is | Targets |
|---|---|---|
Xapi.Core | Statement model, strict JSON reading and writing for 1.0.3 and 2.0.0, validation, statement comparison | netstandard2.0, net10.0 |
Xapi.Client | Async client for every LRS resource, version negotiation, attachments, statement signing | netstandard2.0, net10.0 |
Xapi.Client.Outbox | Durable outbox: retries, error classification, dead letters, idempotent resend | netstandard2.0, net10.0 |
Xapi.Lrs | AddXapiLrs / MapXapiLrs: an LRS inside your ASP.NET Core app | net10.0 |
Xapi.Lrs.Sqlite | SQLite storage and migrations for Xapi.Lrs | net10.0 |
Xapi.Lrs.PostgreSql | PostgreSQL storage and migrations for Xapi.Lrs | net10.0 |
The netstandard2.0 builds are for .NET Framework 4.6.2 and later and for Unity. JSON is read and written by
hand with Utf8JsonReader and Utf8JsonWriter, without reflection, so the net10.0 builds of the Core,
Client and Outbox packages can be trimmed and published with Native AOT; CI publishes
samples/ConsoleClient that way and fails on any warning. Under Unity they pass their tests in the editor, in
IL2CPP players on macOS, Linux, Android and the iOS Simulator, and in WebGL, where requests go through
UnityWebRequestHandler from the Unity package in src/Xapi.Unity (docs/unity.md).
dotnet add package Xapi.Client
With using Xapi; and using Xapi.Client;:
using var http = new HttpClient();
var client = new XapiClient(http, new XapiClientOptions
{
Endpoint = new Uri("https://lrs.example.com/xapi/"),
Credentials = XapiCredentials.Basic(key, secret),
});
var statement = new Statement(
Agent.FromMbox("[email protected]", "Ada Learner"),
Verbs.Completed,
new Activity(new Iri("https://example.com/courses/fire-safety")));
var id = await client.SaveStatementAsync(statement);
Console.WriteLine($"The LRS stored statement {id}");
The client asks the LRS which xAPI version to use, validates the statement for that version and sends it.
To keep statements through network outages and restarts, put a
StatementOutbox in front of the client; in an ASP.NET Core app, register both with
AddXapiClient(...).AddOutbox(...) (example).
In an ASP.NET Core app with the Xapi.Lrs.Sqlite package:
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddXapiLrs(builder.Configuration.GetSection("Lrs"), options => options.MigrateOnStartup = true)
.UseSqlite("Data Source=lrs.db");
var app = builder.Build();
app.MapXapiLrs("/xapi");
app.Run();
appsettings.json lists the credentials under Lrs, without their secrets:
{
"Lrs": {
"Credentials": [ { "Key": "my-app", "Scopes": [ "all" ] } ]
}
}
The secret comes from user secrets or the environment (Lrs__Credentials__0__Secret). Clients then use
https://<your app>/xapi/ as their endpoint, with the key my-app and that secret. The LRS guide covers scopes, delegated authentication, PostgreSQL, migrations
and limits.
The LRS passes all tests of the
ADL LRS Conformance Test Suite at commit 5bc232d:
1,365 of 1,365 for xAPI 1.0.3 and 1,435 of 1,435 for 2.0.0, on SQLite and on PostgreSQL (as of commit
69bb8ff, 17 October 2026). Both batteries run against both databases in CI on every pull request, and the
gate fails on any failing or skipped test.
In two places the suite expects more than IEEE 9274.1.1 requires, and the LRS follows the suite. docs/conformance.md explains both, and how the gate works.
TinCan.NET, the library most .NET projects use today, has not changed since 2018: it targets net35,
its calls block, it exposes Newtonsoft.Json types, and it has no xAPI 2.0 support. Teams that need
durable sending end up writing their own outbox and retry logic. This project aims to be one maintained
set of packages for both sides, tested against the conformance suite. The
migration guide maps TinCan.NET calls and types to this library.
The design decisions are recorded as architecture decision records.
The Documentation site has these guides and the API
reference, built from main.
Versions follow Semantic Versioning. During 0.x, minor versions can contain breaking
changes; CHANGELOG.md lists them under "Breaking". Previews are published as
-preview.N. The storage interfaces of Xapi.Lrs are marked experimental (XAPI0001): they are not covered
by Semantic Versioning, also after 1.0, and may change in any release until they are declared stable (see
Experimental storage API).
Version 1.0.0 requires both conformance batteries to pass on both databases. What is planned for each version
is tracked in the milestones.
Contributions are welcome. Please open an issue before starting on anything larger than a small fix; see CONTRIBUTING.md. Report security problems privately as described in SECURITY.md.
Licensed under the Apache License 2.0. Third-party material is listed in THIRD-PARTY-NOTICES.md.
xAPI (Experience API) is a specification created by the Advanced Distributed Learning (ADL) Initiative and published as IEEE 9274.1.1-2023. "Tin Can API" is a former name of the specification. This project is an independent implementation and is not affiliated with, endorsed by, or certified by ADL, the U.S. Department of Defense, IEEE, or Rustici Software. IEEE is a registered trademark of The Institute of Electrical and Electronics Engineers, Inc.