A minimalist, terminal-first developer Platform-as-a-Service (PaaS) engine built to run, sandbox, and route projects dynamically.
aerocloud is split into three decoupled subsystems that coordinate over local sockets and HTTP protocols:
[ aerocloud-cli ] ──( POST /deploy )──► [ aerocloud-server ]
│ │
│ ( Extracts to )
│ ▼
( Web Request ) ────────────────────────► [ /deployments ]
│ ▲
( Parses Subdomain ) │
▼ │
[ aerocloud-proxy ] ──( Serves Static Folder ) ───┘
cli/(Client Command Tool): A Node.js CLI tool that bundles local workspace directories (excluding dependencies likenode_modules), compresses them to a ZIP stream, and POSTs them natively to the server.server/(API Orchestrator Backend): An Express daemon listening on port3000. It receives zip buffers, extracts them into isolated sandbox folders inside/deployments/, and maps unique subdomains (e.g.a1b2c3).proxy/(Dynamic HTTP Router): An Express reverse proxy listening on port8080. It intercepts incoming host headers (e.g.,a1b2c3.localhost:8080), parses the subdomain, and serves files dynamically from the mapped deployments directory.
cd server
npx tsx src/index.tscd proxy
npx tsx src/index.tsInside your target project directory:
npx tsx /path/to/cli/src/index.ts deployOutput:
🚀 Archive created successfully
{ status: 'success', subdomain: '5ca393', url: 'http://5ca393.localhost:8080' }
Deployment completed successfully!
- Runtime: Node.js (v24+) + TypeScript
- CLI Parsing:
commander - Compression:
archiver(v8.0.0 ESM Class Instantiation) - API Receiver:
express+multer(MemoryStorage) - ZIP Extraction:
adm-zip(in-memory buffer parsing) - Relative Pathing: Native Node
import.meta.url+fileURLToPath