The ELF Atlas · live & verified

The Museum of
Execution

Real artifacts, real bytes, made narratable.

A trivial program becomes the narrative thread through the whole invisible machine — not toy diagrams, not raw internals, but the rare middle: one real hello binary dissected byte by byte, where every beautiful claim has a trapdoor down to evidence.

Open the Atlas on hello Gallery map …get a session code, and an AI docent — running anywhere — walks you through the actual bytes and answers your questions.

What it is

A room an agent can inhabit

A canonical artifact, a finite state grammar over it, and validated narration — readable as a story, drivable as an instrument, honest by construction.

The Atlas is the instrument — the interactive ELF viewer. A Room is one real binary you explore in it. An Exhibit is a curated, narrated story an agent can author from a room.

01

A binary, made narratable

One committed, byte-canonical 16,984-byte PIE, dissected completely — every header, section, table, and padding gap in a coverage partition a checker enforces. Two acts: the file on disk, and the ribbons that show what the loader does with it.

02

Bring your own agent

Point your Claude, Codex, or claude.ai connector at one authless MCP URL and it becomes a docent — reading the same real bytes, byte-verbatim from a pinned glibc.

$ claude mcp add --transport http helloscope \
  https://helloscope.iunknown.com/mcp
03

It can’t lie to you

The docent points by moving the camera, not by describing. And play_step is strict: a caption citing an out-of-range offset is rejected verbatim, no beat recorded.

Verification, not eyeballs

Every number has a source

Honesty here is not a promise; it is enforced by machines. The figures below are all real, all checkable against committed bytes.

16,984
byte PIE with no byte unexplained — the coverage partition is enforced by a checker.
2,956+22
libc functions (plus 22 ld-linux) served byte-canonical, keyed by GNU build-id.
95
canonical states plus curated tours, fingerprinted in headless Chrome each change.
0
claims refuted. Every exhibit passed clean-room adversarial fact-checking.
2
models drove it end-to-end — Claude and Codex — model-agnostic by evidence, not assertion.
402/402
rows byte-identical when the frozen Reference System rebuilds the archive, rootlessly.

The rooms

Binaries you can walk into

Each room is a real binary, dissected to the byte and opened in the Atlas. Explore one yourself — or point an agent at it.

A conversable book

Exhibits — pages you can walk through

An exhibit is a curated, narrated story over a room. A tour is not a video — it is data: {title, steps:[{state, caption, highlights}]}, validated and replayable. Each of these opens a scrollytelling story over the real bytes.

Browse all exhibits

The instrument

One authless edge, two worlds

One small Cloudflare Worker is the entire backend — authless for readers, edge-served from every PoP, sized to stay inside the free tier. A single MCP endpoint spans two things that don’t exist elsewhere:

  • Prepared binary knowledge. Per-function disassembly, DWARF source, and classified call edges over a real glibc — served byte-verbatim from R2, keyed by build-id.
  • A live docent. A visiting agent joins a session and drives the on-screen room in real time — moving the camera, writing captions the human reads, hearing questions back.
  • The same endpoint for both. One agent can trace a call from the room straight into the real libc body and narrate the whole path as one story.

Read the architecture

POST /mcp · 10 tools, one handler
visiting agent — brings its own tokens │ join_session · play_step · export_tour SessionRoom DO — the tab named ABC234 │ archive_lookup · archive_function · archive_source R2 archive — immutable, zero egress
https://helloscope.iunknown.com/mcp
The frozen Reference System
glibc r22 · build-id 020d6f7c GNU objdump 2.46.0 · gcc 16.1.1 ALA snapshot 2026/05/02 │ two delivery forms Docker image — builds & fixtures, any host Azure VM — a real 7.0.10 kernel for tracing

Reproducible by construction

Rebuildable, byte for byte

Every disassembly row, build-id, and source line is pinned to one exact userland — and that userland is frozen. The freeze ships in two shapes because two jobs need two things: a container reproduces builds and fixtures perfectly (they only touch userland), while a pinned-kernel Azure VM does the instruction tracing a container cannot.

  • Builds only touch userland — so a Docker image reproduces them identically on Linux and macOS, free, on any host.
  • Traces touch the kernel — Intel PT, perf, eBPF read facilities a container borrows from the host; the frozen VM owns its own.
  • Proven, not promisedprove.sh has already regenerated the committed archive: 402/402 stage-0 rows byte-identical.

Reproducible builds & tracing

What gets built next

The roadmap runs on two rails

More territory, and deeper medium — at once. The cathedral was never the point; the point was that each room be real.

Rail 1 · more territory

The episode ladder

  1. The ELF awakens — built, live, verified. The file that teaches the loader to build a process.
  2. The loader builds a worldexecve, mappings, relocation in motion, the PLT resolving puts live.
  3. The syscall trapdoorwrite(1, "hello, world\n", 13) crossing the boundary.
  4. Onward: kernel interior, tty, compositor, GPU, pixels, photons — each a finished jewel, never a half-mapped swamp.
Rail 2 · deeper medium

The library wing

  • The Reference Linux Archive — prepared binary knowledge for a whole distro snapshot, queryable by agents, renderable as narrated exhibits.
  • Tours as a publishing format — one tour renders as live session, story, and article; visitor conversations become new pages in the guest book.
  • Cold-agent testing as editorial QA — documentation whose correctness is tested by whether a stranger-agent can teach truthfully from it.