Skip to main content

Capability and Package Map

Overview​

Choose a Mississippi capability by the work your application needs to do, then use the package tables to find its contracts and implementation. A domain feature commonly spans several packages: your business rules stay in the domain model while generators connect the runtime, gateway, and client.

This reference maps all 46 projects under src/ to their consumer roles. Package identities use the Mississippi. prefix defined in Directory.Build.props; src/Directory.Build.props enables packing for source projects.

This map describes the current development source, and its GitHub source links follow main. When using a released package, compare the linked contract with that package's release tag or commit. When preparing a versioned documentation snapshot, pin its source links to the corresponding release revision so the examples and evidence stay aligned.

Choose a Capability​

Your application needs toCapabilityStart with
Accept a business request only when its rules holdCommands, handlers, and aggregate stateWrite model
Keep a durable history of accepted changesNamed event streams and persisted events (Brooks)Brooks
Reconstruct state from eventsEvent reducers and snapshotsTributary
Present several views of the same business historyUX projectionsBuild projections
Coordinate work across aggregatesSaga steps and compensationBuild a saga
React to accepted eventsEvent effects and worker-grain effectsDomain Modeling
Generate HTTP endpoints, DTOs, and client actionsInlet source generatorsInlet
Refresh subscribed UI state after server changesInlet projection subscriptions and Reservoir stateRead models and client sync
Make client state changes explicit and inspectableReservoir actions, reducers, selectors, and effectsAdd a Reservoir feature
Deliver SignalR messages across gateway instancesAqueduct backplaneAqueduct
Compose Blazor screens from state and eventsRefraction components and scenesRefraction
Expose domain operations to an AI tool clientGenerated MCP tools and metadataSpring MCP setup
Develop a feature with an AI coding assistantExplicit rules, generated integration, and behavioral verificationBuild a feature with AI

Package Roles​

Abstractions packages provide contracts and extension points. Runtime packages supply Orleans execution or server implementations. Gateway packages integrate with ASP.NET Core. Client packages provide client integration. TestHarness packages support tests of the behavior you author.

Use the SDK composition packages when following the full application pattern. Use individual packages for a focused capability, such as Reservoir state management or Aqueduct's SignalR backplane. A package's project file, linked below, is the authoritative dependency list.

Application Composition​

PackageConsumer role
Mississippi.Sdk.RuntimeComposes runtime libraries and Cosmos providers for a silo project
Mississippi.Sdk.GatewayComposes gateway libraries for an ASP.NET Core project
Mississippi.Sdk.ClientComposes client hosting, Inlet, and Reservoir libraries
Mississippi.Hosting.AbstractionsShared host builder contracts and structured composition diagnostics
Mississippi.Hosting.Runtime.AbstractionsRuntime-role builder contracts and Orleans integration diagnostic codes
Mississippi.Hosting.RuntimeValidated terminal composition for Orleans runtime hosts
Mississippi.Hosting.ClientProvides ClientBuilder and UseMississippi() for Blazor WebAssembly client composition

Build-Time Generator References​

Configure source generation in the project that consumes the domain types. SDK library references and compiler analyzer references are separate inputs. In source-based applications, Spring explicitly references both the matching Inlet generator and Inlet.Generators.Core with OutputItemType="Analyzer", ReferenceOutputAssembly="false", and PrivateAssets="all".

Consuming projectGenerator projectVerified project configuration
Orleans runtimeInlet.Runtime.GeneratorsSpring.Runtime.csproj
ASP.NET Core gatewayInlet.Gateway.GeneratorsSpring.Gateway.csproj
Blazor clientInlet.Client.GeneratorsSpring.Client.csproj

The SDK projects mark their own analyzer references private. Use the explicit consuming-project configuration above when building from source, and verify analyzer delivery separately when composing an application from NuGet packages.

See Spring host applications for the domain, runtime, gateway, and client project boundaries. For a client entry point, use Inlet getting started.

Business Behavior​

PackageConsumer role
Mississippi.DomainModeling.AbstractionsCommand handlers, operation results, aggregate/projection grain contracts, event effects, and saga contracts
Mississippi.DomainModeling.RuntimeExecutes aggregate commands, event effects, sagas, and UX projections
Mississippi.DomainModeling.GatewayBase classes for aggregate services/controllers and projection controllers
Mississippi.DomainModeling.TestHarnessTests handlers, reducers, aggregate scenarios, and effects without hosting the distributed application

Start with adding an aggregate command. The same explicit command and event types give developers and AI assistants a small, named unit of behavior to implement and review.

Event History, State, and Storage​

PackageConsumer role
Mississippi.Brooks.AbstractionsBrook identity, event envelopes, storage-name attributes, and read/write grain contracts
Mississippi.Brooks.RuntimeBrook readers, writers, and cursor tracking
Mississippi.Brooks.Runtime.Storage.AbstractionsEvent storage provider, reader, and writer contracts
Mississippi.Brooks.Runtime.Storage.CosmosCosmos event storage with Azure Blob lease locking
Mississippi.Brooks.Serialization.AbstractionsSerialization provider, reader, and writer contracts
Mississippi.Brooks.Serialization.JsonJSON event serialization
Mississippi.Tributary.AbstractionsEvent reducer, snapshot, and snapshot-key contracts
Mississippi.Tributary.RuntimeComposes reducers and reconstructs, caches, and persists snapshots
Mississippi.Tributary.Runtime.Storage.AbstractionsSnapshot storage provider, reader, and writer contracts
Mississippi.Tributary.Runtime.Storage.CosmosCosmos snapshot storage
Mississippi.Common.Runtime.Storage.AbstractionsShared retry-policy contract for storage implementations
Mississippi.Common.Runtime.Storage.CosmosCosmos retry policy for transient storage failures

Use Brooks storage providers and Tributary storage providers for the event and snapshot provider boundaries. Keep the persisted event history distinct from the derived state that reducers reconstruct.

Generated Interfaces and Client Synchronization​

PackageConsumer role
Mississippi.Inlet.AbstractionsShared projection-path metadata
Mississippi.Inlet.Generators.AbstractionsAttributes for generated endpoints, commands, sagas, DTO customization, authorization, and MCP tools
Mississippi.Inlet.Generators.CoreShared analysis and generation support used by the target-specific generators
Mississippi.Inlet.Runtime.AbstractionsProjection discovery, subscription, and authorization metadata contracts
Mississippi.Inlet.RuntimeRuntime projection registration and subscription handling
Mississippi.Inlet.Runtime.GeneratorsGenerates domain, aggregate, projection, and saga silo registrations and saga status reducers
Mississippi.Inlet.Gateway.AbstractionsServer projection notification contracts and in-process notifier integration
Mississippi.Inlet.GatewayInlet SignalR hub, gateway registration, and subscription authorization options
Mississippi.Inlet.Gateway.GeneratorsGenerates HTTP controllers, server DTOs, MCP tools, and gateway registrations
Mississippi.Inlet.Client.AbstractionsProjection state, subscription actions, selectors, and client contracts
Mississippi.Inlet.ClientFetches projections, manages SignalR integration, and exposes projection-aware Blazor components
Mississippi.Inlet.Client.GeneratorsGenerates client DTOs, mappers, command/saga actions, effects, state, reducers, and registrations

Generation operates on attributed domain types. Application code still supplies business rules, host configuration, and UI composition. See Inlet reference for the current client builder entry points.

Client State and Blazor UI​

PackageConsumer role
Mississippi.Reservoir.AbstractionsStore, feature state, action, reducer, effect, middleware, and builder contracts
Mississippi.Reservoir.CoreStore execution, feature registration, reducer/effect composition, and memoized selectors
Mississippi.Reservoir.ClientBlazor store components, navigation/lifecycle features, and Redux DevTools integration
Mississippi.Reservoir.TestHarnessGiven/When/Then scenarios for feature reducers, effects, emitted actions, and resulting state
Mississippi.Refraction.AbstractionsTheme, focus, and motion preference contracts
Mississippi.Refraction.ClientBlazor components, state/event contracts, and design tokens
Mississippi.Refraction.Client.StateManagementReservoir-connected scenes that pass state to Refraction components and handle their events

For state management alone, start with Reservoir getting started. Use Refraction for component composition on top of that state.

Distributed SignalR and Shared Mapping​

PackageConsumer role
Mississippi.Aqueduct.AbstractionsBackplane grain contracts, messages, keys, and options
Mississippi.Aqueduct.GatewaySignalR lifetime manager, local connection handling, and Orleans stream integration
Mississippi.Aqueduct.RuntimeOrleans grains for connection routing, groups, users, and server tracking
Mississippi.Common.AbstractionsMapper contracts, collection mapping, and mapping registration

Summary​

Packages define installation and extension boundaries. Commands, events, reducers, projections, and actions define the application behavior that you and your team work on.

Next Steps​