🦝 Opossum — File System Event Store
A .NET library that turns your file system into a fully functional event store.
Opossum implements the DCB (Dynamic Consistency Boundaries) specification — bringing event sourcing, optimistic concurrency, projections, and the mediator pattern to any .NET application without a database server.
Install
dotnet add package Opossum
30-Second Example
// Register
builder.Services.AddOpossum(options =>
{
options.RootPath = @"D:\MyData\EventStore";
options.UseStore("MyApp");
});
// Append an event
await eventStore.AppendAsync(
[new NewEvent { Event = new DomainEvent { Event = new OrderPlacedEvent(orderId) } }],
condition: null);
// Read events
var events = await eventStore.ReadAsync(Query.All(), readOptions: null);
No Docker. No database migrations. No cloud dependencies. Just files.
Why Opossum?
| Scenario | Why Opossum Fits |
|---|---|
| Automotive / POS / field-service | 100% offline, complete audit trail, local compliance |
| SMB on-premises software | No recurring cloud fees, IT staff manages files |
| Multi-workstation LAN deployments | Cross-process safety via OS file locking |
| Development & testing | Zero infrastructure — just run the app |
| Compliance-heavy industries | Immutable event log, optional OS-level write protection |
What's Included
- ✅ Event Store — Append and read immutable events stored as JSON files
- ✅ Optimistic Concurrency — DCB
AppendConditionprevents lost updates - ✅ Tag-Based Indexing — Fast domain-scoped queries without full scans
- ✅ Projections — Auto-maintained read models that rebuild from events
- ✅ Mediator — Command/query dispatch with automatic handler discovery via DI
- ✅ Cross-Process Safety — OS-level file lock serialises appends across machines
- ✅ Durability Guarantees — Configurable flush-to-disk on every write
- ✅ OpenTelemetry — Built-in activity source for distributed tracing
Getting Started
→ Installation
→ Quick Start
→ Configuration
Learn the Concepts
→ What is an Event Store?
→ DCB Specification
→ Projections
→ Mediator Pattern