1// Dumbest possible node HTTP server — the node cold-start baseline. Mirrors the
2// effectful Sandbox's two routes (`/echo` and a default text response) so the
3// in-VM workload is identical; everything that differs in time-to-usable is the
4// alchemy/Effect abstraction, not the work the server does.
5const http = require("node:http");
6
7const port = Number(process.env.PORT ?? 8080);
8
9http
10 .createServer((req, res) => {
11 const url = new URL(req.url, "http://microvm");
12 if (url.pathname === "/echo") {
13 res.writeHead(200, { "content-type": "application/json" });
14 res.end(JSON.stringify({ message: url.searchParams.get("message") ?? "" }));
15 return;
16 }
17 res.writeHead(200, { "content-type": "text/plain" });
18 res.end("hello from node microvm");
19 })
20 .listen(port, "0.0.0.0", () => {
21 console.log(`node microvm baseline listening on :${port}`);
22 });