Typed actors, without the heavy runtime
Nixie is a small in-process actor framework built on the .NET Task Parallel Library. Actors own their state, process messages asynchronously, and communicate through strongly typed references.
caller ── typed message ──▶ actor inbox ──▶ Receive(message)
◀── typed Task<T> ────────────────┘ (Ask only)
What you get
- Compile-time contracts. Request and response types are part of every actor interface and reference.
- Two messaging styles. Use
Sendfor fire-and-forget work orAskfor a typed response. - Explicit overload behavior. Bound an inbox, check admission with
TrySendorTryAsk, and prioritize control messages. - Useful actor variants. Class, struct-message, aggregate, and router APIs cover common performance and distribution patterns.
- Managed lifecycle. Name and look up actors, schedule messages, stop timers, shut actors down gracefully, and wait for pending work.
- Familiar .NET integration. Constructor injection and
Microsoft.Extensions.Loggingwork without a separate hosting model.
When Nixie fits
Nixie is a good fit when a single .NET process needs isolated mutable state, serialized per-actor work, or high-volume message passing without coordinating locks by hand. It does not provide cluster membership, remote transport, or durable message storage; choose a distributed actor runtime when those are requirements.
Requirements
- .NET SDK 8.0 or later
- Nixie 1.2.5
- Nullable reference types are recommended