Working prototype · simulated warehouse data

The independent black box for robots.

When a robot stops, collides or nearly hits someone, the robot, the facility and the people each keep a different record. Kinwit merges them onto one verified timeline, so you can see what happened, in what order, and prove the record wasn't changed.

kinwit.zwightx.in/app/incidents/SIM-2026-0001Simulated
SH-A1SH-A2SH-B1SH-B2Safety zone B2SIM-AMR-01 · 1.20 m/s
Robot log
Facility log
FindingEvidence verified

The facility's stop broadcast came 11.8–18.0 ms before the robot received its stop input.

Recorded sequence
  1. Zone B2 safety input opens
    00:11.000 · ±2.56 ms
    E-003
  2. Facility broadcasts stop
    00:11.003 · ±0.56 ms
    E-004
  3. Robot receives stop input
    00:11.018 · ±2.55 ms
    E-005
  4. Robot commands zero velocity
    00:11.050 · ±0.00 ms
    E-008
  5. Robot reports stationary
    00:11.930 · ±10.05 ms
    E-009
Open the full casefile →
11.8–18.0 ms
Facility signal before robot stop, proven across two clocks
±0.55 ms
Clock alignment derived from the logs themselves
1 bit
Any change is caught and pinned to its 64 KB chunk
2 verifiers
Independent TypeScript and Python implementations agree
The problem

Every robot incident has more than one clock. They disagree.

Robots and facility systems log what they saw, each on its own clock. Read side by side, the logs contradict each other, and the order of events is exactly what an investigation has to get right.

Facility controller log
09:14:11.044
“Stop broadcast to zone B2”
Robot controller log
09:14:11.020
“External stop input received”
Read naively, the robot reacted 24 ms before it was told to stop.
Aligned by Kinwit: the facility broadcast came first, by 11.8–18.0 ms.
See how it was derived →
How it works

Capture. Align. Prove.

Three steps that turn scattered logs into evidence two parties can both check.

robot_navigation.mcapROS 2 · 1.26 MiB · 9 topics
facility_controller.jsonlhash-chained · 72 records
manifest.json + .sigEd25519 · RFC 8785
01 Capture

Every source keeps its own identity

Robot and facility records are preserved separately, each with its own clock, then sealed into one signed package.

02 Align

Clock offset is measured, not assumed

Kinwit bounds the drift between clocks from 56 sync messages both systems already log. An order is only claimed when the time windows don't overlap.

03 Prove

Every finding traces back to bytes

Each finding cites the exact records it came from. Change any byte afterwards and verification fails at that chunk.

Try to break it

Change one bit. Watch the proof fail.

This runs Kinwit's actual verifier in your browser, on the sealed evidence package behind the demo case. It checks an Ed25519 signature and re-hashes all 21 chunks of the robot recording. Then it alters one bit in a copy and runs the same check again.

Downloads about 1.5 MB. Nothing is uploaded, and the sealed original is never modified. More experiments

robot_navigation.mcap · 21 chunks × 64 KBSHA-256 · Merkle · Ed25519
Run a check to see each chunk verified.
Who it's for

For the people who have to answer “what happened?”

Site safety leads

“What happened, in what order, and what should I inspect next?”

Robotics integrators

“Which recorded message supports this finding, exactly?”

Claims & risk reviewers

“Is the record intact, and what does it not show?”

Why now

More robots, more vendors, more scrutiny.

4.28M

Industrial robots were operating in factories worldwide in 2023, a record high.

Source: IFR World Robotics 2024
Jan 2027

The EU Machinery Regulation applies, adding safety requirements for machinery with autonomous behaviour.

Source: Regulation (EU) 2023/1230
No neutral log

In a mixed fleet, every record is held by a party to the incident. Nobody owns the shared, checkable version.

The gap Kinwit is built to fill
Where we are

Real software today. Real fleets next.

Built and running

  • Signed, multi-source evidence packages (Ed25519, SHA-256, Merkle trees)
  • Clock alignment bounded from the sources' own sync messages
  • Deterministic findings and reports, every value linked to recorded bytes
  • Two independent verifiers that agree, in TypeScript and Python
  • Hosted, with authenticated, audited, re-verifying ingest

Next

  • Gazebo and ROS 2 Nav2 recordings in place of the kinematic simulator
  • Pallet-obstruction and near-miss scenarios
  • A read-only connector for a first design-partner fleet
  • Third-party timestamps on sealed packages (RFC 3161)

Today's cases come from a deterministic warehouse simulation and are labelled as simulated throughout. Kinwit orders and measures events. It does not assign fault.

See the evidence, not the pitch.

Open a real casefile, scrub the timeline, and try to break the proof.