Grábrók · Borg
A podcast booth where identity is a design decision, not a checkpoint
A walk-up podcast kiosk for the University of Akureyri, running two authentication paths at once: a phone-paired university identity, and a guest lane with no account at all.
“Two people can use the same booth in the same hour and never touch the same login screen.

The Challenge
A podcast booth in a public university building serves two populations that cannot be served the same way. Staff and students often want the session tied to their identity — for attendance, for follow-up, for accountability over what they said on the record. Guests have no university login at all: a visiting speaker, a prospective student, a parent on a campus tour. Both naive designs fail. Force everyone through single sign-on and the guest case dies, and for a public-facing kiosk the guest case is frequently the more important one. Skip authentication entirely and you are left with unaccountable audio sitting on university hardware, going out under the university's name, traceable to nobody.
The Approach
The booth runs two paths and lets the recorder pick. A registered user scans a QR code shown on the idle screen, authenticates once on their own phone through the university's single sign-on, and confirms the pairing deliberately — an explicit "tengja klefann", never a silent claim. The booth picks up a scoped booth-session token, a klefalota, on its next poll and records under that person's real name for the duration of that recording and nothing beyond it. Nobody types a password on a shared kiosk keyboard: the phone does the authenticating, and the booth only needs proof, once, that it is talking to the right session. A guest takes one tap on the screen. No phone, no account; a sentinel identity mints the session instead of a real user. Nothing recorded at the booth reaches the public feed on its own — signed in or not, booth recordings are drafts by construction and a person publishes them deliberately. Accountability is preserved by where the review gate sits, not by a login wall in front of everyone. The token is short-lived, scoped to a single recording session, and verified by the server. Identity is derived from that token and from nothing else the kiosk can assert about itself — the shared machine in the hallway is never the thing being trusted.
Outcomes
Grábrók is a podcast booth at the University of Akureyri: a physical kiosk running an Electron application on a dedicated machine, recording into BORG, the backend I built for the university. The interesting part of it is not the recording. It is the authentication.
The design problem
Take the booth seriously as a piece of public infrastructure and the authentication question stops being a checkbox. A member of staff recording a lecture supplement wants the file attached to their name — they will want to find it again, and the university will want to know who spoke. A visiting speaker on campus for one afternoon — or a prospective student, or a parent on a campus tour — has no institutional account, and is not going to acquire one for a ten-minute recording.
Both single-path designs fail, and they fail in opposite directions:
- Everyone through SSO. Clean, auditable, and it deletes the guest use case — which on a walk-up kiosk in a public building is often the case that matters most.
- No authentication at all. Fast, welcoming, and it produces unaccountable audio on university hardware, published under the university's name, attributable to nobody.
So the real question was narrower, and more useful than "how do we add a login": not whether to authenticate, but where.
Two paths through one booth
Signed in
The idle screen carries a QR code, refreshed automatically so it is never stale while the booth sits unused. A registered user scans it, signs in on their own phone through the university's single sign-on, and confirms the pairing with an explicit action — tengja klefann. There is no silent binding: no session is ever attached to someone who did not actively agree to it. The booth then picks up a scoped booth-session token, a klefalota, on its next poll, and records under that person's real name.
The token is the load-bearing piece. It is short-lived, valid for one recording session, and verified server-side. Ownership is derived from it and from nothing else the kiosk can assert about itself. That matters because the thing you are authenticating is a shared machine in a hallway, and a shared machine should be trusted with as little as possible.
Putting the sign-in on the phone follows from the same reasoning. Nobody should type a university password on a keyboard that a hundred other people touch. The phone does the authenticating; the booth only needs proof, once, that it is talking to the right session.
Guest
One tap on the screen. No phone step, no account, recording starts. A sentinel identity mints the session instead of a real user, so a token exists — the upload path never runs unauthenticated — but it is bound to no person.
Accountability then moves to where it belongs. Nothing recorded at the booth — signed in or not — reaches the public feed on its own; booth recordings are drafts by construction, and a person publishes them deliberately. Only the browser recorder, used by someone already signed in at their own desk, publishes directly. That is the trade the design actually makes. Not "prove who you are before you may speak", but "speak freely, and a human decides before it is published in the university's name".
What happens after you stop recording
The signed-in flow uploads the moment recording stops. No extra tap, no confirmation screen. An earlier version asked first — send it now, or keep it in the booth — and that step cost a user a recording, so the step came out. The general rule I took from it: the fewer decisions a booth asks of someone mid-recording, the better. The booth also signs itself out after a few idle minutes and clears its local state, but defers that logout while a recording or an upload is still in progress, so the timeout can never be the thing that eats your work.
A signed-in recorder gets a real notification when their file is live on Borg — not just an administrator's dashboard. That was a deliberate correction: the system used to tell the admins and not the author.
Guests get their recording handed straight back — a QR code on screen, or a link by email, going directly to that one recording and nothing else. A walk-up recorder retrieving their own file should not be the moment they finally meet the sign-in screen they were spared five minutes earlier.
Inheriting the system
I did not start this project. It came to me as an existing prototype with a working idea and a first shape of the interface, and I took it over in May 2026. Before changing any behaviour I wrote a full assessment of what was there, and worked from that rather than from impressions.
What followed was a rewrite of the trust and authentication model rather than a set of patches. The original system was built on different assumptions about who has to prove who they are, and those assumptions were the thing that had to change. The idea itself and the interface's first shape carried forward; the original authors are credited in the project itself, and that is worth saying plainly rather than quietly overwriting.
The Grábrók surface carries 54 automated tests of its own, inside a much larger suite that runs on every change. A failure in the session store refuses the request rather than falling back to trusting the client.
The face
The idle screen is a full-bleed photograph of the Grábrók crater the booth is named after, desaturated and darkened so the university's red and white type sits cleanly on top. Two columns: the name and the instructions on the left, the QR code and two entry points on the right — Instructions and Record as guest.
Tapping Instructions before scanning does not produce a wall of text. It asks which of the two flows you are in — I have a Borg account or I'm a guest — and explains that one. The authentication argument reaches the surface as a layout decision: the first thing the screen does is let you say which kind of person you are.
Not "how do we add login" — but where exactly does identity need to attach, and where does it just get in the way.
Idle-screen background photograph: Jakub Hałun, Wikimedia Commons, CC BY-SA 4.0.
Technology Stack
Gallery

Lessons Learned
- Authentication is a placement problem, not a feature. The useful question is not whether to add a login but where identity has to attach — and every place it attaches unnecessarily costs you a user you wanted.
- A shared machine should be trusted with as little as possible. Moving the sign-in to the recorder's own phone and giving the booth only a short-lived, server-verified session token removed an entire class of problem instead of hardening it.
- Accountability does not require a login wall. Putting the review gate after the recording rather than the authentication gate before it preserved the institutional guarantee and kept the door open.
- Remove decisions from the middle of a recording. A confirmation step that looked harmless in review cost a real user their file; the fix was to delete the step, not to explain it better.
Related Projects
View all projects →
BORG
University of Akureyri's secure hybrid AI platform — combining commercial AI with on-premise GPU infrastructure for academic data sovereignty.

Institutional Knowledge Graph
Small organisations run on invisible architecture — governance, systems, policies, dependencies that live in people’s heads. This is the complete methodology for making that architecture queryable: Neo4j, JSON-LD, SHACL, and a pipeline that is always safe to re-run.

Sumarhús
Owned infrastructure and an agent community: own machines, own data, own content. The agents do the work, the human hand decides.