I Replaced My Cloud Development Tools with Local Alternatives for a Month. Here Is What Broke First

The idea appeared after a normal working evening went slightly wrong.
I opened a repository, started a build, and noticed that nearly every useful action required a connection to somebody else’s server. The source code was hosted remotely. The CI runner was remote. Package metadata came from remote registries. Test files were downloaded from object storage. API collections were synchronized through a cloud account. Documentation lived in another browser tab. Even code completion waited for a remote model.
My laptop was powerful enough to compile the project, run several databases, and heat the room better than the radiator. Still, it behaved more like a terminal connected to a collection of external services.
So I made a simple rule for one month:
The main development workflow had to remain usable with the network disconnected.
I did not try to recreate the entire Internet in Docker. Public package registries, operating system updates, and communication tools were still allowed during planned synchronization periods. But coding, commits, builds, tests, documentation, API experiments, and basic code review had to work locally.
The first assumption was that this would mostly be a Docker Compose exercise.
It was not.
The containers were the easy part. The difficult part was discovering all the invisible contracts hidden inside a normal cloud-based workflow.
















