Introducing the HyperMap Stack

June 22nd, 2025

HyperMap is a new format for REST APIs I designed over the past couple of years. It’s built around two core ideas. First, it's entirely self-descriptive, meaning a client can understand and interact with any HyperMap API without custom integration code. Second, it supports running JavaScript or WebAssembly in a secure sandbox on the client side, enabling dynamic functionality that adapts to each API resource’s specific needs.

Think of it as taking the Web stack and stripping out everything designed for humans—the document elements, styling, and visual components—then replacing them with a minimalist, JSON data types (plus a binary type). I kept the familiar Web event model and platform APIs which means that as clients interact with your interface you can trigger dynamic behaviours, exactly as you’d expect from a modern Web app.

A resource then becomes a living thing, dynamically updating based on client interactions or remote events. Clients are now reactive; binding to parts of the data structure and watching for changes. And yes: as people have asked this is still REST — you’re allowed to do this!

equitiesData:
acornComputersLtd:
ticker:
ACRN
price:
239.46
buy:
sinclairResearchLtd:
ticker:
SCLR
price:
188.26
buy:

An example of a HyperMap explorer inspecting live data, rendering controls as UI elements. You might need to view the post in a browser.

So how do you call HyperMap APIs from your preferred language? Isn't it a lot of work to write a sandboxed code execution environment for all of your APIs? Turns out you don't need to: Mech is a universal client that can talk to any HyperMap service, very similar to a Web browser but designed to be used by other software rather than humans. Instead of writing your own client libraries or using an SDK generator, just use Mech. What if there’s some behaviour you need that’s not available out of the box? Just write some code and serve it from a URL alongside your resource! Now your resources and your client behaviours are linked and can’t drift out of sync.

I first released a prototype back in 2023 and gave a talk at Nordic APIs that September, but for most of 2024 it was on the back-burner due to some implementation issues that I couldn’t see a way around. Over the past few months I’ve been working on a complete rewrite that I’m confident puts the stack on a surer footing. In the coming days I’ll release a shim that adds support for HyperMap to Web browsers as well as an initial Mech implementation for client-side JavaScript. On the roadmap are a tool to explore and debug HyperMap services as well as native Mech for Posix-compatible desktops and servers, as well as sandboxed Apple apps.

If this sounds interesting please follow along by subscribing to the RSS feed or joining me on Zulip!