Function · Inventory Built

Stock that's a replay away.

Inventory isn't a table someone edits — it's a projection. Every movement is an immutable event on an append-only transaction log, and openWCS replays that log into real-time stock, location-scoped availability and reservations you can trust, audit and rebuild from scratch.

How it works

Append-only log in, read models out.

The transaction log is the system of record — events are appended, never updated or deleted. The inventory service consumes that stream and projects durable read models: current stock, availability and reservations.

Event-sourced

The log is the truth

Goods received, stock adjusted, picks and moves are events on an append-only log — UPDATE and DELETE are blocked at the database. State is derived, so history can never be quietly rewritten.

Projection

Stock you can rebuild

Inventory projects the event stream into a durable stock read model. Because the log is the source, the projection can be torn down and replayed — auditable and rebuildable, not a fragile counter.

Idempotent

Each event once

The projection tracks processed events and a cursor offset, so re-delivered events are ignored and a restart resumes exactly where it left off — no double-counting, no drift.

ATP

SKU- and location-scoped

Availability-to-promise is queryable SKU-wide and scoped to a specific location, so allocation can ask "is there reachable stock here?" — not just "does the SKU exist somewhere?".

Reservations

Commit without over-promising

Reservations are created, released and consumed against ATP under a pessimistic lock, so two concurrent allocations can't both commit the last unit — the floor and the order book stay consistent.

Yours to query

Postgres you host

Stock, batches, serial units and reservations live in a schema you own and can query directly. Operational state isn't trapped inside a vendor's system — it's your data, on your infrastructure.

At a glance

Event → projection → availability.

  GoodsReceived · StockAdjusted · Pick · Move ─►  append-only transaction log
                                                       │  (UPDATE / DELETE blocked)
                                                       ▼  outbox → stream
                              inventory projection  ── idempotent · cursor offset
                                                       │
                              stock · availability/ATP (SKU + location) · reservations
                                                       │  reserve under pessimistic lock
                                                       ▼
                                          allocation commits the right unit

Open & auditable

Inventory you can prove.

The log, the projection and the schema are open source and self-hosted. See how allocation commits against this availability, and how the Host API feeds adjustments in.