Skip to main content
v0.2.10PostgreSQL + SQLitegRPC + JetStream

Event storage and live delivery, built as one system.

Orisun stores events transactionally, checks consistency by querying event content, and delivers catch-up plus live updates through embedded NATS JetStream without asking teams to assemble a broker, publisher, and event log by hand.

Storage
PostgreSQL or SQLite
Consistency
JSON-scoped optimistic writes
Delivery
Catch-up plus live JetStream
Per-boundary orderEvents publish in ascending log position.
Durable checkpointsPublisher state is stored with the selected backend.
Same APIsSQLite and PostgreSQL expose the same gRPC surface.
Why Orisun

The event log, consistency boundary, and delivery loop live together.

PostgreSQL or SQLite is the durable source of truth. Embedded JetStream is the delivery layer. Your application keeps business decisions in application code.

Consistency

Command Context Consistency

Commands declare the event subset they depend on with JSON criteria, then save only if that context is still current.

Delivery

No skipped committed events

Publisher checkpoints live in PostgreSQL or SQLite. Wake-up signals can be missed; committed events still drain sequentially.

Deployment

One deployable server

Event storage, indexed reads, auth, the gRPC and Admin APIs, embedded NATS JetStream, and telemetry ship in a single binary.

Where it fits

Use Orisun when correctness depends on the event log, not just message delivery.

Orisun is for systems where commands need to read event history, make a business decision, commit exactly the events for that decision, and publish the committed log in order.

Embedded event store

Link Orisun into a Go service when event storage should live inside the same process and deployment unit.

Standalone event service

Run Orisun as a small gRPC service when multiple applications or languages need the same event API.

Reliable projectors

Build read models from catch-up subscriptions that recover from downtime without depending only on broker retention.

Backend choices

Use the smallest operational shape that fits.

SQLite is complete for single-node systems. PostgreSQL adds multi-node Orisun coordination and database-managed operations without changing client code.

Command flow

From decision to projection, the ordering contract stays explicit.

Orisun keeps storage, consistency checks, publishing, and subscriber recovery on one ordered path so application code can focus on domain decisions.

1

Declare context

Select the event subset your command depends on with JSON criteria.

2

Save atomically

Commit only if the selected context is still at the expected position.

3

Publish in order

Drain committed events from durable checkpoints into embedded JetStream.

4

Project safely

Catch up from storage, then consume live events with idempotent checkpoints.

Get moving

Start with a binary or container, then keep the same API as you scale.