Orisun is a batteries-included event store for systems that need durable event history, content-based consistency checks, and real-time delivery without running a separate broker.
Full documentation: oexza.github.io/Orisun
- Transactional event storage on PostgreSQL or SQLite.
- Command Context Consistency: save only if the queried event context has not changed.
- Embedded NATS JetStream for catch-up and live subscriptions.
- Durable publisher checkpoints so committed events are not skipped.
- Sequential publishing per boundary in ascending event-log position.
- gRPC APIs, generated clients, Docker images, embedding packages, auth, TLS, telemetry, pprof, and index management.
Download a release binary from GitHub Releases, or build one locally:
./build.sh linux amd64 dev sqliteSQLite single-node with a binary:
mkdir -p ./data/orisun/sqlite ./data/orisun/nats
ORISUN_BACKEND=sqlite \
ORISUN_SQLITE_DIR=./data/orisun/sqlite \
ORISUN_NATS_STORE_DIR=./data/orisun/nats \
ORISUN_NATS_CLUSTER_ENABLED=false \
ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
ORISUN_ADMIN_BOUNDARY=orisun_admin \
./build/orisun-sqlite-linux-amd64The same server can also run from Docker:
docker run --rm \
-p 5005:5005 \
-p 8991:8991 \
-e ORISUN_BACKEND=sqlite \
-e ORISUN_SQLITE_DIR=/var/lib/orisun/sqlite \
-e ORISUN_NATS_CLUSTER_ENABLED=false \
-e ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
-e ORISUN_ADMIN_BOUNDARY=orisun_admin \
-v orisun-data:/var/lib/orisun \
orexza/orisun:sqlitePostgreSQL with a binary:
./build.sh linux amd64 dev pg
ORISUN_BACKEND=postgres \
ORISUN_PG_HOST=localhost \
ORISUN_PG_PORT=5432 \
ORISUN_PG_USER=postgres \
ORISUN_PG_PASSWORD='password@1' \
ORISUN_PG_NAME=orisun \
ORISUN_PG_SCHEMAS=orders:public,orisun_admin:admin \
ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
ORISUN_ADMIN_BOUNDARY=orisun_admin \
./build/orisun-pg-linux-amd64See the getting started guide for binary and Docker setup for both backends.
| Artifact | Location |
|---|---|
| Documentation | GitHub Pages |
| Setup guide | SQLite and PostgreSQL setup |
| API guide | EventStore and Admin API |
| Releases | github.com/oexza/Orisun/releases |
| Docker images | orexza/orisun |
| Go client | orisun-client-go |
| Node.js client | orisun-node-client |
| Java client | orisun-client-java |
Release binaries are attached to each GitHub release:
| Asset pattern | Backend |
|---|---|
orisun-<os>-<arch> |
All backends |
orisun-pg-<os>-<arch> |
PostgreSQL only |
orisun-sqlite-<os>-<arch> |
SQLite only |
Docker tags use one repository with flavor tags:
| Tag | Backend |
|---|---|
orexza/orisun:latest |
All backends |
orexza/orisun:pg |
PostgreSQL only |
orexza/orisun:sqlite |
SQLite only |
orexza/orisun:<version> |
All backends for a release |
orexza/orisun:<version>-pg |
PostgreSQL-only release |
orexza/orisun:<version>-sqlite |
SQLite-only release |
go test ./...
go build ./...
task build
task build:pg
task build:sqliteRelease:
./scripts/release.sh 1.2.3 --notes release-notes.md