Skip to content
Blog

Errors that tell the truth

A platform earns trust in its failure messages, not its success screens. The rules we follow when something goes wrong: name the limit, name the state of your money, and never pretend.

2 min read

  • Errors
  • Billing
  • Domains
On this page
  1. Name the real limit
  2. Say what happened to your money
  3. Never pretend

Nobody chooses a cloud platform for its error messages. But everyone remembers the 3am incident where the error said nothing, the dashboard said everything was fine, and the invoice said otherwise.

We decided early that failures on Harakumo follow rules. They are simple to state and surprisingly hard to keep.

Name the real limit

For a while, uploads past a size threshold failed with Upload deploy failed — no size, no limit, nothing to act on. The embarrassing part: the pipeline knew exactly what was wrong. It had a precise message about which cap was exceeded, and a generic error handler threw that message away on the way out.

Now a too-large upload tells you the number, and tells you the trap: a small compressed archive can expand far past the decompressed cap when it contains a dependency directory. The message names the fix. That is the standard every limit here has to meet — if we measured it, we say it.

Say what happened to your money

Buying a domain involves taking payment — from your balance, or from your card when you ask for that — and then registering the name with the registrar. Two steps, and the second can fail after the first succeeded.

The rule: charge, then act, then refund if the action failed — and say which of those happened. A failed purchase tells you plainly whether you were charged, whether the money went back to your balance or your card, and what happens next if the refund itself did not go through. Renewals follow the same path with an idempotency key pinned to the expiry window, so a retry after a timeout cannot buy a second year.

Never pretend

Some things on the platform are gated until a real prerequisite is met. The temptation is to fake those paths in the meantime — return success, fill in mock data, keep the demo smooth.

We return honest status codes instead: not enabled, balance too small, already taken. A feature that pretends to work is worse than a missing one, because you build on it. The same discipline applies inside: our readiness checks prove capabilities by doing the real thing, because a check that only proves read access reports "ready" right up until a customer's money is on the line.

None of this is glamorous. It is also most of what "reliable" means from the outside.

Filed under

  • Errors
  • Billing
  • Domains

Go deeper in the docs

Errors & rate limits

Every error is JSON with an error sentence you can show a person, and often a code a program can branch on. What each status and code means, and what to do.

Domains

Buy domains inside Harakumo, paid from the Balance, connect domains you own by nameservers, edit DNS, auto-renew from the Balance, and transfer in or out.

Keep reading

2 min read

A failed deploy should never take your site down

We found the worst kind of bug in our deploy pipeline: a build that failed could take the running app down with it. Here is what was wrong, and the property that fixes it for good.

  • Deploys
  • Reliability

2 min read

One API key, your whole cloud

Why Harakumo exists: shipping a small product should not require assembling six companies. And why the whole platform speaks MCP, so an AI assistant can operate it end to end.

  • Launch
  • AI connector

Build something real today.

Start free with no card. Connect your AI and ask it to build, or deploy a folder yourself.