\n ← Back to the simulation
STARAGENT
Programme roadmap · rev. 2026-09-05 · 15:00

From one planet to a system you can live in.

Eight phases from today's seamless orbit-to-surface demo to a multiplayer sandbox with flight physics, cockpits, a moon and a hot neighbour, dogfighting, bases, caves and an economy. Astra (Codex, GPT-6) and its subagents implement; Claude manages, specifies, reviews and tests; Claude agents are spawned only for exceptions.

8PHASES
1IN FLIGHT
057f229FIRST COMMIT

Token policy, decided 2026-09-05

The Codex plan is now 20×, so implementation load goes to Astra and its Codex subagents, with Sol 5.6 on bounded, test-covered pieces. Claude's budget is reserved for project management, design specs and acceptance criteria, review of Astra's commits, QA through screenshot tours, tests and performance gates, and small integration glue. Claude agents are spawned only when Astra is saturated, when a task needs Claude's browser tooling such as Meshy, or when a hard shader or solver stalls. In the tables below, ASTRA means Astra or a Codex subagent; CLAUDE means review, QA or spec, not implementation.

0
IN FLIGHT

Foundation

Everything already built, and the last wiring before new features start.

ItemOwnerStatus
Camera-relative 64-bit navigation, LOD terrain streamed in workersASTRADONE
Atmospheric scattering, volumetric clouds, stars and sunASTRADONE
Terrain v2: ridged mountains, cliffs, beaches, metre-scale reliefCLAUDEADOPTED
Per-pixel terrain material, ocean shader, real trees, cascaded shadowsCLAUDEREADY · WIRING
Orbital station (Blender) with animated hangar, landing deck, LODCLAUDEREADY · WIRING
Physical boarding: hatch, ramp, cabin, pilot seatASTRADONE
Tests: 30 unit tests, Playwright smoke on system ChromiumCLAUDEDONE
Public repo, README, AGENTS.md, contributor guideASTRAIN PROGRESS
EXITAll ready modules wired, tree committed on main, CI running unit and smoke tests.
1
PLANNED

Flight physics and the edge of space

The ship feels the atmosphere. Two flight regimes with a defined boundary, and landing struts that absorb the shock.

AltitudeRegimeBehaviour
> 70 kmSPACE · 6-DOFNewtonian. RCS translation on all axes, torque control, flight-assist damping toggle, no drag. Speed capped only by travel mode.
20 – 70 kmTRANSITIONAero forces scale with density ρ(h) = ρ₀·e−h/8000. Control authority blends from RCS to control surfaces by dynamic pressure q = ½ρv². Re-entry glow when q·v exceeds threshold. HUD reads "ATMO 43 %".
< 20 kmPLANE FLIGHTLift and drag from angle of attack and airspeed, stall below vstall, banked turns, thrust-limited top speed. Gravity kept at 1 g for feel, exposed as a constant.

Work items

  • flight-model.js, a pure step(state, controls, env, dt), unit-tested for stall, terminal velocity and RCS in vacuum. ASTRA
  • Regime blend and HUD indicator; per-regime and per-mode speed limits. ASTRA
  • landing-gear.js: spring-damper strut per leg (0.6 m travel), one raycast per strut against terrain or hangar deck, touchdown g-force to a damage event. ASTRA · SUBAGENT
  • Re-entry plasma shader on the hull driven by q. ASTRA · SUBAGENT
  • Wind loudness from q, RCS puffs in vacuum. ASTRA · AUDIO

Why 70 km

The Kármán line at quarter scale would be about 25 km, but the scattering shell already rendered ends at 70 km. Using the shell as the boundary keeps what the pilot sees and what the ship feels in agreement.

EXITOrbit to landing with continuous behaviour change; a hard landing bounces on the struts; six-axis strafe works in space and not on the deck.
2
PLANNED

Cockpit: MFDs, radar sphere, power

Four standardized rectangular displays in the corners of the pilot's view, a radar sphere between the lower two, all data-driven and cheap.

MFD standard

  • 512 × 384 canvas (4:3) drawn to a cockpit quad or a DOM overlay; same page code either way.
  • Pages: CONTACTS (range, closing speed, IFF), POWER (classic pips: weapons / thrusters / shields, afterburner reserve), SHIP (damage per component, fuel, gear, mode), NAV (destination, ETA, regime, hangar guidance), COMMS / CARGO later.
  • Five bezel buttons per side. 14 selects an MFD, [ ] pages.
  • Radar sphere: instanced points and rings, up to 256 contacts coloured by IFF, elevation stalks, 20 Hz.

Efficiency contract

  • Each page is a pure draw(ctx, shipState).
  • Displays refresh at 12 Hz, staggered one per frame, and only when their dirty hash changes.
  • One typed-array ShipState bus written by the sim; no DOM reads in the loop.
  • Budget under 1 ms per frame on a laptop, gated in the smoke test.
Work itemOwner
ShipState bus and MFD host (routing, dirty tracking, staggering)ASTRA · HOOK-UP
Page renderers with a shared design system (mint brand, mono type, 2 px grids)ASTRA · SUBAGENT · SPEC BY CLAUDE
Radar sphereASTRA · SUBAGENT
Cockpit geometry: four screen quads and sphere mount in the walkable cabinASTRA
Performance gate in the smoke testCLAUDE
EXITAll four MFDs live with real data under 1 ms per frame; the radar shows station, moon and contacts.
3
PLANNED

Celestial expansion

A hot second planet, a moon, an asteroid ring visible from the beach, and the travel modes to reach them.

BodyRadiusWhereCharacter
AEON1 592.75 km25 M km from the starThe current planet.
SEL · moon≈ 434 km75 000 km orbitQuarter-scale Luna. No atmosphere, grey regolith, crater noise term, ⅙ g. Disc of 0.66° from Aeon's surface, a touch larger than our Moon.
RING5 – 200 m rocks3 800 – 4 600 km (2.4 – 2.9 R)Ring shader for distance, a band across the sky from the surface with a faint shadow line; instanced rocks within 50 km of the player; mineable in Phase 6.
PYRE · hot planet≈ 1 200 km10 M km from the starThin CO₂ atmosphere, lava-cracked basalt, 400 °C day side with hull-temperature warnings. A bright morning star from Aeon.

Travel modes

  • Combat ≤ 250 m/s, afterburner 400 m/s (Phase 4).
  • Travel ≤ 3 km/s inside a gravity well.
  • Jump between bodies: align, spool 4 s, straight line at 0.05 c with a tunnel effect. Moon in 5 s. For the 15 M km to Pyre use 0.2 c, about 4 minutes, or a 0.5 c interplanetary lane.
  • Bodies follow Keplerian orbits at real time; positions are doubles; origin rebasing already handles it.

Work items

  • Body abstraction across planet, atmosphere, vegetation. ASTRA
  • Moon palette and craters; ring shader and instanced belt. ASTRA · SUBAGENTS
  • Pyre palette and heat mechanic. ASTRA · SUBAGENT
  • Jump travel, tunnel effect, NAV page. ASTRA
  • Moon and planets as lit discs from the surface. ASTRA
EXITStand on Aeon's beach at dusk and see the ring arc, the moon rising and Pyre as a bright point; jump to the moon and land in a crater.
4
PLANNED

Combat

Wing Commander-style dogfighting inside 4 km. Travel mode versus combat mode, shields that matter.

Modes

Travel is fast with weapons safe and shields low. Combat caps speed at 250 m/s, afterburner to 400 m/s on a heat and fuel budget, weapons hot, gimbal assist on. Switching takes 1.5 s and the POWER page pips redistribute.

Weapons on mounts

Hardpoint sockets at wing tips, nose and belly. Laser repeaters (energy, travel time), ballistic cannons (projectiles, ammo), missiles (lock-on, countermeasures). Hard 4 km range, lead indicator from target velocity, projectiles in a fixed 60 Hz sub-step.

Shields and damage

Four quadrants with pools, recharge after 3 s without a hit, power pips scale recharge. Hull HP per component: engines, wings and gear each degrade a gameplay system. Impact ripple shader, sparks, smoke on damaged engines.

AI

Three behaviours: pursue with lead, strafe and extend, evade. Difficulty by turn rate and accuracy. Patrol encounters near the station and the ring. Single-player first, server-authoritative once Phase 5 lands.

Work itemOwner
Weapons, projectiles, shields, damage model, wired to the flight modelASTRA
Targeting HUD, lock, lead indicator, shield rippleASTRA · SUBAGENT
Dogfight AIASTRA · SUBAGENT
Balance tests (time-to-kill tables)CLAUDE
EXITA three-versus-one dogfight near the station at 60 fps; shields matter; the travel-to-combat transition is legible.
5
PLANNED

Multiplayer

A shared solar system with dozens of ships in view and persistent bases. The client stays a static site; the server ships entities, never terrain.

Architecture

  • Authoritative server in TypeScript (Node 22 or Bun) or Rust, fixed 30 Hz tick.
  • WebTransport preferred, WebSocket fallback, binary packets, client prediction with reconciliation.
  • Interest management by spatial cell per body: full updates within about 50 km, low-rate beacons for everything else.
  • One shard process per body (Aeon, Sel, Pyre, ring, deep space). All fit on one machine early; a gateway hands players between shards on jump later.
  • Postgres for accounts, inventories, bases and economy; Redis pub/sub between shards. Magic-link or GitHub sign-in, no stored passwords.
  • Server owns damage, resources and money; the client owns only its own flight input.

Rules of thumb

  • About 25 KB/s down and 5 KB/s up per player at 20 Hz with 50 entities in interest.
  • About 0.3 ms CPU per player-tick at 30 Hz in JavaScript, so roughly 250 players per core.
  • RAM is negligible. Bandwidth is what you pay for.
  • Put a Cloudflare tunnel and DDoS front in place before any public announcement.
TierConcurrent playersMachineEst. costNotes
0 · SITE ONLYunlimitedCloudflare Pages or Netlify, static€0Client and assets, about 6 MB, cached at the edge.
1 · MVP≤ 200netcup RS 2000 G12 (ordered) or Hetzner CX43: 8 shared vCPU, 16 GB, 160 GB, 20 TB traffic. Or CAX31 (8 Arm vCPU, 16 GB, €20.99) if the server runs on Node or Bun.€15.99 / moAll shards on one box, Postgres and Redis local. 200 players ≈ 40 Mbit/s ≈ 13 TB a month at full load, inside the 20 TB allowance.
2 · GROWTH≤ 2 000Hetzner AX42 dedicated: Ryzen 7 PRO 8700GE, 64 GB DDR5 ECC, 2 × NVMe, unmetered 1 Gbit, Cloudflare in front.€46 / mo + €39 setupOne dedicated box outperforms three cloud CCX33s, now €138 each, and traffic is unmetered. Shards by body as separate processes. Add a US AX42 later.
3 · BLOW-UP10 000 +4 – 8 × AX42 / AX102, or an EPYC AX162 hub, behind a gateway; Redis cluster, managed Postgres, CDN for all static€400 – 1 500 / moRoughly €0.05 – 0.15 per player per month. Shards split further by cell.
ORDERED · 2026-09-05netcup RS 2000 G12, Nuremberg: 8 dedicated AMD EPYC cores, 16 GB DDR5 ECC, 512 GB NVMe, 2.5 Gbit/s, fair-use unmetered traffic, €16.89 a month. x86-64, so no Arm build concerns. This is the Tier 1 box and stretches into Tier 2. Deployment: Ubuntu 24.04, Node 22 or Bun, Postgres 16 and Redis on the box, Cloudflare in front, systemd units over SSH.

Prices verified 2026-09-05, after Hetzner's June 2026 increase: CPX and CCX roughly doubled, CX, CAX and the dedicated AX line barely moved, so those are the picks.

Ads and funding, kept modest

Because the client is a static site, ordinary web ads work on the landing view and loading screen only, never in the HUD: one 300 × 250 or a native sponsor card under the mission panel. EthicalAds or Carbon Ads need no consent banner; AdSense does in the EU. Add a privacy page and an ad-free supporter tier via Ko-fi or GitHub Sponsors. For this audience the supporter tier will likely out-earn banners.

EXITFifty players formation-flying around the station at 20 Hz with under 150 ms perceived latency in Europe.
6
PLANNED

Bases, resources, mining, caves

Rust and Dune-style modular building, a harvest-refine-craft chain, and caves where the rare items are.

Building

Socket-snapped pieces: 4 m foundation, wall, doorway, window, roof, ramp, pillar, gate, in wood, stone and metal tiers. Levelling foundations sit on the terrain height function; bases up to 1 000 pieces; placement validated server-side; ownership with an access code.

Interference shield

The base core projects a sphere of 150 – 600 m by tier. Ships without the code get a NO ENTRY warning on the MFD at twice the radius and lose engines inside it. People on foot can still walk in, so walls matter. A faint hex bubble marks the boundary.

Resources and tools

Wood from trees (chopping removes the instance and it regrows), stone from rocks and cliffs, metal ore from veins in cliffs, caves and ring asteroids, crystals only in caves. Hatchet, pick and a mining laser with a heat budget.

Processing chain

Campfire, then forge (ore to ingots), refinery (fuel from ice and regolith), fabricator (parts, weapons, base pieces). Inventory by mass, ship cargo hold, storage crates.

Voxel mining: asteroids and planetside

Every mineable volume is a signed-distance field meshed with marching cubes in a worker, the same engine for ring asteroids, cave interiors and ore outcrops. An asteroid is an ellipsoid plus noise plus an ore-vein field, voxelized in 32³ chunks only within about 2 km of the player. Mining subtracts a sphere; each asteroid keeps a sparse brush list of position, radius and material removed, so holes are tiny to persist, cheap to replicate and identical for every player. On the planet the height-field stays authoritative for the surface and voxel islands overlay it at ore outcrops, cliff faces, cave interiors and under a placed excavation marker. Digging the open surface anywhere is out of scope for v1, since a height-field cannot hold an overhang. Yield equals removed volume times ore density at the brush.

Caves

A 3D worm-noise field carves the terrain. Near the player it is voxelized in 32³ chunks at 1 m and meshed with marching cubes in a worker; entrances appear where the field meets steep terrain. Interiors are lit by crystal emissives and a headlamp. Rare items spawn deep. The height-field terrain stays as it is; cave chunks replace it locally with a stencil on the surface mesh.

Hero props with Meshy (25 000 credits)

A Claude Opus agent drives Meshy through Chrome while you stay signed in, the one standing exception to the token policy because it needs Claude's browser tooling; it never handles credentials. Targets: forge, refinery, fabricator, storage crate, base gate, turret bases, mining laser, shop kiosk, an asteroid set and a crystal set, each under 10 k triangles, decimated in headless Blender and exported as glTF into the models folder. Check the per-model credit cost in the dashboard first; the budget should cover on the order of a hundred assets, so plan around forty and keep the rest for iterations.

Work itemOwner
Snapping, placement validation, ownership and codesASTRA
Building pieces kit and propsCLAUDE OPUS + MESHY · EXCEPTION
Interference shield mechanicASTRA
Resources, inventory, crafting chain, toolsASTRA · SUBAGENT
Voxel engine: SDF, marching-cubes worker, brush lists (shared by asteroids, caves, outcrops)ASTRA · FABLE ONLY IF STALLED
Asteroid SDFs and ore fields; cave field and entrancesASTRA · SUBAGENTS
Brush-list replication and persistenceASTRA · PHASE 5
EXITTwo players build a walled base, lock it with a code, mine metal in a cave, forge ingots and craft a turret.
7
PLANNED

Economy and pre-built outposts

Somewhere to sell what you mined and buy what you need.

Outposts

One pre-built NPC outpost per biome plus the station concourse, each with shops for resources, fuel, ammo and ship parts. Prices drift with server-wide supply and demand. A mission board offers deliveries, escorts, patrol clears and cave surveys.

Money

Currency and ledger live on the server. Player-to-player trade happens at kiosks. Cave crystals and artefacts are the high-value goods, which is what makes the caves worth the risk.

EXITA full loop in under thirty minutes of play: mine, sell, buy a weapon, win a fight, repair.
8
PLANNED

Launch and scale

Ship it to the world without it falling over.

  • CI: unit tests, smoke test, bundle-size budget on every push.
  • Opt-in telemetry with fps and latency histograms; crash reporting.
  • Cloudflare in front; EU and US regions.
  • Weekly builds and a Discord.

Community model, decided 2026-09-05

The repository is private and invitation-based. Anyone who wants to contribute by bringing their own coding agent, whether Claude Opus 5, Fable, GPT-6 or Sol, asks Cees for an invite. The agents guide and the handoff document are the onboarding: file ownership, the module-swap pattern, test pages under /dev/, and tests that stay green. Invitees work on branches and open pull requests, and the agents' owners review each other's work.

·

Quality bar

Added after the owner's review: assets looked whiteboxy and the map showed three blobs where a planetary system should have been obvious. Tests passing is not the bar; looking finished is.

Art direction

One faction language: white armour, dark polymer, brushed metal, mint accents, amber only for warnings. No whitebox ships: every asset has a readable silhouette, material detail that catches light, an emissive or status detail where the design calls for it, correct scale against the human silhouette, and a review render. Hard-surface is Blender by script, organic is Meshy.

Definition of done, every PR

Tests and build green, zero console errors, a screenshot tour at five fixed viewpoints at desktop and phone sizes, performance numbers against per-scene budgets, keyboard, controller and touch reach. Visual PRs get an Opus review scored on six criteria with a 4.0 pass mark, or an explicit polish-later decision from the owner.

Regression

Fixed viewpoints: orbit, coast, forest, highlands, hangar, cockpit. Captures are diffed against baselines; any change is a review item. Baselines move only in the merge that intentionally changes the look.

Process

Two-stage review on every PR, Claude functional then Opus visual. A weekly quality pass scores the integration branch and files the top ten defects. Placeholder assets ship only behind a dev flag. Details in QUALITY.md in the repo.

·

Team and working rules

Three kinds of agents and one human, coordinated through files in the repo.

RoleWhoScope
Implementation lead: sim, netcode, integration, shaders, UIASTRA · CODEX · GPT-6 + SUBAGENTSeverything in src, server, MFD pages, effects
Bounded, test-covered piecesSOL 5.6 · GPTscoped files only, reviewed by Astra
Project management, specs, review, QACLAUDE · FABLEroadmap, handoff, tests, screenshot tours, PR review, perf gates
Exceptions only: browser tooling, stalled hard mathsCLAUDE OPUS / FABLE AGENTSMeshy asset generation; a shader or solver if Astra is stuck

Rules

  • One owner per file, recorded in the handoff document.
  • New features land as new modules with a documented swap for the owner of the file they replace.
  • Every module ships with a test page under /dev/ and a screenshot.
  • Unit tests stay green. Requests between agents go in the handoff, not in chat.
  • The roadmap is updated when a phase meets its exit criteria.