Sovren · Cloud infrastructure · 2026
Triton Cloud: I designed the console and shipped its first build.
Sovren’s cloud, rented at tritoncloud.io or run on a customer’s own racks. I started from a repo of APIs. I set the pricing, designed the console and its design system, and shipped the first build with an engineer. I still ship code to it.
- FindSat with users in the flows they run
- SpecPricing first, 13 flows cut to 10
- DesignTen flows across two consoles
- BuildShipped the first console build, still ship to it
- ShipLive, with an on-prem client
- Hear backSupport reports to me
- 1What is running, and what needs a person.
- 2Spend to date, on the first screen.
- 3Failed, degraded and provisioning each get their own count.
A developer had to understand the whole product from one screen.
Triton is a whole cloud: virtual machines, storage, networking, and sandboxes for teams building AI agents. The console is where all of that turns into something a person can buy. You choose where a machine runs, what it runs and how large it is, and seconds later it exists. I had to make that clear to someone who has never opened a cloud console, and fast for someone who lives in one. Same screens, both.
- 1Every choice priced where the choice is made.
- 2On a phone the tables become cards.
Price sits beside the choice that changes it, and the total is on screen before anything is committed.
Before I drew a screen, I had to decide how it made money.
The mandate was growth. Sovren already owned the hardware and ran the software, so the job was to sell more of what we owned and use more of what sat idle. Pricing came first, because in this product the price sits on every screen. It came out as five flat tiers, from $5, so the total is on screen before anyone commits.
- 1The allowance is explained where it is spent.
- 2A rate not yet set says so, and totals nothing.
- 3Stopped machines still bill, and it warns you.
The Claude integration had no API behind it yet. I designed and built its front end anyway. I did not wait for the API, because the decisions around it needed something real to look at.
- 1What a conversation may do, said plainly.
- 2Nothing it can reach that you cannot reach yourself.
I started with a repository of APIs and no product around it.
No brand, no screens, no agreed word for anything. The platform could already make a machine. Nothing existed that could ask it to.
I studied two self‑serve clouds and VMware, for how buying a machine in a browser already feels and what people running their own hardware expect. Nothing went in just because a competitor had it. Then I interviewed users and sat with them through the flows they already run.
The first map had 13 flows. I cut it to ten, with the error and blocked states written into each one and no dead end without a written reason.
- 1Three steps, named before the first one starts.
- 2The payment step is visible from the beginning.
I required a card at sign‑up and gave up invoicing at launch.
A growth mandate argues for the lowest wall you can build. I raised one.
Self‑serve clouds take a payment method before the first machine starts. Enterprise buyers expect an invoice thirty days later, and the licensed product in the next section sells to exactly those buyers. I could not have both at launch.
I chose the card, with the CTO, and nobody else was in that decision. A machine that starts before anyone has paid is a machine somebody else pays for. The cost is real: an enterprise team trying the hosted product meets a card form, and procurement departments do not carry cards. So on-prem sells through our team instead, and that is how the $600K+ client bought it.
- 1Refused before the form is touched.
- 2The sentence names the cause and the step.
- 3Nothing above the wall is taken away.
The refusal shows before the form is touched, and it never says permission denied, because the user has permission. Five things can block that button, and each one names itself.
The same console had to be sellable twice.
Once as a hosted product. Once installed on a company’s own hardware, often a company that sells to its own customers. That second sale changes the design: a reseller sees their customers and nobody else’s, prices their own catalogue, and hands out roles inside their own boundary.
- 1One row per reseller, with their own customers.
- 2Each reseller sets its own branding. None has yet.
- 3Usage rolls up to whoever is billed for it.
So I drew an operator console beside the customer one: who exists, what each of them may do, and how much they are allowed to consume.
- 1An event an operator starts, not a destination.
- 2The empty state names what is missing.
A company leaving VMware arrives with machines already running, so import is something an operator starts and finishes. The platform’s own data already had the shape for all of this. What it did not have was a way to make somebody the administrator of one reseller and nothing else.
I shipped the first console build with an engineer, and I still ship to it.
I wrote the console in React and Vite and took the first build out with one of our engineers. Engineering carried it forward from there. My changes go in the same way everyone else’s do: an issue, a pull request, a review.
The design system lives in the code. Every color is a token, and the build fails if anyone uses a raw color, so a contrast problem gets fixed once, at the token.
- ConsoleDesign, front end, the first build, changes sinceMine
- Design systemTokens, components, the build check on raw colorMine
- Pricing and scopeFive flat tiers, 13 flows cut to 10Mine
- Billing integrationMetering and paymentsEngineering
- The platformHypervisor, storage, networking, provisioningPlatform team
I lead design and support, and I write this code alongside that job. Support reports to me, so Triton issues reach me.
One on-prem client has paid $600K+ for it.
The hosted product has been live since September, with self‑serve sign‑up and card payments. Success there is activation and the time to a first running machine. The card wall adds a step in front of both, and I knew that when I made the call. I’d make it again.