The instrument

hotbits is true random bytes from radioactive decay. The instrument is a sealed thorium calibration card sitting against an SBM-20 Geiger tube on a CAJOE RadiationD-v1.1 counter board, with a Raspberry Pi 4 timestamping every detected event. Everything downstream of the tube is bookkeeping: nothing adds randomness after the nucleus has decayed.

The chain, end to end:

stagewhat happenswhere
decaya nucleus in the Th-232 chain decays; the tube dischargesthe card and the tube
pulsethe board's NE555 shapes the discharge into a clean edgethe counter board
timestampthe Pi records the edge as one monotonic nanosecond valuelogger.py, one line per event, append-only
bitspairs of gaps between events are compared; each pair is one bitextract_stream.py, every minute
healththe new bits pass the continuous tests or the pool refuses to servethe same pass, see the health tests
poolfresh bytes accumulate in an append-only file with a consume watermarkthe API's pool
gatewaya key spends bytes; seeds and replays stay openthe gateway

The source is a thorium card rather than something exotic for a reason worth recording: Th-232 in secular equilibrium is a whole decay chain, six alpha emitters and several beta emitters, all decaying independently and all summed at one tube. A sum of independent Poisson processes is still Poisson, which is the only property the bit extraction needs.

Where it is on this site

Two pages, and both ask the instrument rather than stating things about it. /hotbits reads the byte pool and the health verdicts from the running service when you load it. /hotbits/api renders the service's own openapi.json and then calls every route it describes, so the reference can say which documented routes are answering right now instead of asserting that they should be.

What this tree covers, and what it does not

These pages cover the part that can be checked from here: the extraction and its health tests are read from the instrument's source tree, and the gateway's behaviour is measured by calling it. Two things are deliberately not restated:

  • The bench. Grounding, the scope work, the chassis history and the parts list live in the instrument's own repository. They are lab notes, and copying lab notes is how they stop being true.
  • The gateway's internals. Key issuance and byte budgets run on the instrument itself and their source is not in the tree this site builds from. The gateway page documents what the service can be observed to do, and says so where observation is all there is.