TimeWitness

Your clock is wrong.

TimeWitness bounds how wrong it could be. The receipt carries the outside signatures that answered. Anyone can check them without trusting you or us, and with no account.

A signed timestamp establishes that a record existed by a time; it does not establish that the event the record describes occurred then.

An eight-second loop. A reading appears on its own. Nine sources of three kinds arrive, none of them ours. A bracket opens to our bound, 153.875 ms wide, labelled as our own claim about how wrong the reading could be, with a line saying the sources overlap on 35.081 ms of its half width and the rest is our model. The conditions under it say the receipt was signed under a ceiling that was 30 s until 2026-09-15. The reading, the bound and three signatures we did not make fold into a receipt, a line says the signatures are evidence about when, not the moment, and do not vouch for the width, and a tick says anyone can check those signatures without trusting you or us.

A reading, a bound and outside signatures

What the clock read, how wrong our own model says it could be, and signed outside evidence, each part showing one thing about the time.

  1. 01The local clock reading at nanosecond resolution
  2. 02the bound on how far that reading could be from UTC
  3. 03signed evidence from independent outside parties, each part showing one thing about the time
  4. Our own bound is labelled inside the receipt as our claim, never as third-party evidence. The outside signatures do not say when the reading was taken, and none of them vouches for the bound. A Roughtime server signs an interval round the moment it answered, and the receipt has to overlap it. A public beacon round shows the receipt was made no earlier than that round. A timestamp authority signs that the stamped thing existed no later than its own clock says, and the ones used today state no accuracy for that clock.
success

UTC was somewhere in an interval 153.875 ms wide. The width is ours, and each signature below shows one thing about the time.

What the clock read, how wrong our own model says it could be, and signed outside evidence, each part showing one thing about the time.

One receipt, one machine, one moment. Not a figure for yours.

What the clock read2026-09-09T18:41:18.918450302Znanosecond
how wrong it could be153.875 ms wideon an ordinary desktop on an ordinary connection, 2026-09-09 at 18:41 UTC, sixteen polling rounds, under a ceiling that was 30 s until 2026-09-15

who says soours

verifypass
the agent9 of 9settled

source

ntp:cloudflareNTPcloudflare.comin the interval
ntp:googleNTPgoogle.comin the interval
ntp:ptbNTPptb.dein the interval
nts:cloudflareNTScloudflare.comin the interval
nts:netnodNTSnetnod.sein the interval
nts:ptbNTSptb.dein the interval
roughtime.int08h.comRoughtimeint08h.comin the interval
roughtime.seRoughtimenetnod.sein the interval
time.txryan.comRoughtimetxryan.comin the interval

signed from outside

  • roughtime.int08h.comcorridortheirs
  • drand quicknetnot earliertheirs
  • DigiCertnot latertheirs

The receipt

receiptsha256:58d1b0dedc1cCOSE over CBOR

What it cannot prove

Everything this product does not establish, written by us, before anybody had to ask.

Four numbered steps left to right: the nine sources that answered, the local counter read, the receipt holding the reading, our bound and signatures we did not make, and the check anyone can run on those signatures without trusting us.

Nobody uses this yet. It is being built in the open.

You already sign your releases

The time they were built is the one field in them nobody can check. One line in your workflow puts a receipt beside it, with outside signatures anyone can check. Public repositories are free.

- uses: Fountech-ai-Limited/timewitness@v0.8.2

This runs today on a GitHub-hosted ubuntu-latest runner, the only runner it has been run on, from a public repository whose current release is v0.8.2. The step builds the command on your runner rather than downloading the Linux binary that release carries, and a key it makes there proves one agent signed the receipt and nothing about who that agent was.