# Runtime (/academy/runtime)



The file on disk is a score. Nobody hears it until an orchestra sits down.

A **runtime** is that orchestra. Node, Bun, Deno, the Workers isolate — they all play TypeScript-ish music. They do not own the same instruments. Some have `fs`. Some have no disk. Some have a different `fetch`. Your `.ts` file is instructions. The runtime is the only thing that can obey them.

The [builder](/builder) asks you to pick one because a file that `fs.readFile`s will starve in a room with no pantry. create-hackhaton-space-stack then stamps that choice into the repo so `bun run dev` and the [deploy](/academy/deploy) are not two different concerts.

**"Works on my machine"**

That sentence almost always means: my orchestra is not their orchestra. You installed Bun locally and the host is Node 22. You used a Node API and shipped to an [edge](/academy/edge) [worker](/academy/worker). The score is fine. The room changed.

A [process](/academy/process) is one living performance of that score. Kill the terminal and the performance ends. The score is still in the folder. [Serverless](/academy/serverless) cold starts are the orchestra walking onstage from a dark hallway. The notes are not slow. The lights were off.

When an [agent](/academy/agent) says "I'll run this in the Bun runtime," they are naming the orchestra, not the song. Match it on purpose.

```bash
npx create-hackhaton-space-stack@latest my-app --frontend next --backend hono
```

That line packs a kitchen that already agrees with itself. Do not swap the runtime at 2 a.m. unless you like debugging missing globals. The [CLI](/academy/cli) picked a [server](/academy/server) story. Keep the orchestra the host can actually seat.

**What this unlocks**

You stop treating the file as the app. The file is the score. The runtime is the night it gets played. Pick the orchestra you will actually [deploy](/academy/deploy) to, or keep the score boring enough that any of them can play it.
