Open-source Warehouse Control System
openWCS orchestrates your automation — conveyors, ASRS, AMRs, AutoStore — and the real-time flow of goods, sitting between your WMS/ERP and the machines. Open, vendor-neutral, and yours to change.
AGPL-3.0 open source · self-host · no per-flow license fees
What openWCS does
openWCS is a full warehouse control system built in the open: the same capabilities you expect from a commercial WCS, with none of the lock-in. Run it yourself, read every line, and adapt it to your building.
A uniform device contract with adapters for conveyors, ASRS, AMRs and AutoStore. Add a vendor without re-architecting — their protocol stays in the adapter.
Draw the conveyor topology in a visual editor, route handling units by shortest path through their targets, enforce loop limits — and even learn the layout from live traffic.
A built-in BPMN designer: model goods-in, outbound and cycle-count processes in the browser, deploy instantly, and have their steps originate real WCS work.
Durable stock projected from an append-only transaction log, with location-scoped availability and reservations. Rebuildable, auditable, and yours to query.
Pick-location allocation with UoM breakdown, multi-size cubing into shippers (largest-first, line-traceable), per-carton dispatch labels, and batch picking.
One canonical, vendor-neutral Host API for orders, ASNs and confirmations. SAP and Manhattan adapters translate into it; idempotency and webhooks included.
Gateway JWT validation, per-endpoint role-based access control, and Keycloak — all toggleable so you can start simple and lock down for production.
Independent microservices, schema-per-service Postgres, a Kafka event backbone, and contract-first APIs — so you can extend or replace any part. Cloud-native: every service is stateless and scales horizontally on Kubernetes behind any load balancer.
Open source. Self-host on your own infrastructure, fork it, and integrate whoever you like. Leaving is never a rip-and-replace.
Configurable put-away for ASRS/AutoStore/AMR blocks — velocity-to-exit, multi-deep same-SKU lanes, aisle redundancy and fill balancing — plus fixed pick-face min/max with opportunistic replenishment and direct-to-pick.
The problem
Most warehouse control systems are shipped by the integrator who installed your equipment — closed software, tied to their stack and their contract. The logic that routes your totes and allocates your stock is hidden, and every change goes through them. That’s fine until you need to move fast.
You can’t see how routing, allocation or cubing decisions are actually made — so you can’t trust, tune, or debug them.
A new pick path or process tweak means a change request, a price, and a place in someone else’s queue.
The WCS is bound to the integrator’s preferred hardware and protocols. Adding a new device family means going back to them.
Operational history and live state live inside a system you can’t query or export on your terms.
Their priorities, their pricing, their support window. Switching later means a rip-and-replace project.
Licenses, support contracts and change fees compound — for software you’ll never own or fully see.
openWCS vs. a locked-in integrator WCS
| Capability | Typical integrator WCS | openWCS |
|---|---|---|
| Source & ownership | Closed binary you license | Open source you run and own |
| Change a process or pick path | Paid change request, weeks of lead time | Draw it in the BPMN/topology editor and deploy yourself |
| Equipment vendors | Tied to the integrator’s preferred hardware | Vendor-neutral adapters over a uniform device contract |
| Conveyor routing logic | Opaque PLC / black-box rules | Visual, shortest-path, editable — and learnable from traffic |
| WMS / ERP integration | Bespoke interface, re-built per integrator | One canonical Host API; SAP/Manhattan adapters translate in |
| Your operational data | Trapped inside the vendor’s system | Event-sourced log + Postgres you host and query |
| Switching / exit | Rip-and-replace project | No license lock-in — fork, self-host, extend |
| Cost model | License + support + per-change fees | Free core; pay only for hardware, ops and the partners you choose |
| Slotting & replenishment | Vendor's fixed rules, opaque and hard to tune | Configurable put-away scoring + min/max replenishment you can read and change |
Under the hood
A clean microservice architecture you can read end to end: each service owns its data, movements are events on an append-only log, and equipment lives behind adapters.
┌──────────── API gateway ── JWT · RBAC ────────────┐
WMS / ERP ─► Host API ─► order-management · master-data · inventory
│ │ (event-sourced transaction log → Kafka)
│ process-engine (BPMN) ─► flow-orchestrator ─► device adapters
│ allocation · slotting · goods-to-person (put-to-light) stations
└──────────────────────────┴────► Conveyor · ASRS · AMR · AutoStore
master-data, inventory, orders, allocation, slotting, goods-to-person stations, flow-orchestrator, txlog, IAM — each independently deployable.
Lightweight drivers that speak each vendor’s protocol and the uniform device contract.
Schema-per-service stores and an append-only event log — auditable, replayable, rebuildable.
Built in the open
Read the code, run the stack with Docker Compose, and shape it to your warehouse. Contributions welcome.