๐Ÿ“ข At IOSP in person for Noizetoyz? This page can't reach the local synth relay over HTTPS โ€” open the local player instead (same content, works on-site).

hacking.tilde.style

IOSP 2026, Leiden โ€” ATScience workshop, "Resilient Data & Sovereign Infrastructure" track.

Get set up

One identity gets you into every station below โ€” pick one:

  1. pds.rip โ€” a public test PDS, zero commitment. Good if you just want to poke around today. Heads up if you're doing Live Data Streaming specifically: it rate-limits at roughly 10 requests/24h per IP, which a continuous producer will hit fast.
  2. Aster โ€” the new science PDS, via invite code. Good if you want this to still exist after today.
  3. memo.dog โ€” our own self-hosted test PDS, invite-code only (ask at the station). Built and load-tested specifically for Live Data Streaming's continuous-write pattern โ€” not a permanent service, workshop duration + a few days only. Sign up at kiosk.tilde.style โ€” one-page form, same account-creation API the Bluesky app uses, skips its multi-screen flow.

Aster signup โ€” coming with the launch

Aster is the ATScience PDS Hosting project, led by Emily Hunt โ€” not something built for this page. The link above goes live once that project launches; check back closer to October if it's not there yet.

What's built here

Torsten's own station at IOSP is Live Data Streaming + Noizetoyz โ€” self-select once you're set up. The full workshop has more stations run by other co-organizers (new-to-ATProto, institutions, custom feeds, personal research pages, AI workflows, and more) โ€” not documented on this page; ask at the event for the full station map.

๐Ÿ“ก๐ŸŒก๏ธ Live Data Streaming

Raspberry Pi + sensor โ†’ Nebra โ†’ an ATProto record โ†’ a Matadisco-shaped viewer reading it back out.

code ready

๐ŸŽน๐ŸŽถ Noizetoyz

An ATProto-networked Mozzi synth โ€” play a key, scrub a sample, fold a wave, or sweep a filter from a browser or a gamepad; real hardware boards play it back live in the room. Start here.

code ready

Start the engines

Once you're set up with an identity, here's where the code actually runs:

GitHub Codespaces

A full Linux VM per person if you want Python for Live Data Streaming, or a persistent environment across sessions. Needs a GitHub account; 120 free core-hours/month, on your own account, not shared. Open from the repo's Code โ†’ Codespaces button, or from the CLI:

gh codespace create --repo ATProto-Science/iosp-hacking-stations --display-name "atscience-station-$(openssl rand -hex 3)"

Without --display-name the CLI hands back a random codespace name like bookish-yodel-9gx56g547524q โ€” fine, but no fun hunting for it later in a list of "bookish yodel"s. (Needs a reasonably current gh โ€” the flag isn't in very old installs.)

live external tool

Noizetoyz doesn't need a cloud IDE at all โ€” it's real hardware, flashed locally (noizetoyz/firmware/flash.sh) or played straight from a browser via the player, zero setup. Our own PDS (memo.dog) is under "Get set up" above โ€” it's an identity, not a separate engine to start.

Look around

Once you've written something, here's how to see it:

Viewer

Read Live Data Streaming's live sensor readings, station 4's SAITO facts, Noizetoyz's last played note, and who's checked in โ€” ๐Ÿ• memo.dog / ๐ŸŒธ Aster / ๐Ÿฆ‹ Bluesky / ๐ŸŒป BYOH / ๐Ÿ  self-hosted, plus the "recently connected via youandme.at" feed โ€” side by side, plain fetch() against HappyView, no separate backend. Open the viewer.

live

Make noise

Noizetoyz โ€” an ATProto-networked Mozzi synth. Play notes, scrub samples, fold waves, sweep a filter, or FM synthesize from a browser (or a gamepad); real hardware boards play it back live on real speakers. Every interaction is a real ATProto record, shared live over the network โ€” same no-separate-backend pattern as the viewer. Open the player ยท what it does, how to connect & play, how to diagnose.

live

Staff

Password-protected console for whoever's staffing the desk โ€” logs Aster/Bluesky/self-hosted check-ins into the same feed the kiosk view above reads. Open staff console.

live

Going deeper

How the viewer's tables actually get their data, and how to look even further underneath them:

HappyView

The schema-driven AppView the viewer above reads through, and station 3 uses directly for feeds, lists, and starter packs. happyview.werk.museum

live

HappyView doesn't expose a list endpoint just because a record lexicon exists. Each collection needed two lexicons registered by hand in HappyView's admin UI (or its Admin API โ€” that's how the check-in lexicons below were actually registered this time, no dashboard clicking needed) โ€” the record schema itself (style.tilde.hacking.sensorReading, run.saito.fact, style.tilde.hacking.checkin, music.atproto.noizetoyz.synth.note) and a companion query lexicon (style.tilde.hacking.listSensorReadings, run.saito.listFacts, style.tilde.hacking.listCheckins, music.atproto.noizetoyz.synth.listNotes) whose target_collection points back at the record NSID โ€” that pairing is what actually creates the /xrpc/<query-nsid> endpoint the viewer calls. If your own station-4 idea writes a new record type, it won't show up anywhere until you register both halves the same way. HappyView also has its own Lua scripting layer for per-lexicon logic beyond a plain list query, if target_collection alone isn't enough for what you're building.

pdsls

General-purpose ATProto repo browser โ€” inspect any DID's actual records directly on their PDS, not just what HappyView has a query registered for. Useful for checking your own writes landed correctly even before you've wired up a list query. URL pattern: pdsls.dev/at://<your-handle>, or add a collection NSID to see just that one, e.g. pdsls.dev/at://<your-handle>/run.saito.fact.

pdsls.dev example repo example: saito facts example: sensor readings

live external tool

Code

Primary: github.com/ATProto-Science/iosp-hacking-stations, public โ€” clone freely, no invite needed. A Tangled mirror (ATProto-native git host) is planned but not confirmed live yet. The repo's own GETTING-STARTED.md has more on environment options and current workshop-infra status.