UmaDB - Dynamic Consistency Boundary Event Store
UmaDB is a specialist open-source event store built for dynamic consistency boundaries.
This crate provides the umadb binary, a gRPC server for running UmaDB as a standalone service.
Installation
Via Cargo
Install the umadb binary using Cargo:
After installation, run the server:
Pre-built Binaries
Pre-built binaries for various platforms are available on GitHub:
Download the appropriate binary for your platform and architecture.
Docker Images
UmaDB Docker images are available from multiple registries:
Docker Hub:
GitHub Container Registry (GHCR):
CLI Usage
The umadb command-line interface provides options to configure the server:
umadb [OPTIONS]
Options
--db-path- Path to the database file or directory--listen- Server bind address (e.g.127.0.0.1:50051)--tls-cert- Optional file path to TLS server certificate (also via UMADB_TLS_CERT)--tls-key- Optional file path to TLS server private key (also via UMADB_TLS_KEY)--api-key- Optional API key for authenticating clients (also via UMADB_API_KEY)-h, --help- Print help-V, --version- Print version
Examples
Run CLI listening to 0.0.0.0:50051 using ./data to store events.
Run Docker image, publishing port 50051 and persisting data to a local volume:
Quick Start
Once the server is running, you can connect using client libraries:
Python Client
# Connect to UmaDB server
=
# Create and append events
=
=
# Read events
=
Rust Client
Add the client dependency to your Cargo.toml:
[]
= "0.1"
Use the client in your code:
use UmaDcClient;
use ;
async
Features
- High-performance concurrency with non-blocking reads and writes
- Optimistic concurrency control to prevent simultaneous write conflicts
- Dynamic business-rule enforcement via query-driven append conditions
- Real-time subscriptions with seamless catch-up and continuous delivery
- gRPC API for cross-language compatibility
Documentation
For more information about UmaDB and Dynamic Consistency Boundaries:
License
This project is licensed under either of:
- MIT License (LICENSE-MIT)
- Apache License 2.0 (LICENSE-APACHE)
at your option.