Blockline Operations Logging
05:50
Four blocks · Tue 13 Oct8 machines · haul 32 km to the mill
Engines on 0/8 m³ hauled 0 Delays 0 Sample day Book a demo

Logging · getting started

Supervisor view

Every machine on its block, recognised from the phone in its cab.

Nobody on the crew enters anything. One sample day, run on the server's own rules.

Blocks
staged: one stage per block today
Stages
KR-112 falling · KR-104 skidding · KR-097 processing · KR-089 loading and hauling
Phones
5 cab phones · 3 operator phones
Sync
daily at camp, live when there's signal
MachineModelPhoneNow

06:00 to 06:50The phones start themselves.

Each cab phone rides on a charger wired to the ignition. It starts at boot, writes a point every 5 seconds and keeps going with no signal. The operator never opens the app.

Data coming in

raw points, newest first
TimePhoneLatLon±mPowerVib m/s²

Tonight's sync

Points recorded0
To sync at camp0 KB
Phones recording0
Typed by the crew0

Everything goes up the first time a phone sees a connection: camp, the truck, the office. Live tracking is optional; the sync is the record.

06:50 to 07:20 · SK2, grapple skidderEvery 30 seconds becomes a state.

Speed from successive positions, vibration from the accelerometer, power from the charger. Four rules, smoothed over 2.5 minutes. Idles under 5 minutes count as work.

SK2 · the last hour

05:50 to 06:50

Speed, m/s

Vibration, m/s² RMS

Charger power

Recognised

WorkingIdleTravellingOff

The rules

server/activity.py
Off
The charger has no power: the ignition is off.
Travelling
Faster than 9 km/h. For a truck, driving is the work.
Working
Vibration of 0.6 m/s² or more, or moving slowly.
Idle
Engine on, nothing else. Five minutes of it is a delay.
Waiting for the first 30 seconds.

Today · four blocks, one stage each

state recognised from each phone
WorkingIdleTravellingOffTan: cut today and before · dashed: the face

Production

m³ by where it's measured
Felled0buncher head
Processed0StanForD · 0 stems
Hauled0scale tickets
Loads signed0loader + truck
Skidder turns0from the tracks
Truck trips0round trips

Utilisation

productive ÷ engine on

Where the wood is

m³
Bunched on KR-104, waiting for skidders0
Skidded, waiting for the processor0
Processed, waiting for trucks0

15:40 · supervisor's boardFound on their own. You say why.

Any stop of 5 minutes or more with the engine running becomes a delay. Operators can't edit a shift. A supervisor or PM labels it, and every change is logged with who and when.

Every delay today

0 found

The longest ones, waiting for a reason

Corrections log

append-only
  • Nothing labelled yet. Pick a reason on the left.

A load, signed by both machines, with no signal.

The loader's phone writes the receipt and signs it. The truck's phone checks that signature and countersigns, over Bluetooth, as it pulls away. Whichever reaches service first sends it in.

Making demo keys in this browser…

LD1 cab phoneNo service

LD1John Deere 2656G · loader

Loader cycles on this load0
  1. Truck beside me · −71 dBm · hello
  2. Loading TR1
  3. Asked for the receipt
  4. Signed load 56 · sent
  5. Countersignature checks · kept

The receipt

canonical JSON · the bytes that get signed
Written when the truck pulls away.
Loader's signature · ECDSA P-256 not yet
Truck's countersignature · body + loader's signature + departure not yet
TR1 phoneNo service

TR1Kenworth T880 super-B · truck

Speed0.0 m/s
  1. Loader's beacon · connected
  2. Moving 2 m/s+ for 3 fixes
  3. Asked LD1 for the receipt
  4. Loader's signature checks · countersigned
  5. Carrying it to service

Every load, with its scale ticket.

The receipt says which loader filled which truck, and when. The mill's scale ticket adds the m³ when the truck weighs in.

Loads signed0
m³ on tickets0

KR-089, the hauling block, so far

Hauled of the cruise0%
At today's rate–

Tickets reconcile each block's total. Over a season, the rate per phase is fitted against slope, skid distance and piece size, which forecasts the next block before it starts.

Premium · sealed loadsWe check them. We can't read them.

Each receipt is encrypted on the loader's phone to your organisation's key before it's signed. Our server verifies both signatures on the sealed bytes, refuses tampering and drops duplicates, without opening a single field.

What Blockline's server storesthe header, and ciphertext

load_idorgloader_devicetruck_devicekidct

What your browser opens, with your keymade here, never sent

LoadLoader → truckBlockLoadedCyclesPosition

Sealing the day's receipts in this browser…

Your key, made in your browserWrapped under your admins' passkeys, plus a printed recovery sheet you lock away. We store only the wrapped copies.
What you give upServer-side insights on sealed loads: rates, reconciliation, forecasts. Exports are made in your browser instead.
No back doorLose every passkey and the recovery sheet, and the data is gone. By design.

18:10. The last ticket's in.

Hauled, on tickets646 m³
Loads signed18
Average utilisation70%
Delays found50
Points recorded70,080
Synced at camp4.3 MB

Nobody on the crew entered a single thing. All of it came from eight phones riding in the cabs, the processor's file and the mill's scale tickets.

See it on your own block.

We'll run a day like this one with your machines, your phases and your haul, and walk your supervisors through the board.

Book a demo

Same seed, same fleet, same block, paused at that minute.