Every object here, whether a stainless-steel sculpture or a machine-generated construction, enters the pipeline as one thing only: its centerline curve, stored as a Fourier series. Everything below is derived from that curve.
From the centerline alone the pipeline (1) scans the curve on the GPU and projects it to locate its crossings; (2) tracks the crossing pattern into a knot diagram; and (3) computes a broad set of invariants directly from that diagram — Alexander, Jones and HOMFLY polynomials, determinant, signature, Seifert genus, hyperbolic volume and symmetry group, and a canonical Theta-cluster hash. None of these, and not even all of them together, is guaranteed to tell every two knots apart (mutant knots can agree on all of them). The output is the knot’s identity — or the verdict that its fingerprint is absent from every catalogue we compare with, which is a statement about the catalogues, not a proof of novelty. All 510 centerlines here went through exactly this path. They are the 509 records this site has a page for — 19 sculptures, 203 cluster members, 229 novelty singletons and 58 open singletons, one centerline per distinct knot among the singletons — plus 1 further centerline file of a sculpture served in two views. The corpus behind them holds 843 records and 504 distinct knots; the realizations identified as table knots and the unknot degenerations are kept as evidence but have no page.
The computation rests on established, open tools, and every one of them is somebody's work: a CUDA scanner for the curve (ours), regina (Burton, Budney, Pettersson and others) and SnapPy (Culler, Dunfield, Goerner, Weeks) for diagram and hyperbolic invariants, spherogram (part of the SnapPy project) for diagram handling, sympy for the polynomial algebra, KnotJob (Dirk Schütz, GPLv3) for Khovanov homology and the Rasmussen s-invariant, and the Theta invariant of Bar-Natan and van der Veen, computed with their own Theta.sage. The reference catalogues — KnotInfo (Livingston–Moore), the SnapPy census, and a numerical Theta-DB across the 59,937 knots.sage entries — are used only as described next.
We name the authors because the invariants on this site are not all our own arithmetic: the Khovanov columns come out of Dirk Schütz's KnotJob, the Theta column out of Bar-Natan and van der Veen's Theta.sage. What is ours is the pipeline around them — curve to diagram to identity — and the corpus it produced.
The pipeline runs blind: in the primary identification path there are no table lookups. Every invariant is computed from the centerline itself. The catalogues (KnotInfo, SnapPy census, Theta-DB) form a separate cross-check layer that runs only after the invariants are already computed.
So an identification is never circular — the machine never “looks up the answer.” It computes the full fingerprint from the geometry, and only then asks whether any catalogue contains that fingerprint. When the answer is “no catalogue entry,” that absence is a measured result, not an assumption (and not yet a proof of novelty); and when a sculpture and an independent machine construction land on the same fingerprint, that agreement was reached separately on each side.
To check the machine against answers it could not know, we took knots from a public knot catalogue, stripped their identity, gave them fantasy names, rebooted to a clean state, and ran them blind. Only at the end of the session did we compare the verdict against the catalogue’s known classification:
That is the whole point of running blind: a correct identification is earned from the geometry, not retrieved from a table. This was one blind run with two identifiable inputs; it is a first check, not a statistical validation.
The identification runs on one machine whose tools are kept up to date (since September 2026; before that they were held at fixed versions). Every result records the run it came from, published deposits state the versions they were computed with, and the source code is public; the no-lookup discipline is enforced in code (a pipeline seal blocks catalogue lookups in the primary path). This makes every result traceable; it is reproduced only once someone else recomputes it on other hardware — the published code and deposits are there for that. The setup: an AMD Ryzen 9 3900X (12 cores), 32 GB RAM and an NVIDIA RTX 3070 (CUDA 13) under Linux 6.17, running SnapPy 3.3.2, regina, SageMath 10.9, NumPy 2.4, SymPy, CuPy and the Theta.sage tool. Full machine & version description ↓
The discipline that runs this project — a fixed boot order, a working diary, growing files of numbered lessons and raw failures, and gates that must prove they can say no before their yes counts — exists as a small, self-contained folder: Markdown and shell scripts, no vendor, no key. You place it in your own environment and start the AI tool of your choice inside it. Its one load-bearing rule: at first, the AI only observes and writes — it changes nothing (we recommend three days). A measuring script — not a calendar — decides when that phase is done, and it can say no. That rule is a recommendation, not a lock: the folder is yours from the first minute.
workshop-kit.zip ↓ (sha256; archived on Zenodo, doi:10.5281/zenodo.24005142) — a gift, licensed CC BY 4.0: use, modify, redistribute, commercially too; attribution is the only condition. It needs nothing but a shell. We run it on Linux, and that is the only platform it has actually been run on — macOS is source-reviewed but has never been started, Windows needs WSL or Git Bash. Best results on a spare Linux machine. Folder, files and scripts are entirely in English. Honestly: all nine trial runs so far were in our own environment, with one AI tool (Claude Code) — outside our workshop the folder has not yet been used. And read-only access stops changes, not data leaving the house: with an AI that runs in a data centre, whatever it reads goes to its provider — clear that first.
On the page of every hyperbolic knot there is a ♪ play tone button. The pitch you hear is not decoration and is not chosen by us — it is read straight off the knot’s own geometry.
A hyperbolic knot’s complement — the space around the strand — carries a rigid hyperbolic geometry, and inside it sit its closed geodesics: in every class of closed loops that can be deformed into one another there is exactly one, and it is the shortest loop of that class. The collection of their lengths is the length spectrum, a genuine invariant: it depends only on the knot, never on how the curve happens to be drawn, scaled or parametrized. We turn each length into a frequency in direct proportion — a fixed number of hertz per unit of length — so the shortest geodesic, the systole, becomes the fundamental, and the longer geodesics become its overtones. The scale is absolute, with no per-knot normalization: we play at most the ten shortest geodesics (fewer for some knots, because geodesics of equal length are merged into one louder partial), and only frequencies between 25 Hz and 20 kHz; the number of geodesics grows exponentially with length, so this is always a window onto the spectrum, not all of it. On our corpus no systole falls below that range. So the same knot always sounds the same, and different knots generally sound different — though not always: some distinct knots, certain mutant pairs among them, share a tone. The mutant pair 13a1231 / 13a1237, on which the Theta invariant is blind, is one: their ten shortest geodesics agree, so here they sound the same. Further out their spectra part — from length about 2.44 on, around the thirteenth geodesic (SnapPy, 212-bit arithmetic, reproduced on a randomised triangulation; not interval-verified) — so a longer window would hear what Theta does not see. What you hear is the knot’s intrinsic chord.
Two honest limits come with it. A closed geodesic has a complex length: its length and a torsion, how far a frame turns once around it. Mirroring keeps the lengths and flips the sign of the torsion. We use only the real lengths, which are mirror-symmetric, so a knot and its mirror image sound identical here — our tones cannot hear handedness, though the Theta hash can. That is our choice, not a limit of the geometry: the torsion could carry the handedness, for instance as a stereo position; we have not built that. And not every knot has a tone of this kind: torus knots and satellite knots (connected sums among them) have no hyperbolic structure, hence no length spectrum — that silence is itself a true statement about the knot. Where no hyperbolic structure is available — the knot is not hyperbolic, or the computation did not find the structure — the page instead offers the Fourier spectrum of the centerline and labels it as such; unlike the length-spectrum tone, its pitch is arbitrary, fixed by the parametrization rather than by the knot.
The identification pipeline is a system by Werner Alois Stanggassinger in collaboration with Claude Code (Anthropic): the sculptor contributes the geometries and decides what to compute; Claude Code writes the construction generators and the code that orchestrates established research software — SnapPy, spherogram, Regina, SageMath, KnotJob, Bar-Natan–van der Veen's Theta.sage — into scanners, invariant layers and the corpus, and runs it. The invariants are computed by those tools, not by the language model. The construction method behind the machine families — an atomic module placed under Cn/Sn symmetry with a closure constraint — is named here for attribution and priority; its detailed kinematics are shared with research institutions on request, not published. The symmetry placement shown here is one principle among many: we are developing a broader family of construction machines — building knots from tangles, braids, satellites, woven links and flows, among others. These are exploratory and not yet validated; their constructions are not detailed here and remain work in progress.