Spacetraders, the game, the tui, the... wait a minute
Some games you just open and play. And then there's SpaceTraders – a game where there's no client to begin with. No graphics, no buttons, no menu. Just a REST API and one quiet invitation: Build something.
What is SpaceTraders?
SpaceTradersspacetraders.io is a browser-based, multiplayer space trading game – but that description sounds almost too ordinary. The twist is that the actual game is a public HTTP API. You register, get a token, and from that point on you interact exclusively through API calls. Navigate a ship? POST /v2/my/ships/{shipSymbol}/navigate. Check market prices? GET /v2/systems/{systemSymbol}/waypoints/{waypointSymbol}/market. That's it.
The client? You build it yourself. In whatever you want. That's the whole premise, and I think it's brilliant.
Why this is such a great idea
For one, it's a genuine learning project. You're working with a real, documented API – handling authentication, rate limiting, error handling – all the things you'd otherwise only practice at work or in dry tutorials. But here you have a reason to keep going: you actually want to know if the hauler made it to the waypoint in time. And there's no "correct" solution. Some people build web apps. Some write Python scripts that trade automatically overnight. Some wire up Grafana dashboards. The freedom to define your own workflow, your own aesthetic, your own automation logic – that is the game, really.
My client: a TUI with Python and Zellij
I went with a TUI – Terminal User Interface. No Electron app, no React dashboard, just text in the terminal. That fits both my workflow and the slightly retro-futuristic vibe SpaceTraders somehow radiates. Technically it's built with Python, embedded in Zellij – a modern terminal multiplexer. Zellij handles the panel layout, Python handles the API logic and rendering.

The layout splits into two halves: on the left, a REPL where I type commands and track output – on the right, a status overview showing agent info, current situation, open contracts, cargo, and a fleet summary.
In the screenshot, there's an active mining session: miner-1 and flagship are both extracting at waypoint X1-XU27-ED5E, while hauler-1 waits for its turn. An active contract is running – deliver IRON_ORE, deadline April 18th. 7,414 credits reward. Everything visible, everything in the terminal.
The thing I didn't expect
What surprised me most was how creative it made me. Not creative in an abstract sense – creative in a practical, what information do I actually need at a glance? kind of way. I'm designing commands that feel good to type. I'm building automation loops so the ships keep mining while I'm doing something else. This isn't a game you play. It's a game you build – and in doing so, it quietly makes you a better programmer. If you want to check it out: spacetraders.iospacetraders.io. The API documentation is excellent, and it also features an OpenAPI Specspacetraders.io.
And before anyone comes around the corner with: "But that's basically how all browser games work anyway."
Yes, I'm aware – but the difference is that SpaceTraders says from the ground up: "Here's an API, what you do with it is entirely up to you."
The SpaceTraders website even links a project that renders waypoints, planets and more as a 3D visualization in Unity. Show me a browser game that actively wants to support something like that out of the box.