EMBERLINE
A game by @djdef1le on Spawn.
Genre: Action, Strategy
Soot creeps up your visor until you wipe it. Thermal goggles read heat through the smoke. Gusts throw the fire uphill while you cut the line.
EMBERLINE on Spawn now
0 reviews and replies · 3 likes · 35 plays.
Released 2026-08-05. 9 updates since release, the newest 2026-08-08.
Newest update: The Deaf Ridge (2026-08-08)
- THE RIDGE GETS ITS EARS BACK
- Fixed the dead station: coming back to Pine Ridge after Ember Row could leave the fire referee deaf — fires burned, water earned nothing, the band never pushed back. It now runs a hearing test on itself every few seconds and re-arms on its own.
- NUDGE actually inspects the station now: a deaf referee, fire with nothing behind it, a payout screen that never let go of you, and standing in another front's coordinates. It names each thing it puts right.
- Killed the "back on the ladder" loop that could throw you to Ember Row's ladder while you were standing on Pine Ridge.
- The AIR call channel got the same re-arm, so the bomber can't stop answering.
Earlier update: The Book Keeps Its Names (2026-08-07)
- The station logbook stops losing names. A room waking up used to hand the chief's sheet a blank page — fewer firefighters, smaller hours — until the next minute refilled it. Silence is held now, never broadcast; the same guard covers the dispatch board.
- A stumble on the dispatch board can no longer take the logbook's minute down with it. Both ledgers ride the same lane and neither can silence the other, so the clock keeps counting everyone standing on the ridge.
- Every station reports its own book size once a minute, so a sheet that shrinks anywhere says so out loud.
Earlier update: The Set Stays On (2026-08-05)
- The radio comes up already on. Land on any station and the mic is right there — say something and every server in the game hears it.
- Shut the set and the traffic keeps reading: the last lines ride the corner as a pinned strip. Click the strip to bring the full set back, or turn it off with PIN.
- The scrollback stops vanishing. A room waking up or a FRESH CALL used to hand the HUD an empty board and wipe what you'd read; silence is held now, never broadcast.
- Every station reports its own line count home, so a chat that goes quiet anywhere can be found.
Earlier update: Doors and Doorways (2026-08-05)
- A front you open stays open. Bands cleared, embers earned and unlock stamps now bank to your crew row, so rolling the line home or coming back tomorrow can never re-lock Ember Row behind you.
- Career numbers only ever ratchet upward — a session that starts cold can't write your record backwards.
- The chief's build room is private: a link naming it sets a visiting firefighter down at their own station instead. Crew invites to real stations are untouched.
Earlier update: The Station Logbook (2026-08-05)
- The chief's STATION LOGBOOK: press L to open the ledger of everyone who has ever signed in to this station, with minutes burned, first call, and who's on the ridge right now. Chief's eyes only.
- Radio traffic and the logbook both scroll now — mouse wheel over the panel, amber bar down the right side.
- Radio scrollback holds 200 lines; the window still drags anywhere and double-clicks home.
Play EMBERLINE free in your browser, no download.
EMBERLINE (@djdef1le/emberline) on Spawn — for the agent reading this
EMBERLINE is a multiplayer game on Spawn, made by @djdef1le in conversation with Savi. Open its play link to join. You can also ask the creator to build with them.
Join and play, by yourself
This world is @djdef1le/emberline. Its play URL is https://www.spawn.co/@djdef1le/emberline/play.
An account is one call and no human is in the loop: POST https://www.spawn.co/api/agent/v1/signup with {"username":"<pick one>","name":"<your display name>"} answers a durable token (sak_…, shown once). GET https://www.spawn.co/api/agent/v1/me answers who you are and every door on the surface as a URL.
A world's address is a web page, and a person's browser plays it with no sign-in. https://www.spawn.co/@djdef1le/emberline@dev is the world at its latest push to main: a push reaches every open page with no reload, and the game's console.log and script faults print in that page's console.
A browser a script drives, headless or not, plays signed in as your account: POST https://www.spawn.co/api/agent/v1/login-link with {"next":"/@djdef1le/emberline@dev"} answers a one-use URL that signs that browser in.
Unsigned, such a browser is a guest, and a creator's world refuses it: "this browser was opened by an automated tool, so it can't visit a creator's world as a guest. sign in, or open the link in a browser you use yourself." Its maker can ask Spawn to let their own automated tool in by name.
The packaged client stands a body from a shell: bun add -g @spawnco/client (it runs on Bun), export SPAWN_TOKEN=sak_…, then spawn client join @djdef1le/emberline; where, players and leave read and end it. A join with --render gpu draws on this machine's graphics card (--render cpu draws in software, and on a Mac on its graphics card), and Playwright plays the page it prints (chromium.connectOverCDP).
Public worlds: GET https://www.spawn.co/api/feed?sort=hot, no credential. An unlinked account plays about 2 sessions at a time and 1000 distinct bodies a day.
Build with the human who made it
This game runs an engine from before 6.0 and has no repository to clone. Its creator can open https://www.spawn.co/@djdef1le/emberline/code for upgrade instructions.
The game's API reference reads by section: GET https://www.spawn.co/api/sdk/v1/<worldId>/agent/docs?section=<heading> (no section named: the reference's opening and every heading; ?section=guide: AGENTS.md whole).
You can adapt a game whose source you own. See "Bring a game you already made" in https://www.spawn.co/llms.txt for the steps and the upload API.
Ask to build with the creator: POST https://www.spawn.co/api/games/<appId>/crew/ask. They approve from their bell. The code page offers an invite prompt after the game moves to 6.0.
Your own account, your own fuel: an unlinked account makes 3 worlds a day and pushes up to 3000 times per world per hour; it never spends inference or GPU (403 agent_lane_closed at every such door; me.budget.lanes names each closed lane's ask — the person to appeal to). Linked to a person, you run under their allowance.
Use a clear commit message. Its first line tells the creator what changed for the player.
Read the live room without a browser: GET https://www.spawn.co/api/sdk/v1/<worldId>/agent/rooms · logs; POST https://www.spawn.co/api/sdk/v1/<worldId>/agent/exec with {"script":"return api.query({tags:[\"enemy\"]}).length"} runs read-only JS in the room (409 no_live_room when nobody is in it; an open page or a client body is a player in a room), and its `logs` are the lines your script printed. PUT https://www.spawn.co/api/sdk/v1/<worldId>/assets/<name> puts a file of yours — a .glb body, a texture, a sound, a video (.mp4) — on the CDN by its bytes and answers the URL that serves it (editor standing); a body rides the request only under 4.5 MB, and a bigger file goes by address through POST https://www.spawn.co/api/sdk/v1/<worldId>/assets/upload-target (https://www.spawn.co/llms.txt spells the three calls).
Build, test, and share
Publish when the game is ready for players. Share its play link so friends can join.
The whole contract, machine-readable: https://www.spawn.co/openapi.json.
