A DCB-compliant, immutable event store with global ordering.
  • Rust 89.7%
  • MDX 7.1%
  • Shell 1.1%
  • Astro 0.6%
  • Dockerfile 0.5%
  • Other 1%
Find a file
Ari Seyhun 5f9f0abb59
All checks were successful
ci / ci (push) Successful in 2m3s
ci / msrv (push) Successful in 42s
release-plz / release-plz (push) Successful in 14s
site / site (push) Successful in 48s
feat(site): add the self-hosted umami tracker
2026-09-13 15:42:22 +10:00
.forgejo ci: the site deploy authenticates zion against a pinned host key 2026-09-04 20:02:36 +10:00
assets docs: simplify the README and add a logo to the title 2026-08-19 22:44:40 +10:00
crates chore: release (#2) 2026-09-05 18:41:31 +10:00
site feat(site): add the self-hosted umami tracker 2026-09-13 15:42:22 +10:00
.dockerignore docs: move site-brief.md into site and drop empty docs dir 2026-08-11 15:35:24 +10:00
.gitignore chore: ignore the nix build result symlink 2026-08-19 22:53:21 +10:00
ARCHITECTURE.md feat: open a database read-only and follow a writer in another process 2026-09-05 18:20:22 +10:00
Cargo.lock chore: release (#2) 2026-09-05 18:41:31 +10:00
Cargo.toml chore: release (#2) 2026-09-05 18:41:31 +10:00
deny.toml feat: server-authenticated TLS over rustls (sync + async clients) (#26) 2026-08-19 14:12:16 +10:00
docker-bake.hcl feat: add scratch static image target for tephra-server 2026-08-11 16:42:53 +10:00
Dockerfile fix(build): compile jemalloc with -mno-outline-atomics on aarch64-musl 2026-08-19 19:46:18 +10:00
flake.lock build: add fully static musl output (tephra-server-static) to the flake 2026-08-11 16:38:57 +10:00
flake.nix ci: the project builds, releases and publishes from the forge it now lives on 2026-09-04 19:03:28 +10:00
LICENSE chore: add crates.io publish metadata 2026-08-11 15:17:18 +10:00
README.md ci: the project builds, releases and publishes from the forge it now lives on 2026-09-04 19:03:28 +10:00
release-plz.toml ci: fix release-plz publish conflict for tephra-site-examples 2026-08-11 15:31:17 +10:00
ROADMAP.md feat: open a database read-only and follow a writer in another process 2026-09-05 18:20:22 +10:00

tephra

An immutable event store with global ordering, built for the Dynamic Consistency Boundary.

Every event carries a type and a set of tags. A query reads exactly the events a decision depends on, and the same query guards the append that records it, so the consistency boundary is derived per decision rather than baked into an aggregate. One writer assigns every event a dense, monotonic position, so the whole log is a single global order and the tag and type indexes are derived from it and rebuildable.

Documentation: tephra.tqwewe.com

Run the server

# Docker: listens on 0.0.0.0:9000, data in the tephra-data volume.
docker run -p 9000:9000 -v tephra-data:/data git.tqwewe.com/tephra/tephra:latest

Or install the binary (Linux x86_64 / aarch64):

curl -fsSL https://tephra.tqwewe.com/install.sh | sh

Also cargo install tephra-server, cargo binstall tephra-server, or nix run git+https://git.tqwewe.com/tephra/tephra. See Getting started.

Clients

Official clients over one protocol: Rust, Go, and JavaScript. See Clients.

Prefer the engine in-process? cargo add tephra and see Embedded.

Learn more

  • ARCHITECTURE.md covers the design and the alternatives that were rejected.
  • ROADMAP.md tracks what is done and what is next.

License

Apache-2.0.

tephra was built with AI use and careful review. The underlying seglog crate was authored by @tqwewe.