Loams v0.1.0 is out: run the whole stack yourself with Docker Compose. See the roadmap

How it works

A log, two open formats, one manifest.

Every write lands in a log in your bucket and returns a consistency token. Workers fold the log into Lance and Tantivy, and a read with the token sees the write even before indexing catches up. The concepts guide covers it in depth.

Your applicationSDK or RESTLoams computeHot tierNVMe cacheQuery plannerhybrid retrievalYour bucketwal/lance/splits/manifests/write, then tokenfetch segments
Write pathRead path
  1. 1. Write

    Durable before it returns

    The writer puts a WAL object in your bucket, the metastore assigns offsets, and the write returns a consistency token: (stream, partition, offset).

    wal/standard/<node>/<ulid>.wal
  2. 2. Materialize

    Lance and Tantivy, built together

    A link worker writes a Lance version and a Tantivy split, then manifest v+1. One compare-and-swap on the manifest pointer commits both.

    manifests/<version>-<ulid>.man
  3. 3. Read

    Read your own writes

    A query with a token reads the current manifest and merges the log tail it has not absorbed yet, so it sees every acknowledged write.

    snapshot(v) ⊎ tail(applied, token]

Three flows, call by call.

Pick a flow, then step through it or press Play. Each trace says what is implemented and what is next.

AgentLoams DurableFunctionReviewer123456

running, billed on CPU time waiting on a promise, not billed0 of 2 billed steps so far

promise.create research.42 +target

state research.42 pending · task v0

The call is stored as a durable promise keyed by its id. Sending the same id again returns the same promise, so a retried request never starts a second run.

Step 1 of 6

Embedded Resonate and the in-process runtime are implemented, with SQLite, native TiKV and MySQL/TiDB storage paths. This trace illustrates a durable agent pattern; managed agent orchestration and CPU-time billing are future platform work.

These are properties of the Resonate protocol. Loams Durable runs a linearizability check against its embedded server.