Automation · Goods-to-person Built

One stock HU, many orders.

At a goods-to-person station the operator never travels — handling units come to them. openWCS presents a single stock HU and lights up every order destination that SKU is needed at, so one unit fills many orders in a single pass. That batch pick-and-put is built today.

The station model

Stations, nodes & open demand.

A station is a small graph: STOCK nodes where a stock HU is presented, and ORDER destination nodes where puts land. Allocation feeds the station open demand — for each destination, which SKU and how many to put there.

STOCK node

Where the unit lands

A station has at least one STOCK node — the position where a retrieved stock HU is presented to the operator. From here its contents are distributed across the order destinations.

ORDER node

An order destination

Each ORDER node is a put destination with an optional put-light and a currently bound order HU. It's where the operator places the units this order needs from the presented stock HU.

Open demand

The work fed in

Demand is posted against an ORDER node — an order line, a SKU and a quantity to put there. This is the REST seam where allocation and order-management feed real work into the station.

How it works

Present once, put-to-light many.

The pick-and-put work cycle is a tight loop: present a stock HU, get a put-list, confirm each put. One presented HU serves as many destinations as need that SKU — that's the goods-to-person batch.

Present

Match SKU to demand

Presenting a stock HU (SKU + qty) matches it against open demand across the station's ORDER nodes and greedily fills most-needed-first, emitting a put-list of instructions.

Put-to-light

One HU, many destinations

Each put instruction names a destination node, the resolved order/HU, its put-light and the qty. The operator works the lit cubbies in turn — one stock HU serving the whole batch of orders.

Confirm

Decrement & close out

Confirming a put decrements the cycle's remaining stock and the destination's demand. A fully-putted destination completes; a cycle with no open puts left completes too.

Short put

Handle the shortfall

Confirming a smaller qty is a short put — the instruction goes SHORT and the destination's remaining demand stays OPEN for a later cycle, so nothing is silently lost.

Roll-over

Surplus demand waits

If the presented qty can't cover all demand, the surplus simply stays OPEN for the next stock HU of that SKU — the batch continues across however many units it takes.

RBAC

Reads vs operate

Per-endpoint role-based access (toggleable): viewing demand and cycles needs ORDER_VIEW, while present and confirm need DEVICE_OPERATE — the operator role on the floor.

Two physical worlds

ORDER_LOCATION and PUT_WALL, one engine.

A station's mode documents how its ORDER destinations are physically realised — but the execution engine is identical. The same present / put-to-light / confirm cycle drives both, so you don't maintain two pickers.

ORDER_LOCATION
Built

Order HUs in locations

Order HUs sit in fixed or conveyor-fed locations at the station — the classic put-to-order layout. The operator puts into the order HU presented at each destination, conveyor delivering and clearing them.

PUT_WALL
Built

Lit rack cubbies (typical AMR)

ORDER destinations are cubbies in a lit rack — the typical goods-to-rack realisation for AMR fleets. Each cubby is an ORDER node with its own put-light; the same engine drives the puts.

Configurable picking layout

One station, three pick layouts.

Pick a station's layout to match how operators work it. The same engine drives all three; the operator console renders the target side to suit, and pick-to-light lights exactly the slots or cubbies in play.

ONE_TO_ONE
Built

One source, one target

The classic single-carton pick: one stock HU serves one destination at a time. The console shows a single focused quantity field — confirm a full pick or type a lower number for a short.

ONE_TO_N
Built

A batch of lit pick slots

One stock HU fans out to N lit pick slots (N configurable, at least two). The console renders all slots left-to-right: grey when unused, orange with the qty to take, green once picked. Tap a slot to confirm, or step down for a short.

PUT_WALL
Built

Only the cubbies in play

A rack of lit cubbies. The console lights only the put lights this pick needs — orange until picked, green once confirmed — so the operator follows the lights across the wall. Tap a light to confirm.

Pick-to-light, driven

The lights are physically driven.

Pick-to-light is built. The station service lights each put light when a stock HU is presented and clears it on confirm and on close, through a dedicated pick-to-light adapter (or the hardware emulator when you have no controller wired yet).

PTL adapter
Built

A real device adapter

A standalone pick-to-light adapter speaks the same uniform device contract as every other family: ILLUMINATE a light showing a quantity, CLEAR it on confirm. Wire your controller behind it.

Best-effort

Lights never block the pick

Driving the lights is best-effort with short timeouts: a light that is slow or offline is logged and skipped, never stalling the operator. The pick is the source of truth, the lights follow it.

Emulator-ready

No hardware? No problem

With the hardware emulator on, the same ILLUMINATE / CLEAR commands drive the built-in emulator instead, which tracks the lit lights — so you can run the whole flow before any controller is connected.

Inbound queue & station control

HUs arrive, queue, get worked.

A station's inbound queue tracks every handling unit routed to it — whether it's still on its way or waiting for the operator. Deactivating a station drains it cleanly without losing any queued work.

IN_TRANSIT

En route to the station

Conveyor HUs enter the queue as IN_TRANSIT with a computed arrival time (distance ÷ 0.5 m/s). They flip to QUEUED when due — the operator sees only what's ready to work.

QUEUED

Ready to work

ASRS, AMR and AutoStore HUs arrive immediately QUEUED. The operator console auto-presents the head QUEUED tote — no manual selection needed; completing the cycle marks the entry DONE and advances to the next. The full queue is accessible as a fold-out drawer on the right edge of the console. The presented tote shows the full product card: image, SKU name, item measurements and attributes such as brand or colour.

Drain control

Finish cleanly, then re-open

Deactivating a station stops new HUs from being routed in while the operator finishes the existing queue. Re-activating reopens it — useful for shift changes or maintenance windows.

STOCK_COUNT
Built

Blind count at the station

When a count tote arrives at a STOCK_COUNT station, the operator console switches to a blind-count panel: enter the quantity you see — no system figure shown. Two counts that agree confirm a variance and post a StockAdjusted event to the host automatically.

At a glance

Present → put-list → confirm.

  allocation ─► open demand (per ORDER node: order-line · SKU · qty)
                       │
  present stock HU ─►  openWCS gtp  ── match SKU, fill most-needed-first ─► put-list
                       │                       (destination · order/HU · put-light · qty)
  put-to-light ─► confirm put ─► decrement stock + demand
                       │  short put  → instruction SHORT · demand stays OPEN
                       │  destination fully putted → COMPLETED
                       ▼
                 cycle COMPLETED when no OPEN puts remain · surplus rolls to next HU

Built & open

Run goods-to-person, your way.

The station engine is open source, drives pick-to-light through a real device adapter, and renders any of the three pick layouts. Wiring a specific light controller or AMR fleet behind the adapters is the integration step — the batch logic and the lights are live today.