A life among the stars. A Sims-style life simulation set aboard a trading spaceship, flying an Elite-style galaxy — rendered in isomorphic pixel art, written in TypeScript, running entirely in your browser.
pnpm install
pnpm dev # http://localhost:5173Or build and serve:
pnpm build
pnpm previewNo assets, no backend, no downloads — every sprite, planet, starfield and
interface is generated in code. Saves live in localStorage.
This machine is innsmouth on the tailnet (tail617a6). Any machine joined to
that tailnet can play the game at:
http://innsmouth.tail617a6.ts.net:5173/
The dev server binds all interfaces and whitelists the tailnet hostname in
vite.config.ts (server.allowedHosts), so the hostname resolves over
MagicDNS and the game loads with no further setup. The server is started with:
pnpm dev # now binds 0.0.0.0 (host + allowedHosts come from vite.config.ts)Notes:
- Clients need Tailscale running and logged into the same tailnet for the hostname to resolve.
localStoragesaves are per-browser, so each machine keeps its own game.- Optional (requires sudo): a clean HTTPS URL without the port —
sudo tailscale serve --bg 5173proxieshttps://innsmouth.tail617a6.ts.net/to the local server. Remove it later withsudo tailscale serve reset. - To stop the background dev server:
kill $(ss -tlnp | grep 5173 ...)or find it withps aux | grep vite.
You are the captain of the freighter Starlight Rose, docked at the agricultural station of Kelem. Your crew — starting with just you — live aboard the ship. Watch them work, eat, sleep, shower and bicker. Keep them fed, rested and happy, or watch morale (and health) crumble.
- Dock at stations, open the Market screen.
- Each station's economy produces some goods and desperately needs others — buy where stock is high (green), sell where stock is low (red).
- Goods take cargo space (m³) — upgrade the cargo bay to carry more.
- ▲▼ arrows compare prices to your last visited station.
- Haggle (charisma) for better prices. Fences (smuggler module or black markets) sell goods for +15% at the risk of getting caught.
- Prices are locked per dock visit (like Elite) — undock and re-dock to see the market move. Station economies drift and suffer shocks every day.
Crew members have five stats and six needs. Hire them at station hiring halls (better reputation = better candidates); pay their wages at midnight.
The Market's Decoration Shop sells furnishings such as bioluminescent ferns, lounge benches, holo tables, display crates and decorative consoles. Buy them, return to the Ship screen, click Decorate, and drag the outlined pieces to any open deck tile. The freighter is larger than the initial view: scroll the mouse wheel, or hold Shift while dragging, to pan around the ship. Use middle-mouse drag as an alternative pan control.
- Engineering — fix breakdowns, keep systems alive, salvage wrecks
- Science — away missions, surveys, artifact hunts
- Charisma — haggling, bribing officials, talking down pirates, stowaways
- Combat — pirates, patrols, hostile fauna
- Piloting — dodging asteroids, escaping raiders, cheaper fuel
Assign roles (engineer, medic, scientist, trader, pilot, security) and give orders — or just watch them manage themselves. Traits (Workaholic, Gourmand, Insomniac, Smooth...) change how each crew member behaves.
Open the Map, plot a course, pay fuel, and fly. Journeys bring random encounters: pirates, breakdowns, asteroid fields, ion storms, distress signals, space whales... and the occasional stowaway who might just join your crew.
The mission board offers cargo runs, surveys, salvage ops, patrols, delicate bribes, medical relief and artifact hunts. Away missions take up to three crew to a planet's surface — each step tests one of their stats, and failure means injury. Dead crew stay dead.
- Survive. Keep the ship in one piece and the crew breathing.
- Get rich: earn 150,000 cr and reach Legendary reputation (95+) to retire as a Trade Baron.
- Or just wander the void, trading and telling stories.
- Click crew in the ship view to select them — orders and roles appear in the panel on the right.
- Click furniture (bunks, table, airlock, engine...) for context actions.
- Decorate enables placement mode for purchased furnishings. Drag outlined decorations to move them; use mouse-wheel or Shift/middle drag to pan.
- HUD buttons:
⏸ ▶ ▶▶ ▶▶▶time speed ·Ship / Map / Market / Crew / Missionsscreens ·Decorate·💾save ·?help.
src/
core/ — pure TypeScript simulation (no DOM): state, economy, crew AI,
travel, missions, save — fully unit-testable in Node
gfx/ — canvas rendering: isomorphic ship view, star map, space travel,
procedural pixel sprites and planets
ui/ — DOM interface: HUD, screens (market/crew/missions), modals
game.ts — the Game orchestrator (loop, input, screens, events)
main.ts — entry point
scripts/
browsertest.ts — headless-Chromium end-to-end test (Playwright)
src/core/__selftest.ts — headless simulation test (30 simulated days)
pnpm test # headless 30-day simulation
node --experimental-strip-types scripts/browsertest.ts # browser E2E- Time runs at 4 game-minutes per real second (1×). A day is ~6 minutes.
- The sim pauses on events (breakdowns, encounters, missions) so you can decide.
- Starvation and suffocation are real. Buy food rations. Keep an engineer.