LANCommander.SDK
2.2.0-alpha.2
Prefix Reserved
See the version list below for details.
dotnet add package LANCommander.SDK --version 2.2.0-alpha.2
NuGet\Install-Package LANCommander.SDK -Version 2.2.0-alpha.2
<PackageReference Include="LANCommander.SDK" Version="2.2.0-alpha.2" />
<PackageVersion Include="LANCommander.SDK" Version="2.2.0-alpha.2" />
<PackageReference Include="LANCommander.SDK" />
paket add LANCommander.SDK --version 2.2.0-alpha.2
#r "nuget: LANCommander.SDK, 2.2.0-alpha.2"
#:package LANCommander.SDK@2.2.0-alpha.2
#addin nuget:?package=LANCommander.SDK&version=2.2.0-alpha.2&prerelease
#tool nuget:?package=LANCommander.SDK&version=2.2.0-alpha.2&prerelease
LANCommander.SDK
The LANCommander SDK is a .NET 8 assembly designed to allow developers to implement their own client. Most of the core functionality of the official launcher is implemented directly in the SDK and currently supports functionality such as:
- Authentication to a LANCommander server
- Installation of games / redistributables
- Launching of games and play session tracking
- Media linking and downloading
- Game save uploading and downloading, including packing and extraction
- PowerShell script execution
- Updating player's alias and custom fields
- Submission of issues
- Game lobby scanning
Basic Use
In order to do almost anything through the SDK, you must have an authenticated instance of the LANCommander.SDK.Client class. Here is an example of how to instantiate the class and authenticate to a server:
var client = new LANCommander.SDK.Client("http://localhost:1337", "C:\\Games");
await client.AuthenticateAsync("username", "password");
Once the client is authenticated, everything you need is available as a manager under the client. For example, to install a game by ID you might use the following:
await client.Games.InstallAsync("114f653d-ea91-484b-8fe9-8e9bb58bde81");
Documentation
For full documentation, review the official LANCommander documentation.
Session renewal
Clients registered with AddLANCommanderClient<TSettings>() automatically renew access
tokens within one minute of expiry before sending authenticated API requests. Concurrent
requests share a single renewal, and rotated tokens are saved through ITokenProvider.
An API authentication rejection (401 or a redirect to the server's /Login page) triggers
one renewal and one retry, including for servers that still return login redirects.
Subscribe to AuthenticationSession.SessionExpired to return your UI to sign-in when
renewal is rejected. Authenticated requests then throw AuthFailedException with
AuthenticationErrorCode.TokenExpired. Network errors and server errors preserve stored
credentials rather than signing the user out. The launcher continues to support its
existing offline startup when the server cannot be reached.
Both the launcher and server need the session-renewal fixes. After upgrading a server that did not persist refresh tokens, sign in once to establish renewable credentials.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- CommandLineParser (>= 2.9.1)
- Crc32.NET (>= 1.2.0)
- DiscordRichPresence (>= 1.6.1.70)
- Microsoft.AspNetCore.SignalR.Client (>= 9.0.1)
- Microsoft.AspNetCore.SignalR.Client.SourceGenerator (>= 7.0.0-preview.7.22376.6)
- Microsoft.Extensions.Configuration (>= 9.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.19)
- Microsoft.Extensions.Logging.Configuration (>= 9.0.8)
- Microsoft.Extensions.Logging.Console (>= 9.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.9)
- Microsoft.PowerShell.Commands.Diagnostics (>= 7.4.19)
- Microsoft.PowerShell.SDK (>= 7.4.19)
- NetEscapades.Configuration.Yaml (>= 3.1.0)
- PeanutButter.INI (>= 3.0.396)
- Semver (>= 3.0.0)
- SharpCompress (>= 0.50.0)
- Superpower (>= 3.1.0)
- System.Management.Automation (>= 7.4.19)
- YamlDotNet (>= 16.3.0)
-
net8.0
- CommandLineParser (>= 2.9.1)
- Crc32.NET (>= 1.2.0)
- DiscordRichPresence (>= 1.6.1.70)
- Microsoft.AspNetCore.SignalR.Client (>= 9.0.1)
- Microsoft.AspNetCore.SignalR.Client.SourceGenerator (>= 7.0.0-preview.7.22376.6)
- Microsoft.Extensions.Configuration (>= 9.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.19)
- Microsoft.Extensions.Logging.Configuration (>= 9.0.8)
- Microsoft.Extensions.Logging.Console (>= 9.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.9)
- Microsoft.PowerShell.Commands.Diagnostics (>= 7.4.19)
- Microsoft.PowerShell.SDK (>= 7.4.19)
- NetEscapades.Configuration.Yaml (>= 3.1.0)
- PeanutButter.INI (>= 3.0.396)
- Semver (>= 3.0.0)
- SharpCompress (>= 0.50.0)
- Superpower (>= 3.1.0)
- System.Management.Automation (>= 7.4.19)
- YamlDotNet (>= 16.3.0)
-
net9.0
- CommandLineParser (>= 2.9.1)
- Crc32.NET (>= 1.2.0)
- DiscordRichPresence (>= 1.6.1.70)
- Microsoft.AspNetCore.SignalR.Client (>= 9.0.1)
- Microsoft.AspNetCore.SignalR.Client.SourceGenerator (>= 7.0.0-preview.7.22376.6)
- Microsoft.Extensions.Configuration (>= 9.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.19)
- Microsoft.Extensions.Logging.Configuration (>= 9.0.8)
- Microsoft.Extensions.Logging.Console (>= 9.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.9)
- Microsoft.PowerShell.Commands.Diagnostics (>= 7.4.19)
- Microsoft.PowerShell.SDK (>= 7.4.19)
- NetEscapades.Configuration.Yaml (>= 3.1.0)
- PeanutButter.INI (>= 3.0.396)
- Semver (>= 3.0.0)
- SharpCompress (>= 0.50.0)
- Superpower (>= 3.1.0)
- System.Management.Automation (>= 7.4.19)
- YamlDotNet (>= 16.3.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on LANCommander.SDK:
| Package | Downloads |
|---|---|
|
LANCommander.Server.UI
A Blazor component library for building UIs on the LANCommander platform |
|
|
LANCommander.Server.Plugins
The contracts a LANCommander server plugin builds against: navigation, routes, page access, API endpoints, and the services the server provides to plugins |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.2.0-alpha.3 | 35 | 10/27/2026 |
| 2.2.0-alpha.2 | 72 | 10/24/2026 |
| 2.2.0-alpha | 57 | 10/14/2026 |
| 2.1.17 | 56 | 10/21/2026 |
| 2.1.16 | 95 | 9/17/2026 |
| 2.1.15 | 86 | 9/8/2026 |
| 2.1.14 | 86 | 9/7/2026 |
| 2.1.13 | 103 | 9/5/2026 |
| 2.1.12 | 97 | 9/2/2026 |
| 2.1.11 | 104 | 8/25/2026 |
| 2.1.10 | 96 | 8/12/2026 |
| 2.1.9 | 96 | 7/28/2026 |
| 2.1.8 | 99 | 7/9/2026 |
| 2.1.7 | 92 | 7/5/2026 |
| 2.1.6 | 101 | 6/29/2026 |
| 2.1.5 | 100 | 6/26/2026 |
| 2.1.4 | 101 | 6/23/2026 |
| 2.1.3 | 104 | 6/16/2026 |
| 2.1.2 | 94 | 6/11/2026 |
| 2.0.0-alpha | 55 | 10/15/2026 |