About the Game
You don't manage a datacenter from a spreadsheet. You walk it.
Uptime puts you on the floor of your own cloud provider, first person, hands on the hardware. You buy the servers and carry them to the rack. You seat them with a click. You run the cable off the spool yourself, find the port, watch it lay across the floor, and power the thing on. Then you sign your first customer and find out whether any of it holds.
Underneath the floor is a real simulation. Every server, switch, cable and port is a live entity in a deterministic engine, and the network genuinely switches and routes traffic across it. Power and cooling are budgets you can blow. Capacity is hardware that fills up. When something breaks, it breaks because the model says it should, and the fix is usually the one a real engineer would reach for. That was the whole goal: a build-it-with-your-hands tycoon sim that still holds up if you do this for a living.
Get it running, then keep it running. The moment traffic arrives, the simulation starts pushing back.
You're running the cloud, not a server room.
You own the full stack. The metal, the network, the services you sell, and the customers whose product lives on your kit. You're the thing they build on, so everything running on you is yours to keep alive, from the single box in the garage to a floor other companies depend on.
Your customers bet their business on you.
The tenants have names, and they hand you their product expecting it to stay up. Reputation is the currency underneath all of it. You earn it slowly and you can lose it in one bad night, and the bigger the customer, the harder that fall lands. Sign a deal you can't carry, pack one host too tight, sleep through an SLA breach at 2am, and the cost isn't only the money. It's the trust that was about to send you the next customer.
So every yes is a wager on whether you can carry the new weight without dropping what you already hold. Turning business away is sometimes the correct call. The tenants you keep won't sit quietly either. They surge, they haggle, they show up with deadlines. Keep them happy and they say so out loud, and they bring friends.
What you sell is infrastructure you actually run.
Customers don't rent "a server." They spin up the things a real cloud sells: virtual machines, object storage, managed databases, Kubernetes, load balancers, serverless functions. Each one is a service you operate. Behind every service is a control plane you have to keep alive and an agent on each host that does the work, and all of it competes for the same compute your customers are paying for.
That's where the network grows teeth. Cut a service off from its control plane and it starts to fail. Lean on one too hard and it buckles. Capacity runs out, the network can partition the very services you're selling, and the way you lay it all out is what separates a provider that holds from one that tips over.
The simulation is the game.
This is where the word "simulation" gets earned. Every device on your floor is a real entity in a deterministic engine, and every LED you see is reading its live state. A link saturates because the math saturated it. A rack goes dark because a fault domain you never thought about turned out to be a single point of failure.
Ports, cables, power draw, fault domains, oversubscription, link aggregation, spanning tree, BGP, mean-time-between-failures. These are the model, not labels stuck on a progress bar. Cable a redundant link the wrong way and spanning tree either saves you or, if you got it backwards, the whole floor drowns in a broadcast storm. You can ignore the depth and still win. You can also lean all the way into it.
The customers talk to you.
They live in a chat channel that reads like the ops Slack you've spent years in. They onboard, ask for more capacity, complain when latency spikes, and tell you in their own words when the change you made three minutes ago just took their service down.
Incidents don't ship with severity tags attached. Severity comes out of how many customers you're hurting and how badly. A flapping link nobody depends on is a shrug. That same link under your biggest tenant is a page in the middle of the night.
Two ways to read the same machine.
Never touched a rack? NPC mentors walk you in, and one key toggles jargon mode, flipping the whole interface between plain language and the real terminology over the exact same systems. "Spread these across separate failure zones" and "fix this single-AZ SPOF" are the same instruction. You pick up the real words by playing instead of reading a manual. Already know what oversubscription costs you? The depth was there the whole time. Turn the training wheels off.
Set the difficulty. The hard runs won't let you off.
One difficulty setting, Easy, Standard or Hard, re-tunes the entire simulation from a single neutral baseline, and you can move it mid-run. Push it up and the reputation ledger turns crueller: slower to earn, quicker to lose, less willing to forgive an incident. The authored hard scenarios set their own floor, so the slider can make them tougher but never softer.
Garage-to-Glory is one story, not the only one.
The campaign takes you from a single server in the garage to your own data center floor, growing through a basement build-out and into a room you fill and defend. That's one scenario. Run the hard-mode variant. Survive Data-Loss Day. Hold the line through Under Attack. Or drop into open sandbox and build with no rails at all. Scenarios are plain, readable files, so the community can write their own starts, disasters and constraints and drop them straight in.
This is Early Access. The data center floor is built to grow: add rows and cages to expand it, spread your customers across separate zones, and build real multi-region resilience by hand. More hardware, bigger scenarios and hyperscale scale are on the road ahead.
For the engineers.
You already know whether we mean it. Here's what's under the hood:
Typed ports and cables, with real LAG / link-aggregation across member links
Managed L2 and L3 switches forming an actual switching fabric, not one abstract "network" stat
RSTP that converges, elects a root bridge and blocks redundant ports; loop the network and it storms
Oversubscription that bites when you cheap out on uplinks
Fault domains and single points of failure that are computed, not painted on
Reachability chains from host to switch to demarc to uplink, gating every allocation
Every service split into a control plane and per-host data-plane agents; partition them and it goes headless
Power draw and wear modelling, so hardware ages and degrades instead of tripping a random death timer
Capacity modelled as workload shapes fitting host shapes rather than a scalar bar
Reputation as an asymmetric ledger, with a capacity-fit check before you ever sign
A deterministic engine: same seed, same run, every time, headless-testable and replay-stable
Built honestly.
A deterministic Rust engine runs the simulation, and the renderer only ever shows you what the engine already decided. Nothing gets faked for the camera. Scenarios and mods are human-readable files. Windows, macOS and Linux from day one.
Uptime is in Early Access. The full loop is here and playable now: campaign, sandbox, hard modes, and the customer and service simulation underneath them. Early Access is where the breadth grows on top of that, more places to build, more hardware, more scenarios, and steady polish across art, audio and onboarding, with the direction shaped by what players push on, the infra crowd most of all.
Features
First-person, hands-on - walk the floor, carry the hardware, run the cable. You're in the room, not hovering above it.
Cabling as a hero mechanic - run every link by hand, with typed connectors, enforced reach and bend radius, and a live edge that carries traffic. Pull it and something goes dark. The way Factorio makes belts feel good.
Customers as commitments - reputation earned slowly and lost in an instant, every signup a bet against the capacity you can see.
A real cloud to run - VMs, storage, databases, Kubernetes, load balancers and functions, each with a control plane and data-plane agents on your hosts.
A simulation that pushes back - ports, power, fault domains, spanning tree, oversubscription and BGP are the actual model.
Emergent incidents - severity comes from real customer impact, not scripted labels.
Readable for anyone, honest for the pros - one-key jargon toggle over the same systems, no manual required.
Difficulty you control - live Easy/Standard/Hard that re-tunes everything, and hard scenarios that won't soften.
Breadth of play - campaign, scenario variants, open sandbox, and drop-in community scenarios.
Deterministic and mod-friendly - same seed, same run, plain-text scenario files.
Screenshots
10 imagesVersion Information
Steam Patch Notes
Official update history
Fixed
Security
- A flood your gateway absorbs no longer fails your customers' requests. Any attack larger than your line failed close to half of every tenant's requests, whatever your defences stopped.
- A bigger line now actually helps against a flood. The damage was pinned to a fixed share of whatever circuit you had, so upgrading moved the attack up with it and changed nothing.
- Attacks only hurt when they crowd out real traffic. An inbound flood was charged against the capacity you send on, a separate lane, so it hurt tenants on a near empty line.
- Sitting out an absorbed attack no longer builds toward a blackout. The escalation clock ran while any flood existed, so a mitigated one left the next real attack starting at its worst.
- Small attack figures read in Mbps instead of 0.0 Gbps. A live threat under 50 Mbps showed as zero on the gateway and appliance consoles whenever the box was rated in Gbps.
- A threat you have nothing racked against reads as unfiltered, not leaking. App floods have no edge defence at any tier, so that row sat permanently red over something no box will stop.
Network
- Your line says when it is full because of an attack. Connectivity shows the line under flood rather than plain saturated, so a status that disagrees with your own traffic explains itself.
- The connectivity load bar follows the busier direction. It only ever watched what you send, so an inbound flood left a near empty bar beside a saturated line.
- Port load stops adding send and receive together. A port compared that total against a per direction rating, so a 25G port could read past 25 Gbps with nothing actually saturated.
- Upgrading a line clears its saturation alarm. Swapping in a faster circuit erased that the old one was ever saturated, so the alarm it should have cleared stayed open for good.
Services
- A machine that loses its network no longer deletes what runs on it. Clusters and buckets on a powered, running server were torn down and rebuilt when its path dropped, even briefly.
- Workloads left on an unreachable machine show as stranded. They stay put so you can re-cable or migrate them, and your staff can be sent to evacuate them, the same as virtual machines already did.
Ops console
- A notification no longer closes the dropdown you are using. Picking a network or job on the machines, homing and server screens had the menu shut and your choice cleared whenever anything else happened.
- A saved picker choice still means the same tenant. The network list was restored by position, so adding or renaming a network could silently repoint your selection at somebody else.
Notes
- Load once to heal. Time banked toward attack escalation is cleared, and a stuck line saturation alarm is cleared and re-checked. Nothing moves and no downtime.
- Saves work in both directions with v0.1.42. The save format is unchanged, and the one field added is optional.
- Multiplayer works across v0.1.42 and v0.1.43. The world update format is unchanged.
Fixed
Ops console
- The landing page counts are current when you open it. Pending growth asks, prospects, dark machines and open incidents could all show a figure from before you last left the tab.
- A growth ask you approved leaves the landing page. Approving from anywhere except that page left the old line sitting there, and auto-approve always did.
- A customer page shows that customer's own data. The panel is reused for every tenant, so any section of it could still be showing the tenant you looked at before, machine size included.
- Links from the landing page reach the right list. "N prospects waiting" and the growth line dropped you on whichever customer card you last had open instead of the roster.
Security
- A flood that fills your line says your line is full. v0.1.41 capped an attack to your circuit width and stopped the pipe reading as saturated, so tenants suffered with nothing naming the cause.
Notes
- Saves work in both directions with v0.1.41. Nothing in the save format changed.
- Multiplayer works across v0.1.41 and v0.1.42. The world update format is unchanged.
Fixed
Quests
- Loading a save no longer pays quest rewards again. Every reload re-completed the milestones you had already cleared and granted their cash a second time. Hard mode was hit hardest.
Codex
- Gear your scenario starts you with is in the codex. Equipment a scenario pre-builds, like the garage internet box, never unlocked its entry, because nothing was ever delivered or unboxed to notice.
Security
- An attack cannot arrive faster than your internet line. A 12 Gbps flood on a 1 Gbps line was delivered in full, and your firewall reported absorbing bandwidth that could not exist.
- The attack readout works at garage scale. It counted whole gigabits, so anything a garage line could carry rounded to zero and read as no attack at all.
- A small site can raise a DDoS alert. The alert waited for a fixed amount of traffic to leak, which a garage can never reach once a flood is capped at its line.
- Hard mode's garage is defensible. Its scrub requirement asked for more than the gateway and its add-ons can absorb, because the flood was never bounded by the line it arrived on.
Changed
Security
- A flood you absorb still costs you. It filled your line on the way in, so scrubbing it cannot hand the bandwidth back. Your servers are protected, your pipe is not.
- A fifth of your line always gets through. An attack can take at most 80% of a circuit, at every tier, so a flood is sustained pressure rather than an instant blackout.
Notes
- Load once to heal an over-packed machine. A save from v0.1.39 can hold a server carrying more memory than it physically has. Loading moves the excess onto a machine that fits.
- Nothing is resized to make it fit. A customer who bought 21 GB keeps 21 GB. If no machine in your fleet can take it, it stays where it is and the log says so.
- Load once to fill in the codex. Hardware your scenario started you with unlocks on load. Add-only, so nothing you have already unlocked is lost.
- Quest cash you were paid twice stays paid. There is no way to tell a duplicated reward from an earned one after the fact, so balances are left alone. No further duplicates.
- Saves work in both directions with v0.1.40. Nothing in the save format changed.
- Multiplayer needs everyone on v0.1.41. The world update format changed, so a player on an older build cannot join you.
- API: `active_ddos_gbps` is now `active_ddos_mbps`, in megabits. Renamed rather than rescaled so nothing keeps reading it and gets an answer a thousand times off. The Prometheus metric keeps its name and unit.
Fixed
Customers
- A resized machine moves to a host that fits it. It used to grow where it stood, leaving a 21 GB tenant on a 16 GB box at 140% memory.
- The customer page updates the moment you approve. The contracted size and count went on showing the old numbers until you saved and reloaded. Auto-approve had no refresh at all.
- Auto-approve says when it cannot say yes. A request your fleet had no room for was left pending with no explanation. The reason is logged and the request stays there to act on.
- The thank-you reply makes sense for a resize. Approving "can we get bigger boxes" replied "0 more virtual machines should land soon".
Multiplayer
- A player in trouble no longer takes the host down. One guest whose connection stalled could freeze the host's own game and hand every player errors until they quit to the title.
- You are not dropped while you are still loading in. The host counted a joining player as silent while that player was still waiting on the host's own reply, then disconnected them.
- A lobby whose host has gone no longer looks open. Joining one used to hang for twelve seconds and fail; it now reads as not started, so you wait in the room instead.
- Rejoining a lobby you used to host no longer fails instantly. Your old world stayed advertised after you left it, so the game tried to connect you to yourself.
World
- A carrier line is never cut when it is your only one. Hard mode cut it on day three to test redundancy the garage cannot buy. It waits for a second line now.
Notes
- Saves work in both directions with v0.1.39. Nothing in the save format changed.
- Multiplayer works across v0.1.39 and v0.1.40. The world update format is unchanged.
Added
Scenarios
- Garage to Glory: Hard is playable. It sits in the New Run scenario list beside Arm Race. Half the starting cash, half the leads, and steeper targets on every rung.
Customers
- Eighteen new customers. A distro mirror, a status page, a home media server, a build farm, a podcast network, a global broadcaster and more, spread from the garage to the data centre.
- Every service is sold to more than one kind of customer. Kubernetes and CDN each had exactly one buyer, at one size. Both now have four, from a small startup up to a whale.
- Customers can want dedicated CPU. Six now contract for it, including trading firms, banks and game studios. Before, one customer type asked, and they were always called something-Scale.
- The garage roster varies by shape, not just by name. New customers there each lean on a different resource: one eats bandwidth, one eats CPU, one wants far more memory than its size suggests.
Multiplayer
- A dropped player is told why. If the host drops you for falling behind or for going quiet, the game says which, instead of an unexplained "connection lost".
Changed
World
- Attacks and incidents arrive far more often. The world used to roll for trouble once every twelve hours of play. It now rolls every twenty-four minutes.
- The internet notices you as you grow. Unsolicited attacks now scale with how many customers you host, your reputation and the size of your line, instead of being flat.
- The garage stays calm. It is where you learn, so ambient trouble is rare there. One attack is scheduled early, so you meet the mechanic with Mira on hand.
Scenarios
- Hard mode is harder at every step. Every advance target and the win condition sit above the standard campaign's, and reaching the data centre takes about two and a half times as long.
Customers
- Services unlock in order at the data centre. Managed databases arrive first, then load balancers, functions, CDN and finally Kubernetes, each introduced by its cheapest customer rather than by a whale.
- A customer no longer brings a service you have not reached. A regional shop offered at the basement used to bundle a managed database, which is a data centre unlock.
Fixed
Ops console
- The alert strip no longer sits there saying nothing. It used to read "ALL CLEAR" permanently, with no way to close it, and held an empty band at the bottom of the console.
Scenarios
- Hard mode has customers. It shipped with no customer types at all, so nobody ever arrived and its customer targets could never be met. The scenario could not be won.
- Hard mode is no longer easier than the standard campaign. It asked for twenty customers to leave the garage against the campaign's thirty, and it finished at fifty against a hundred.
Customers
- The customer codex reads in your language. Card text was shipped in English regardless of the language you picked, so every translation of it went unused.
- Buy panel descriptions read in your language. Same cause as the codex: hardware descriptions were sent as English text rather than looked up.
- The Enterprise Pilot card is the right one. Two cards claimed that customer and the wrong one won, describing a Platinum bank back office instead of the Gold pilot you actually sign.
Multiplayer
- Friends stay in your session. Guests were dropped roughly 20 to 40 seconds after joining, every time. A slow moment now costs a moment of catch-up, not the session.
- Joining lands you in a live world. Guests used to sit on the loading screen waiting for a map name that never arrived, then get dropped by the host.
- The ping readout is real. A host on its own machine showed 150 ms or more. It was measuring the game's own frame timing, not the connection.
- A session stops stuttering when someone acts. Every purchase, cable and pickup sent the whole world to every player. It now sends only what actually changed.
World
- Cables draw again when you load a save. v0.1.38 could leave a whole room's cables unrendered until you laid or pulled one to shake them loose.
- Machines appear as soon as the room loads. They arrived correctly in v0.1.38 but trickled in over several seconds while the racks filled.
- Attacks scale with your size. Once one customer drew fire, every other customer was skipped for that round, so a hundred-tenant data centre was attacked no more often than a garage.
Notes
- Saves work in both directions with v0.1.38. Nothing in the save format changed.
- Existing saves pick up the new customer contracts on load. Tenants whose type now wants dedicated CPU are moved onto it when you load, rather than sitting in breach.
- Existing saves pick up the new attack pacing on load. A world saved before this release becomes as eventful as a new one. Nothing else about it changes.
- Multiplayer needs everyone on v0.1.39. The world update format changed, so a player on an older build cannot join you.
- Single player plays the same. These are connection changes. A solo game is unchanged.
Changed
- Rack side holes and roof cutouts hold a limited number of cables. Both took any number through one opening. A full one now refuses and names itself, so run that cable through another.
Fixed
Incidents
- A failed server now names every customer it took down. Customers running storage, CDN, load balancers or functions read as unaffected, so the alert said nobody was hit and no reputation was lost.
- A crowded server with no virtual machines now raises an alert. It throttled everyone on the box silently, and could never raise one again.
- Run-rate at risk counts what an outage could cost you. It counted what stricken customers still earned, so it fell as the outage spread and hit zero at total failure.
- A total outage no longer ranks below a partial one. A fully down customer worth $4,500 an hour was graded the least severe band in the game, because severity keys on that same figure.
Customers
- Kubernetes customers on redundant plans can grow again. Their clusters read as half built forever, so growth requests were refused before they were ever made.
- A storage customer's growth request no longer says virtual machines. The card read "+5 VMs" for a customer running none, while their own message correctly said storage.
- Growth ceilings show on every customer, in their own units. A storage customer read "grows to 12 VMs" while owning none, and prospect cards hid the line entirely.
Money
- A spend cap reads as the amount you set. A ten dollar cap was shown as ten million dollars when a customer hit it.
- Gateway add-ons quote the price you are charged. The console used the wrong month length and ignored difficulty, so on hard it showed half the real cost.
- Hardware stops depreciating once it is written off. A $12,000 server charged $333 a month forever, so it had cost $24,000 on paper by its sixth year.
- CDN quotes match the CDN bill. Compression cut the bill but not the quote, so a CDN customer was quoted about a quarter more than they were charged.
- Kubernetes quotes follow your pod density setting. The quote assumed the default, so a sparse cluster was under-quoted by 39% and a dense one over-quoted by 20%.
- Functions quotes include reserved capacity. Gold and Platinum tiers reserve warm capacity and are billed for it, but were quoted as if they were not, 10% and 20% low.
- Content delivery pays for the bandwidth it uses. Only cache misses were charged upstream transit, so a well cached site looked almost free to run. CDN margins are materially lower.
- Security appliances appear in your running costs. Their monthly fees and licences were charged but missing from the burn rate and runway, by up to $22,000 a month on the largest.
- Unattributed costs can no longer be negative. Upstream bandwidth was counted against customers but left out of the total, so the leftover figure went below zero for anyone moving real traffic.
- Bandwidth is a real line in your running costs. Finance showed egress as a trailing average, so your burn and your customer costs disagreed by exactly that amount.
Performance
- Cables stop being redrawn about once a second while you play. A background refresh was undoing the cable work from the last two releases, so the stutter came back.
- Crossing a room boundary no longer rebuilds every cable. Walking past the point where distant racks load in was enough to redraw the whole room's cabling.
- The engine stops building a copy of the world nobody reads. It did this every second whether or not anything was connected to the local data feed.
- Loading a save no longer misdraws cables for a moment. Removed cables lingered, and a cable waiting on its machine was redrawn a beat late.
- A quiet world stops repainting every machine. Each update redrew the whole fleet instead of nothing, the opposite of what was intended.
- Standing still is quieter again. Server lights, heat glow and rack labels were recalculated four times a second whether or not anything changed.
Services
- An overloaded control plane moves to a machine that can hold it. It stayed on the machine it had outgrown whatever you bought, so provisioning stayed frozen until you cordoned the host.
- The overload message no longer tells you to add replicas. Each replica carries the same load. It now says to rack a bigger machine, and the control plane moves there itself.
- You can move a control plane off a machine. The platform row in a server's Workloads tab had no action, so the only way was to drain the whole machine.
Cabling
- A cable passing straight through a rack stops diving into its manager. It goes in one side panel and out the other, never touching the manager, but a full vertical run was drawn anyway.
- Cables through a rack opening no longer overlap each other. Every cable crossing a side hole or roof cutout ran through the exact same point, so a bundle drew as one tube clipping the panel.
- A full cable finger says when it moves your anchor. Past the per-band limit the anchor slid to the whole strip silently, so the cable ran somewhere you had not put it.
Operations
- Memory and storage capacity weight by machine size. The fleet bars averaged percentages instead of weighting them, so on mixed hardware the figure matched neither the customer panels nor the API.
- Alarms no longer move the page under your cursor. The alarm strip resized the whole console as incidents opened, closed and were dismissed.
- Network map rings and load bars update again. Saturation and load readings froze until you next changed the cabling.
- Renaming a device updates it on the network map. The map kept the old name until you next laid or pulled a cable.
- Charts stop streaming data for pages you are not looking at. Two ran from the moment the game loaded, whether or not you ever opened Operations.
- Board tabs show which one is open. Clicking a second leaderboard left both looking unselected.
Multiplayer
- A machine somebody else is carrying stays in their hands. Everyone saw it in their own, and their pick-up key claimed they were already holding something until the carrier let go.
World
- Loading a save fills the racks. Racks could come back empty and stay empty until you racked, unracked or plugged something, which was the only thing that made the hardware appear.
- An unpowered rack is silent. Dark racks hummed, louder than running ones, with their fans visibly still.
- Powering a rack on changes what you hear. The ambient noise did not react to a rack coming up at all.
- Walking through a door draws the whole room. Only a handful of machines were given their lights and cables, leaving the rest as bare chassis.
- Adding or removing a rack in a row redraws that row's cables. They kept their old paths until you laid or pulled a cable.
- Server lights follow the rack view again. Pinning or unpinning a rack left the lights on the previous brightness profile.
- Heat glow appears on switches and appliances. Devices without indicator lights never showed a heat halo, or cleared one, until you moved.
- Network traffic readings are no longer slightly low. Incoming traffic was rounded down every time it was sampled, understating small workloads by up to a quarter.
Notes
- Saves work in both directions with v0.1.37. Nothing in the save format changed.
- Multiplayer needs everyone on v0.1.38. Moving a control plane off a host is a new instruction a v0.1.37 host does not understand. The world update format itself did not change.
- A stuck control plane frees itself on load. If a machine big enough is already racked, the control plane moves to it the first time you load, and provisioning unfreezes.
- Older hardware stops depreciating on load. Anything already past its write-off period leaves your monthly costs the next time you load, so running costs fall.
- The local API pauses publishing when nothing is reading it. `meta.age_ms` and `uptime_mirror_age_seconds` read higher on the first request after an idle minute, then settle to the usual cadence.
- Cost totals in the local API now include upstream transit and appliance fees. `total_cost_dollars` rises to match, and `unattributed_cost_dollars` can no longer be negative.
- `CostRatesView` gained `transit_egress_dollars`. It defaults to zero for older clients, but `total_dollars` now includes it, so the monthly burn reads higher. It was under-reporting before.
- `revenue_at_risk_per_hour_dollars` changed meaning. It reports what an outage could cost you rather than what the stricken customers were still earning, so it no longer falls as one spreads.
- CDN quote lines report compressed kilobytes. The `kb_each` factor on both CDN egress lines is now the post-compression figure, matching what is billed.
Fixed
Cabling
- Cables draw their real paths again after loading a save. They were routed while the room was still filling in and never redrawn, so unplugging one was the only way to fix the rest.
- A cable whose machine had not loaded yet now redraws once it does. It could sit on a stale path for the rest of the session instead of resolving when the rack arrived.
Customers
- A customer asking for more every minute is fixed. They asked for more machines, which could never relieve the load that made them ask, so they asked again a minute later.
- A customer whose machines are too small now asks for bigger ones. More machines of the same size never helped them, and with auto approve on their fleet grew without limit.
- Customers stop growing once they reach the size their business tops out at. That ceiling was ignored whenever the request came from a struggling customer rather than a routine one.
- Kubernetes, storage and CDN customers reach their own growth ceilings. Every limit was counted in virtual machines, so a customer who runs none was never capped by any of them.
- A customer running several products asks about the one that is struggling. Requests were denominated in virtual machines whenever they held any, whatever was actually under pressure.
- Approving a resize no longer moves the machines. Every one was shut down and rebuilt, so they came back on different servers and their racks reshuffled for no reason you asked for.
- Approving a database resize no longer wipes the customer's machines. It tore down the virtual machines they run alongside it and left the database at the size it already was.
Notes
- Multiplayer works with v0.1.36. The wire format did not change this release.
- Saves work in both directions with v0.1.36. Nothing in the save format changed.
- Load once to fix. Any save showing wrong cable paths draws them correctly on the next load. Nothing moves, and no cable needs unplugging.
- Runaway contracts shrink on load. A customer grown past anything they could have asked for is cut back, and their surplus machines are released. Revenue from those machines goes with them.
Added
- The game now says when its engine module fails to load. It showed menus in key names with saves refusing to open, which reads as three faults rather than one file.
Fixed
Performance
- Walking through a full datacenter no longer stutters every few metres. Cables were being rebuilt whenever you moved, including ones too far away to be drawn at all.
- The world stops redrawing every machine four times a second. Only the machines that actually changed are repainted now, so a fleet of hundreds costs what a handful used to.
- Standing still is quiet. Server lights, heat glow and rack labels were recalculated ten times a second whether or not anything had moved.
- The regular world refresh is lighter. It resent everything it had already sent you, several times a second, and now sends only what changed.
- Racks stop hitching when you walk past them. Every step re-checked all your equipment instead of the few pieces coming into view.
Multiplayer
- Opening a server console no longer drops you from a co-op session. Guests froze while it loaded, and a host that was busy ended the connection instead of just taking a moment.
- Installing equipment in a rack no longer hitches for a guest. The rack view waited on the host to refresh, so every install paused for a round trip.
Operations
- Building a second availability zone no longer hides it from Operations. The pages stayed pinned to your first zone for the rest of the session, so its racks read as missing.
Customers
- Customers stop briefly showing an SLA breach that clears itself. Each tenant was judged against a stale idea of its own normal, so one whose traffic shifted read as failing.
- A warning you are shown now stays up long enough to read. Alarms fired and cleared in under a second, and vanished the instant a customer looked healthy again.
- A customer in trouble on and off is now reported. Warnings needed an unbroken run of bad readings, so a customer failing most of the time but not constantly never raised one.
- Latency warnings are judged against what you promised the customer. They compared a customer to their own quiet average, so a fast tenant getting excellent service was flagged for a small wobble.
Notes
- Multiplayer needs everyone on v0.1.36. The world update format changed, so a v0.1.35 player joining a v0.1.36 host would lose parts of their view.
- Saves work in both directions with v0.1.35. Nothing in the save format changed.
- Nothing to heal. These fixes changed how the game draws and how updates are sent, never what a save holds, so no world needs repairing on load.
Fixed
Performance
- Crowded datacenters no longer stutter. The hitch that arrived several times a second and got worse the more customers and machines you ran is gone.
- Big sites leave room to spare. A site with hundreds of customers and thousands of machines now uses about a seventh of each simulation step's budget, instead of nearly all of it.
- Loading a large save no longer freezes. The first moments after a load took over a second per step, and now take about a tenth of that.
Networking
- A server patched through a patch panel counts as wired. It reported no uplink, carried no traffic on its switch port and earned nothing, however many panels sat between it and the switch.
- A cross-connected server reads the speed it actually gets. The run negotiates the slower of the network card and the far switch port, instead of falling back to the card's own rating.
Customers
- Growth requests you cannot approve no longer appear. A database already running a primary and a replica had nowhere to put more, so refusing the ask only brought it back.
- Object storage customers stop dropping to unprovisioned for a few seconds. A bucket that had outgrown what your fleet could hold was torn down instead of kept at the size it had.
- Growing buckets stay on the hosts they are already on. Storage was re-placed across the fleet every hour as a bucket grew, so shards moved between machines for no reason.
Racks
- The install prompt clears once the rack is down. The reminder to install a rack stayed on screen after you placed one, and only went when you looked at something else.
- You pick the crate you are looking at, not the bottom of the pile. Stacked boxes were judged on floor position alone, so the same one won however high you aimed.
Controls
- The mouse is released when you switch away from the game. Pressing Windows or clicking another app freed the cursor for a frame and then took it straight back.
Multiplayer
- The friends list opens in the middle of the screen. It sat off the top-left corner with most of it cut off, and the menu behind it was left undimmed.
Notes
- Multiplayer works with v0.1.34. The wire format did not change this release.
- Saves work in both directions with v0.1.34. Nothing in the save format changed.
- Host uplinks now report panel-patched links. A server cross-connected through a patch panel returned an empty uplink list over the API. It returns the real link and its switch port now.
Fixed
Ops console
- Rack space counts everything racked, not just servers. Switches, firewalls, gateways, patch panels and carrier panels take their U now, so Capacity stops reporting a rack emptier than it is.
- Power readouts show every cage, not just your first zone. Anything in a second availability zone was filtered out of the Operations lenses with no way to widen the view.
- Tables sort by value, not by text. Speeds, memory, storage and uptime were ordered as strings, so 20.2 Mbps ranked above 110 Mbps and 100% below 50%.
- Tab keeps you on the sub-page you were on. Switching to engineer view sent every section except Operations back to its default tab.
- The prospects count takes you to prospects. Clicking it opened Business and left you wherever you already were, including inside a tenant's detail.
- Alerts from Home open the list, not the last one you read. Clicking a new alert switched section and then showed whichever incident you had open before.
- The customers tile reads Customers. It counts everyone signed, including tenants still coming up, which is a different number from the wall dashboard's active count.
Racks
- Diagnose counts network ports, not power inlets. A device with two power supplies reported two ports down on its own, so a wired wall rack could read as entirely offline.
Notifications
- Numbers in notifications are rounded. Percentages and amounts printed at full precision, so an SLA breach could arrive reading 99.94999999999999%.
Notes
- Multiplayer needs every player on the same version. The wire format changed this release.
- Saves work in both directions with v0.1.33. Nothing in the save format changed.
- API: racks gain `used_u`. U slots consumed in that rack, counting every occupant rather than hosts alone. No existing field changed meaning.
Added
Joining a multiplayer session
- There is a Join a Friend button on the title screen. The game could host a session and offered no way at all to join one. Every join had to be started from Steam itself, from a friend's right-click menu or an invite, so a player who did not know that reasonably concluded only the host could open a session. The title screen now lists the friends who are playing, says which of them are in a session you can join, and drops you into the one you pick. Friends playing on their own are listed too, greyed, so you can tell "nobody is playing" apart from "nobody has started a session yet".
- Accepting an invite while you are already playing now asks you, and then takes you there. Clicking Join Game on a friend while you were mid-run did nothing whatsoever if they were still setting up their session, and put a note in your comms feed telling you to go and quit to the title yourself if their world was already running. Either way you had to leave the game and come back in by hand. You now get asked whether to leave and join, and if you say yes your run is autosaved and closed for you and you land in their session. Saying no leaves you exactly where you were.
Changed
Ageing hardware
- An ageing server no longer loses memory, cores or disk space. Wear used to shrink all four of a machine's resources at once. A well used server could be down to 60% of the memory, cores, storage and disk speed it was sold with, and it got there in about four hours of play at normal speed. A rack you had packed to a comfortable 90% would quietly tip into being oversubscribed with you having done nothing at all, and the customers on it started suffering for it. Wear now costs disk speed only, and it bottoms out at 10% down rather than 40%. The memory, cores and storage you paid for stay yours for the life of the machine, and nothing is ever taken back from work that is already running.
- Old hardware still costs you, on the power bill. The other half of ageing is unchanged: a worn machine draws up to a quarter more watts for the same work. That bites hardest where power is dearest, so it is a mild drag in the garage or the basement and a real one once you are paying a colocation's rate. It is a slow squeeze on your margin rather than a sudden loss of capacity, and it is the figure to watch when you are deciding whether a machine still earns its rack space.
- A machine's disk speed reading shows what its disks can actually do. The console showed the number printed on the box. It now shows the real figure after wear, so a slowing disk is visible, instead of reading comfortable while new storage was quietly turned away against a lower limit. The condition line names storage rather than talking about capacity in general, and the processor rows no longer apply a wear discount that no longer exists.
Running a multiplayer session
- Quitting to the title as the host now asks first. Leaving ends the session for everyone in it: their world freezes, and after about a quarter of a minute of failed reconnects they are put back on their own title screen. Nothing said so, and it was two clicks from anywhere. The host now has to press it twice, and the second press says what it will do. Players who joined still leave in one press, because they are only leaving themselves.
- Joined players are told the host saves the world, rather than finding the Save button gone. The button was hidden for anyone who joined, which answered no question and moved every button under it. It is now visible, disabled, and says who does the saving.
- The multiplayer settings are reachable if you are in a session. Accent colour, topper and screen glyph sat behind the same test-build gate as the rest of multiplayer. A player who arrived by accepting a Steam invite therefore had a session, a character and a colour, and nowhere to change any of it. The tab now appears whenever you are actually in a shared world.
- A multiplayer save that comes back up single-player says so. Loading one without Steam running, or on a build where multiplayer is not switched on, quietly resumes it solo. The world loads correctly, it just is not joinable, and nothing told you: you carried on believing you were hosting and could not work out why nobody could get in. It now says so when the world loads.
Fixed
Services
- Powering on a new server no longer drags every control plane onto it. If your hosts all have a role or a tier assigned, the one box you just racked was the only unassigned machine in the building, and that was enough to make it the preferred home for every control plane you run. It had no cable in it yet, so CDN, Kubernetes and the rest all went unreachable at once and stopped scheduling anything until you wired it. A host now has to be reachable before it can take a control plane at all. If the only iron left is reserved for a tenant, a working plane on that beats a dead one on the new box, and it will move across once you cable it.
Cabling
- Running an AOC from a faster port to a slower one keeps giving you an AOC. Starting at a QSFP port and terminating on SFP handed back a DAC. The list you pick from is built off whichever port you click first, the final list is built off the slower of the two, so a 100G AOC was not on the final list and the game quietly dropped to the cheapest thing there, which is always DAC. It now stays in the family you picked and just comes down a generation, so a 100G AOC becomes a 25G AOC. Starting at the slow end was always fine and still is, the two directions now agree. Same for fibre: an OM4 pick lands on the pair's OM5 rung instead of falling to copper.
- Fibre between an SFP port and a QSFP port draws both of its strands again. An LC duplex lead is a pair of strands, and it was being drawn as one plain tube whenever either end of the run sat in a QSFP port. That flattened the SFP end too, which really does have two ferrules in it, so a fibre lead sat there looking like an AOC. Both ends now show what is actually in them: the pair runs as a pair and merges into a single boot at the QSFP end, the way it already does going into a fibre patch panel. A run between two QSFP ports is a single ribbon and still draws as one tube.
Multiplayer
- A player who drops out no longer stands in your building for the rest of the session. Someone who quit tidily did disappear. Someone whose game crashed, or whose connection died without closing properly, did not: the session kept believing they were still there. Their character stood frozen where it last was, their name stayed on the roster with a ping beside it, and anything they were carrying stayed claimed by them, so nobody else could pick it up. The session now notices a player who has gone quiet and removes them, and their character is also checked against the list of who is genuinely connected, so it goes even if the first check misses it.
- A player who leaves mid-cable no longer leaves the cable hanging. The half-finished run they were dragging was drawn separately from their character, so removing them left the cable floating in the room until the session ended.
- The connection panel and the ping readout fill in properly. Both were blank for the first few seconds after joining, and the panel in the pause menu then showed whatever had been true at the instant you opened it and never updated while you looked at it. Opening it too early meant the whole section was missing, and it stayed missing for as long as the menu was open, which read as the feature not existing. The panel now updates while it is open, and both it and the roster card say they are connecting rather than showing nothing at all.
- A refused join tells you why it was refused. Every reason came out as "couldn't start the simulation engine", which names the wrong thing entirely and gives you nothing to do about it. You are now told when you and the host are on different versions, when the session is full, when the host is running a single-player scenario, and when the host has not started the world yet.
- Waiting to join shows that it is still trying. The wait was one unchanging line, so a session that was going to work looked exactly like one that never would. It now counts up, and after a minute and a half it says the host may have gone and suggests leaving and trying again.
Notes
Your older machines get their memory and cores back the moment you load. A save written before this release records the wear setting under its old meaning, where it applied to everything a machine had. It is corrected on load so that it applies to disk speed alone. Expect available memory and cores on your older servers to jump back up to what you originally bought, and their storage speed to be the only thing still down. Nothing moved, nothing was bought, and there is no downtime: capacity that was being held back is simply being reported honestly again.
If a rack had tipped into being oversubscribed purely because the machines in it had aged, that clears itself on loading, and the customers on it should recover without you doing anything.
Saves written by this version cannot be opened by v0.1.32, so keep an older file if you intend to go back.
Multiplayer sessions need every player on the same version, as with v0.1.32.
If you read the API, a machine now tells you how much memory and disk it has. `physical_mem_mb` and `physical_ssd_gb` sit beside the `physical_vcpu` that was already there. Before this, processors had a headline figure and memory and disk did not, so anyone reading the API had to work a machine's total memory back out of its free memory and its percentage used. That no longer gives a wrong answer, but it was never something you should have had to calculate. Both figures are fixed for the life of the machine.
Two fields change meaning. A machine's `iops_capacity` used to report the figure on the box. It now reports what that machine's disks can actually sustain today, after wear, which is the same number the game itself places storage against. Compare `iops_actual` to it as before, but do not treat it as a fixed property of the model any more, because it falls slowly as the machine ages. For the same reason `free_ssd_iops` is the one free figure still measured against a worn ceiling: free memory, free processor and free disk space are all against the nameplate now. The `wear_factor` and `capacity_wear_pct` fields beside it are unchanged in name and shape, and are now storage figures alone rather than a discount on everything the machine has.
A cable's `duplex` is the second. It used to be switched off whenever either end of the run sat in a QSFP port, so an SFP to QSFP fibre lead reported as though it were not a duplex lead at all. It now reports only whether the cable itself is duplex, and a new `qsfp_end` beside it says which end sits in a QSFP port: 0 for neither, 1 for the first end, 2 for the second, 3 for both. If you were reading `duplex` to decide how to draw a run, read both fields now.
Added
Languages
- Five more languages, all experimental. Czech, Danish, Polish, Spanish and Brazilian Portuguese join German and French. Pick one in Settings. Coverage is the same as the other two: shop, ops console, incidents, customer cards, quests and the loading screen, with the engineer wording behind Tab written separately rather than copied from the plain wording.
- Spanish is written for Spain, Portuguese for Brazil. Both are the variety the whole translation was done in, rather than a neutral blend that reads slightly wrong everywhere.
Patch panels
- Patch panels are on sale, under cable management. They have been in the game's hardware list for a long time, but no part of the shop ever listed them, so there was no way to buy one. A 24 port RJ45 panel now sits beside the trays and hooks.
- A patch panel takes a cable. Its sockets were built to accept nothing at all, so a panel that did reach your rack refused every lead you tried to run into it. It now takes Cat6A and Cat8 leads and turns away fibre, like any other copper socket.
- A 24 port panel gives you 24 circuits. It used to create half that: twelve usable joins on a panel labelled twenty four.
- You choose which side of a coupler a cable lands on. Every coupler has a front jack for a patch lead and a rear termination for a structured run. Both are aimed at from the front of the rack, so you never walk round the back: look at a coupler and you get two targets, the rear one ringed in amber. Before this, the game picked the side for you based on where the other end of the cable happened to be, which meant a switch one rack unit above could only ever reach the front.
- A run into the back of a panel goes round the back. It leaves the cable manager heading straight into the depth of the rack and arrives at the panel from behind, instead of cutting sideways across the face of the rack and through the manager arms.
- A panel is a join, not a device. It has no power and no lights of its own. A cable into a coupler with nothing on the other side shows no link at either end, because the run ends inside the panel. Complete the join and both ends come up together.
- Hovering a cable that runs through a panel tells you both hops. It names the coupler, which of its two faces you are looking at, and the device on the far side of the join, so you do not lose track of what is actually on the other end.
Changed
Your network can now be the bottleneck
- A switch that is full drops traffic. Trunk and backplane congestion raised an alarm, coloured the map and cost you nothing: your servers kept serving as though the switch were empty. It only ever bit function calls. Congestion now costs requests for ordinary servers and for Kubernetes too, worked out per server from the path that server is actually using. A switch a tenth over its limit drops about a tenth of what crosses it.
- A saturated link and a saturated router cost you as well. Same story in both cases: a warning with nothing behind it. The router uses the same figure its own alarm trips on, so the light and the consequence finally agree.
- Latency climbs as a link fills. Every hop cost the same fixed amount whether it was idle or at ninety-nine percent, so there was no warning before a link fell over. A hop now runs at about 0.13 ms while there is room, 0.9 ms at eighty percent, 2.9 ms at ninety, and is capped so a badly congested path degrades rather than dying outright.
- A faster link is now faster even when nothing is congested. Upgrading a 1G run to 10G previously changed your latency by exactly zero unless you were already over the limit. The time it takes to put a packet on the wire is part of the sum now. On a quiet link that is a hundredth of a millisecond a hop, so you will not see it on the dial, but it is no longer nothing, and it grows into a real difference as the link fills.
- "Your network gear is full" is now its own reason. Congestion was being reported as "no route to their servers", which is what you get when a cable is cut. Two opposite problems with opposite fixes, reading identically on the customer's card.
- Traffic coming in uses your network card, not just traffic going out. A server had a budget for what it sent and no limit at all on what it received, so any number of machines could pour into one box and it would swallow all of it. Both directions are metered now.
- A connection swamped from the outside now costs you. Inbound saturation raised the alarm and dropped nothing, so a flood could fill your line while every customer stayed at a hundred percent.
Money
- A load balancer with no proxies running earns nothing. It billed every request at the full rate with nothing placed behind it at all, including for a customer who had bought nothing else. It now bills what it actually serves, and a load balancer with a live proxy is unaffected.
- A CDN with no points of presence running earns nothing. The cached share of its traffic, which is most of it, was billed unconditionally and consumed no hardware. Now it is served by the machines you placed, and shows up in that customer's bandwidth, which read zero before no matter how much they were pushing.
- Storage replication costs what it should. Writing into a bucket kept three copies was costing less bandwidth per machine than keeping one, because the write was being divided across the copies instead of sent to each. Raising durability now costs what raising durability costs. Your bill is unchanged.
Fixed
Customers asking to grow
- Every kind of customer can ask for more now, not just the ones running virtual machines. A customer who bought only storage, only a cluster, only a CDN, only a database, only functions or only a load balancer never asked you for anything, ever, for the whole life of the contract. They were quietly shut out of growing at all. They now ask in the units they actually buy: a cluster asks for workers, a bucket and a CDN ask for space, a database asks for another copy, and functions and load balancers ask because they are being hit harder. Approving applies to the thing they asked about.
- A customer who does not run virtual machines can no longer be sold something your fleet cannot hold. New customers get their ask trimmed to what you can actually serve, plus a little headroom. That trimming only ever looked at virtual machines, so an offer for a forty node cluster, a huge bucket or a content delivery contract with an enormous origin arrived at full size no matter how small your site was, could always be signed, and cost you nothing to turn down. Those offers are now sized against your fleet like every other one, and the signing bonus scales with the trimmed size.
- The capacity verdict on a growth request tells the truth for every service. The panel that says whether you can serve an ask worked it out from the customer's virtual machines. A customer who has none, a cluster or storage tenant, came out as needing nothing at all, so a request of any size showed as comfortable. You approved it and nothing appeared.
- A customer whose contract cannot grow any further says so. Approving used to report success and change nothing in a couple of cases. If the contract has no room left, the approval now tells you instead of thanking you for capacity that was never going to appear.
- Approving a growth request no longer doubles a replicated customer's fleet. The check that decides how far a customer's target can move was counting copies rather than machines, and a replicated or multi-zone customer runs two copies of every machine, so approving anything at all dragged their target up to the copy count. It compounded on every approval. One player watched it reach 112. Loading a save pulls an inflated target back down to what it should have been.
- Replicated customers stop asking at the right size, not half of it. The same miscount ran the other way on the ceiling that decides when a customer is satisfied, so a replicated customer went quiet at half the fleet it was meant to grow to.
Functions
- A machine running functions is no longer reported as empty. Function containers were tracked separately from everything else on the floor, so a server packed with them showed no load in the capacity view, no workloads in the network view, and its status light stayed on idle. The customer running them was not listed as using that machine either, which fed the diagnosis panel and the noisy neighbour warnings. Containers are now counted like every other workload.
- A functions customer is a real target. Because their containers were not counted, an attacker sizing up a functions-only customer found nothing there and always picked the smallest possible attack.
- The room left for functions counts every kind of work, not just virtual machines. The figure behind "this customer's function pool is full" was the fleet total minus what virtual machines had taken, and nothing else. A site packed with cluster workers, load balancer proxies, storage or CDN content looked completely empty to functions, so a customer could be told they had plenty of room with nowhere left to run.
- A functions customer with nowhere to run is no longer reported as served. Whether their contract counted as delivered was decided by asking if any machine anywhere on the site was switched on. Not their machines, not the ones they are allowed on. So a functions customer whose pool was completely full, or who was walled into a private segment with nothing left in it, read as perfectly served while every one of their requests queued and timed out. It now asks whether that customer can actually be served, which is the same question the warning on their card already asked.
Your fleet at a glance
- The fleet utilisation graph shows your fleet. It was showing the memory held by function containers, divided by the fleet minus what virtual machines had taken. If you had no functions customer, and most campaigns do not, it sat flat at zero however full your site was. If you did have one, it plotted their containers as though nothing else existed. It now reads the same load figures as the capacity view and the machine list, so the graph and the panels agree.
- Used rack space counts your gateways and demarcation boxes. The Capacity console's rack U figure added up servers, switches, patch panels and security appliances, and stopped there. Anything else you had bolted in occupied real slots you could see, and did not appear in the total, so the console told you that you had more room left than the rack did. Reported against an earlier build: switches and appliances had already been picked up by then, gateways had not.
Diagnosing a service that will not start
- "Every server is full" and "add a server this customer is allowed on" are told apart properly. When a customer confined to their own machines had nothing running yet, the game could not work out which of the two it was and defaulted to telling you the fleet was full. You bought a server, it landed outside their private segment because it had to, the warning did not move, and nothing you did helped. It now works out what one unit of their service would need even when none is running, so it names the right fix the first time. This affected clusters, CDNs, load balancers, storage and functions.
Incidents
- Two faults at once no longer blame each other's customers. A cut cable in one rack and a dead switch in another each reported everyone affected by both, so the money at risk was double-counted on each and the post-mortem named tenants who never touched the thing that broke. Each fault now reports only what is actually stranded behind it.
- A customer with a surviving copy is not having an existential outage. Any infrastructure fault touching one replicated or multi-zone customer was reported at the top severity, whether or not their other copy was serving perfectly. It now checks whether they actually lost everything.
- Diagnosis checks the cable is on their path. With two cables cut in different racks, both scored identically for every cut-off customer, so the ranking told you nothing. A cause now has to be on that customer's route to score for them.
Hardware failures
- Turning off the random failures now works on an existing save. The last release switched them off for new games and said loading a save would do the same. It only half did: the setting is stored twice, and only one copy was being cleared, so a sandbox save never lost them and any save got them back the moment you touched a difficulty or world slider. Both copies are cleared now. If you deliberately started a hard run, that still gets the failures it asked for.
Hardware you did not buy
- Setting a piece of gear down no longer leaves a second copy of it behind. Pulling something out of a rack stages a crate so you can put it straight back. Setting the gear on the floor instead ended the carry but left that crate sitting there, so you had the machine at your feet and an unopened box claiming the same machine. Opening the box handed you a second one, for free, and it survived saving and loading. Loading a save now clears any of these left over, and nothing you legitimately own is touched.
Notes
Existing saves load here with everything intact. Saves written by this version carry a little extra on growth requests, so if you go back to v0.1.31 afterwards, load one of your older files rather than the new one.
This release is harder. Congested network gear now costs you requests where it previously cost you nothing, so a site that was running at its limit and getting away with it will start showing failures. That is the intended behaviour and it is the mechanic the hardware ladder exists for, but if you have been running a switch permanently pegged, this is the update where you notice. Latency also climbs as links fill rather than staying flat, so a busy path will show worse response times before it shows failures.
Two products stop earning for nothing. A load balancer with no proxies placed, and a CDN with no points of presence placed, were both billing full rate while doing no work. If your income drops on loading, that is where it went. A load balancer or CDN with real hardware behind it bills exactly as before.
Machines running functions will look busier. Their containers were never counted against the machine holding them, so capacity and load readings on those servers were too low. Nothing moved and nothing was bought: you are seeing work that was always there.
Your utilisation graph will jump on loading, and the history behind it is wrong. The line was never measuring your fleet, so the minutes already recorded cannot be corrected: they will read low, usually zero, until they scroll off. From this release on it tracks the same figures the capacity view shows.
A functions customer may report a problem the moment you load, and a brand new one can now walk. If their pool has nothing left, or they are confined to a segment that is full, their contract now reads as not being served, where before it always read as served. Nothing about their situation changed, only whether the game admits it. Freeing up room on machines they are allowed on clears it.
The part to watch: a functions customer you have just signed, who never gets a single container running before their settling-in period ends, now leaves and takes the same doubled reputation hit any other customer would. Previously they stayed on the books forever, served nothing, and cost you nothing. Signing functions work onto a site with no headroom is a real risk now, the same way it always was for virtual machines. An established customer is not affected: this only applies while a new one is still coming up.
Loading an existing save clears the random hardware failures properly this time, including on a sandbox save and after you move a difficulty or world slider. The previous release claimed this and did not manage it.
Write traffic on replicated buckets goes up on loading, roughly in proportion to how many copies you keep. You will see it on the servers holding the bucket and the switches above them rather than on the customer's own figures. Nothing was bought and no bill changed, the write traffic was simply being counted wrongly.
Patch panels are new to the shop rather than changed, so nothing in your existing saves is touched by them. No save can contain one, because there was no way to buy one before this release.
Cable tidiness is still not part of this. It continues to report neatly routed cables as loose, and it is being reworked rather than patched around.
Multiplayer sessions need every player on the same version, as with v0.1.31.
If you read the API, this release renames fields. A run of numbers were named after virtual machines while actually counting every kind of workload, which meant anyone reading them got a wrong answer for a customer who does not run virtual machines. They now say what they count:
- On a customer: `vm_count` is `unit_count`, `vm_distinct_hosts` is `distinct_hosts`, `vm_max_on_host` is `max_units_on_host`, `stranded_vm_count` is `stranded_unit_count`.
- On a host: `stranded_vm_count` is `stranded_unit_count`. The separate `vm_count` on a host is removed: it counted only virtual machines and read zero for a machine full of cluster workers or storage. Use `unit_count`, which counts everything and was already there beside it.
- On a rack's customer impact: `total_vms` and `healthy_vms` are `total_units` and `healthy_units`.
- On capacity: `unplaceable_vm_count` is `unplaceable_unit_count`.
- On a growth request: `additional_vms` is `additional_units`, and a new `class_tag` says which service is being asked for. The amount is in that service's own unit, so it is a count of machines only when `class_tag` says virtual machines, and is gigabytes or requests per second otherwise. Read `class_tag` before interpreting the number.
- On the function pool: `vm_reserved_mem_mb` is `non_function_reserved_mem_mb` and `vm_reserved_millivcpu` is `non_function_reserved_millivcpu`. This one is a change of MEANING as well as name, so re-read it rather than remapping the field. It used to report what virtual machines had reserved; it now reports everything the fleet has committed to anything that is not a function, which is what actually stands between the function pool and the fleet total. `ceiling_mem_mb` and `ceiling_millivcpu` beside it change value for the same reason, without changing name.
These are the names the API reports, not what is stored in your save.
Current Release
Build 24764675
Uploaded Aug 17, 2026
Update already requested
Uploaders have been notified
A newer version is available but not yet uploaded
Help keep this updated
Login Required
You need to be logged in to request game updates. Would you like to go to the login page?
Request Update
Request an update for Uptime: A Cloud Provider Sim? This will notify uploaders that this game has an available update.
Request Submitted
Your update request has been submitted successfully! Uploaders will be notified.
Request Failed
Failed to submit update request:
System Requirements
How to Install
Uptime.exe to play
Troubleshooting tips
• Run Redist/_CommonRedist installers if game won't start
• Add folder to Windows Defender exclusions
• Run as administrator
Download
Direct link available
Needed when extracting (WinRAR / 7-Zip) — not a site login.
You May Also Like
View AllDownload Uptime: A Cloud Provider Sim for PC with a direct link or via torrent. Get the full version of Uptime: A Cloud Provider Sim for free. Uptime: A Cloud Provider Sim is a Indie released by RubyRack Games.