Lab notes · 29 October 2026

How we built squidwave.com, a living 3D world in your browser

A real-time cavern lagoon, a cyborg squid with a mind of its own, AI chat and AR, all served as a static site with no GPU servers. Here's how it fits together.

Our old website was a tidy page of cards. It said what we do, but it didn't show it. So we rebuilt squidwave.com as the thing we'd want a client to see: a small, living world that runs entirely in your browser.

The world

The lagoon, waterfalls, floating islands and portal are built in code with three.js. Almost nothing is a downloaded 3D model. Rocks, islands and the cavern are generated from noise when the page loads, and every surface uses a small set of shared shaders: one lighting model, one fog, one set of colours that shift with the realm, the time of day and the weather.

That keeps the download small. The page you read first is a few kilobytes; the whole 3D world arrives a moment later, after the words are already on screen.

Squidlee

Squidlee, our cyborg squid, isn't an animation that loops. Its body is shaped in code, its tentacles are chains of points run by a tiny physics simulation, and a small, deterministic "brain" decides what it wants: where to go, what to look at, how it feels. Lightning makes it jump. Snow makes it shiver. Leave it alone long enough and it falls asleep on its charging pod.

Talking to it

You can talk to Squidlee. Simple commands ("make it rain", "take me to space") are understood instantly in your browser. Open conversation goes to a small open-source language model running at the edge. Whatever the model says, anything it wants to do goes through a strict list of allowed actions, so it can change the weather but it can't run code or touch the page.

AR and gestures

On Android, Squidlee can step into your room through WebXR. On iPhone, we build a 3D model of it on the spot and hand it to Apple's Quick Look. Hand play uses your camera with on-device hand tracking: the video never leaves your browser.

No GPU servers

How squidwave.com fits together The browser runs the 3D world, Squidlee's brain, instant commands and hand tracking. Static hosting serves the files, and a few small edge functions call an AI model for chat and voice, keep daily limits in KV, and send contact messages through Resend. YOUR BROWSER three.js world + shaders Squidlee’s brain Instant commands Hand tracking (on device) AR: WebXR / Quick Look Music + voice effects STATIC HOSTING Static files: HTML, JS, shaders, notes EDGE FUNCTIONS /api/chat /api/voice /api/contact EDGE AI Small open model: chat MeloTTS: Squidlee’s voice KV Daily caps, no surprises RESEND Contact form → email first load chat, voice
Everything that moves runs on your device. The server side is a few small functions with hard limits.

The whole site is static files plus a few tiny serverless functions. The AI has a hard daily budget, and when it's reached, Squidlee falls back to its built-in brain. The site never breaks, and it never runs up a bill.

If you'd like something like this for your product, say hi.