Cratis.Ante.Contracts 0.9.0

Prefix Reserved
dotnet add package Cratis.Ante.Contracts --version 0.9.0
                    
NuGet\Install-Package Cratis.Ante.Contracts -Version 0.9.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cratis.Ante.Contracts" Version="0.9.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cratis.Ante.Contracts" Version="0.9.0" />
                    
Directory.Packages.props
<PackageReference Include="Cratis.Ante.Contracts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cratis.Ante.Contracts --version 0.9.0
                    
#r "nuget: Cratis.Ante.Contracts, 0.9.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cratis.Ante.Contracts@0.9.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cratis.Ante.Contracts&version=0.9.0
                    
Install as a Cake Addin
#tool nuget:?package=Cratis.Ante.Contracts&version=0.9.0
                    
Install as a Cake Tool

Ante

Ante (the initial stake in a poker game) is Cratis's SaaS invitation system: signed invitations, a lobby where invitees register, and event-based coordination with the host product.

License: MIT Build Publish NuGet Discord

The problem

Getting people into a SaaS product starts before they have an account. Someone has to be invited, the invitation has to be trustworthy, and the moment an invitee actually registers has to connect back to the invitation that brought them in. Doing this ad hoc in every product means re-solving the same questions each time: how invitations are issued, how they are verified, and how the rest of the system learns that an invitee arrived.

Ante's scope is exactly that slice — nothing more: signed invitations, a lobby where invitees register, and event-based coordination so the surrounding system can react to what happens.

How Ante works

  • Signed invitations. A host product appends an invitation event to its own Chronicle outbox; an inbox reactor in Ante picks it up, mints an RSA-signed JWT, and hands it back as InvitationTokenIssued — the host builds the link and emails it. Ante is the one place the signing key lives; no host reimplements the scheme.
  • The lobby. A React SPA with three wizards — join an existing tenant, set up a new organization, self-service registration — driving Ante's generated command/query proxies directly, with an optional pluggable terms-and-conditions step.
  • Event coordination. Everything crossing the boundary is a Chronicle event: invitations in, acceptances and registrations out. The host reacts to what Ante produces; Ante never calls back into the host directly.

Status: v1

Ante v1 is implemented and buildable — a working .NET/Chronicle backend, a React lobby SPA, and specs for every slice (60 in-process backend specs, plus Vitest specs for the frontend's pure logic and the legal-acceptance component). It is not yet wired up as a deployed instance for any product — see Deployment for what that would take.

Extracted from the lobby inside Cratis Studio and generalized into a standalone, reusable product — Studio-specific naming is gone, and Studio's own document-authoring/provisioning-confirmation machinery was not carried over. See Boundaries for what Ante deliberately does not do.

CI and publishing

CI builds, tests, lints, and type-checks on every push and pull request (.github/workflows/build.yml). Every pull request must carry a major/minor/patch/no-release label (.github/workflows/verify-semver-label.yml); merging a version-labelled one releases ghcr.io/cratis/ante and Cratis.Ante.Contracts on NuGet.org under a real semantic version, via cratis/release-action (.github/workflows/publish.yml). See Deployment for details.

Documentation

Full documentation — configuration reference, the invitation lifecycle, the host integration contract, the lobby wizards, deployment, and what Ante deliberately does not do — lives in Documentation/. Start with Getting Started to run it locally, or Host Integration to wire a product up to it.

Part of the Cratis ecosystem

Ante is a Cratis project, built on event sourcing with Chronicle and CQRS with Arc for ASP.NET Core, following the vertical-slice conventions in .ai/. The lobby SPA is built with @cratis/components on PrimeReact. Everything Cratis publishes today is MIT licensed and free to use — join the community on Discord.

License

Ante is licensed under the MIT License and free to use.

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.9.0 84 9/7/2026
0.8.0 77 9/7/2026
0.7.0 91 9/7/2026
0.6.0 85 9/7/2026
0.5.0 82 9/7/2026
0.4.2 86 9/7/2026
0.4.1 105 9/6/2026
0.4.0 88 9/6/2026
0.3.0 85 9/6/2026
0.2.1 86 9/6/2026
0.2.0 87 9/6/2026
0.1.4 81 9/6/2026
0.1.3 88 9/6/2026
0.1.2 102 9/6/2026
0.1.0 90 9/6/2026