v1.0 Now Available

The "SQLite" of
Event Sourcing

Single binary. High-performance gRPC ingest. Zero-config "Time Travel" queries. Reflog brings the power of the Data Lakehouse to your application backend without the complexity.

bash — reflog-cli
reflog ingest --entity user_123 --op UPDATE --payload '{"status": "active"}'
✓ Event committed to segment 4 (0.4ms)
duckdb -c "SELECT * FROM reflog.users AS OF TIMESTAMP '2024-01-01'"
┌──────────┬──────────┬───────────┐
│ id       │ status   │ plan      │
├──────────┼──────────┼───────────┤
│ user_123 │ pending  │ free_tier │
└──────────┴──────────┴───────────┘
                    

Why Reflog?

Architecture for Ops. Analytics for Free.

Single Binary Deployment

Forget generic "Big Data" clusters. Reflog is a single Rust binary. No JVM, no ZooKeeper, no headaches. Just run `./reflog-server` and start ingesting.

Native Time Travel

Reflog keeps a perfect audit trail. Query your entity state as it existed 5 minutes ago, or 5 years ago.

Open Storage Standards

Data is materialized into standard Parquet files. Query it instantly with DuckDB, Polars, or Amazon Athena.

Cloud-Native Resilience

Designed for Active/Passive failover using shared block storage (EBS/Azure Disk). Includes strict file locking and automatic crash recovery.

Drop-in Integration

Reflog speaks gRPC. Define your entity schema in Protobuf, point your application at the Reflog node, and stop worrying about state consistency.

  • Rust-based for stable, low-latency writes
  • Optional Redis Stream integration for buffering
  • Automatic "Delta + Base" compaction
// reflog-config.toml
server
{
listen_addr = "0.0.0.0:50051"
storage_path = "/data"
}
compaction
{
strategy = "delta_plus_base"
interval_seconds = 300
}
failover
{
mode = "active_passive"
lock_file = "_meta/instance.lock"
}