Initial aether repository structure
All checks were successful
CI / build (push) Successful in 1m13s

Distributed actor system with event sourcing for Go:
- event.go - Event, ActorSnapshot, EventStore interface
- eventbus.go - EventBus, EventBroadcaster for pub/sub
- nats_eventbus.go - NATS-backed cross-node event broadcasting
- store/ - InMemoryEventStore (testing), JetStreamEventStore (production)
- cluster/ - Node discovery, leader election, shard distribution
- model/ - EventStorming model types

Extracted from arcadia as open-source infrastructure component.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-08 19:30:02 +01:00
commit e9e50c021f
22 changed files with 2588 additions and 0 deletions

37
vision.md Normal file
View File

@@ -0,0 +1,37 @@
# Aether Vision
Distributed actor system with event sourcing for Go, powered by NATS.
## Organization Context
This repo is part of Flowmade. See [organization manifesto](../architecture/manifesto.md) for who we are and what we believe.
## What This Is
Aether is an open-source infrastructure library for building distributed, event-sourced systems in Go. It provides:
- **Event sourcing primitives** - Event, EventStore interface, snapshots
- **Event stores** - In-memory (testing) and JetStream (production)
- **Event bus** - Local and NATS-backed pub/sub with namespace isolation
- **Cluster management** - Node discovery, leader election, shard distribution
- **Namespace isolation** - Logical boundaries for multi-scope deployments
## Who This Serves
- **Go developers** building distributed systems
- **Teams** implementing event sourcing and CQRS patterns
- **Projects** needing actor-based concurrency with event persistence
## Goals
1. **Simple event sourcing** - Clear primitives that compose well
2. **NATS-native** - Built for JetStream, not bolted on
3. **Horizontal scaling** - Consistent hashing, shard migration, leader election
4. **Namespace isolation** - Logical boundaries without infrastructure overhead
## Non-Goals
- Opinionated multi-tenancy (product layer concern)
- Domain-specific abstractions (use the primitives)
- GraphQL/REST API generation (build on top)
- UI components (see iris)