DEV Community

Cover image for I'm 12. I Built an Ephemeral Cloud Platform on a $150 Phone (And Fought 10 Bugs to Win)
Harun - solo dev
Harun - solo dev

Posted on

I'm 12. I Built an Ephemeral Cloud Platform on a $150 Phone (And Fought 10 Bugs to Win)

AI coding agents can generate code in seconds. But provisioning a staging environment still takes 20–30 minutes.

The bottleneck isn't code generation anymore. It's validation.

So my CTO Akhouri and I built HYNA-Stage: a CLI that spins up isolated, ephemeral cloud environments in under 5 seconds using Firecracker microVMs.

Oh, and we built it entirely on a $150 Android phone using Termux.

The Skepticism

When I pitched this, Akhouri said: "Bro, my mind says yes, but I'm really confused."

I didn't argue. I proposed a 1-Hour Spike: "Just spin up ONE E2B container and kill it. If it works, we build."

He did it. The tech worked. But then, the real war began.

The Mess of Software

Building cloud infrastructure on a phone is insanity.

Pasting 500-line HTML files into Termux resulted in bash: !\': event not found. The code truncated. The UI clustered. My own security system (KAVLR) locked me out of my own files. I literally had to write Python scripts to bypass the cat alias I built to protect myself.

I spent two days staring at a broken screen, re-writing dashboard.html five different ways, only for Tailwind to fail to load, leaving the page as a giant, unstyled list. I coined the term "The Mess of Software" because it felt like the software was actively rebelling against me.

The 10 Bugs From Hell

  1. NPM Staged Publishing Limbo: Terminal showed + @hynaweb/stage@1.0.0, but npm install returned 404. I was stuck in a hidden review queue with a 0.0.0-stage placeholder. Fix: Bumped to 1.0.1 and republished.

  2. Supabase Case-Sensitive 404: CLI returned NOT_FOUND. Supabase logs were empty. The function was named Deploy-stage (capital D) but CLI called deploy-stage (lowercase). Fix: Renamed to lowercase.

  3. Termux Text Mutilator: Pasting large HTML files caused silent truncation. Tags merged. Scripts broke. Fix: Split code into 3-4 chunks and used Base64 encoding.

  4. Double Sign-In Ghost: User logs in, gets redirected, and hits a second sign-in modal. Fix: Removed the auth modal from dashboard.html and added strict session checks.

  5. The --key Parser Hijack: After adding --key for auto-injection, the down command crashed. Arguments shifted. Fix: Replaced argv[3] with a dynamic .find() function.

  6. Tailwind CDN Blackout: UI looked like an unstyled list. Tailwind failed to load on slow mobile networks. Fix: Hardcoded critical styles directly into HTML tags.

  7. Python Nested Quote Trap: Writing JavaScript backticks inside Python strings caused SyntaxError. Fix: Abandoned Python and used Base64 decoding.

  8. E2B 401 Unauthorized: Raw REST API calls failed. E2B requires complex gRPC protocol. Fix: Installed @e2b/sdk in the Edge Function to handle authentication.

  9. Logo Black Box Artifact: The logo had a dark rectangle behind it. Fix: Generated a true transparent PNG with hardcoded dimensions.

  10. The Cloud Wars: Fly.io blocked at 0/0 machines. Railway timed out. Vercel failed. Fix: Pivoted to E2B + Supabase Edge Functions.

The Breakthrough

I realized I was overcomplicating it. We moved the entire E2B logic into a Supabase Edge Function (Deno). We hid the secret E2B_API_KEY on the server. We made the CLI dumb: just send an API key, get a URL back.

I ran npm version patch. I ran npm publish --access public.

I opened Termux, held my breath, and ran:

hyna-stage up --key=hyna_xc5ub3l52qh
Enter fullscreen mode Exit fullscreen mode

The screen printed:

  Initializing HYNA-Stage...
  Spinning up cloud environment...

βœ…  Environment is LIVE!
πŸ”—  URL: https://8000-iv5bpiuyiaa5k389orokz.e2b.app
Enter fullscreen mode Exit fullscreen mode

I stared at the screen. A real, live Linux server, running in the cloud, spun up from a $150 Android phone on a dropping 4G connection.

The Kill Switch

The final test was terrifying. I typed hyna-stage down i86qheh2t5dd53l4akrd9.

The terminal printed:

πŸ—‘οΈ   Destroying sandbox...
βœ…  Environment destroyed successfully.
Enter fullscreen mode Exit fullscreen mode

I refreshed the dashboard. It was gone. The Firecracker microVM was dead. Compute cost: zero.

The Stats

  • E2B cold start: 150–200ms
  • Supabase Edge Function: 42ms (97% faster than baseline)
  • Total provisioning time: <5 seconds
  • Hardware cost: $150
  • Coffee consumed: 0 (I'm 12)

Try It Yourself

We are live and open source.

To the builders out there: Don't fall in love with your first idea. Fall in love with the problem. Validate the tech. And don't be afraid to fight 10 bugs to win.

We are HYNAWEB. We don't just build apps; we build the infrastructure for the AI era. πŸ―β˜οΈπŸš€

Top comments (2)

Collapse
 
puneetkumar2010 profile image
Puneet-Kumar2010 •

This is seriously impressive, bro! πŸ”₯🐯 Building this kind of infrastructure from a $150 phone is next-level dedication. Huge respect for pushing through all those bugs!

One small thing I noticed while trying it out: whenever I clicked β€œAuthenticate” to sign in, it kept telling me to wait 50 seconds. It happened every time I tried. Just thought I’d let you know in case it’s something you want to look into. Keep building, brother! 🀝

Collapse
 
koda2026 profile image
Harun - solo dev •

Bro, thank you SO much for actually testing it and catching this! πŸ―πŸ› οΈ

That 50-second wait is exactly the kind of friction we need to eliminate. I’m diving into the Supabase auth flow and the frontend loading state right now to see if it’s a network timeout, a rate limit, or a UI glitch.

I will patch this ASAP and let you know the second it’s buttery smooth. I really appreciate you being the first to stress-test it! πŸ€πŸš€