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
Feature standout · Digital twin Built
Almost no WCS lets you see what it is doing. openWCS renders your whole layout as a live 3D digital twin in the browser: every conveyor, ASRS aisle and station coloured by its real-time state, every tote moving along the scan trail the hardware actually reported. No SCADA package, no extra server: it is part of the open-source UI.
Every machine is coloured by what it is doing right now: idle, running with an amber pulse, faulted in red. Click any piece of equipment to see the device tasks behind its state.
Handling units glide through the model along the scans the floor actually reported; nothing is invented. Click a tote for its full transport trace, recirculation loops included.
Stored totes sit in the ASRS rack at their exact cell positions, so you can watch aisles fill and drain as put-away and retrieval run. A level selector handles multi-floor sites.
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.
Configure each station's picking layout: 1-to-1, 1-to-N batch slots, or a put-wall. The operator screen adapts to match, and pick-to-light is driven on the cubbies (orange until picked, green when done) so the floor follows the lights.
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.
A built-in admin console browses every schema and table and runs SELECT-only SQL against the live system, guarded by a read-only transaction, timeouts and row caps. Standard WCSs never let you near your own data.
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 operator and management UI ships in English, German, French, Spanish and Chinese out of the box, with a per-user language preference. Few WCS platforms offer multiple languages without a paid add-on.
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, with a built-in read-only SQL console to browse and query it live |
| 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 |
| Floor visibility | A SCADA add-on, priced and scoped by the vendor | A live 3D digital twin built into the UI: equipment state, moving totes, rack fill |
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.