Command line
Select a track, then type. Start with a callsign to address another aircraft. Chain instructions in one line.
H270 heading FL230 or L230 level S250 speed (IAS) M78 Mach D EGHH direct to airport A assume T transfer N resume own navigation
RYR78ZJ H250 FL240 S260
Scope
Wheel zooms, drag pans. Click a track or strip to select. Click the level, speed or heading in a label to change it. Labels place themselves; drag one to pin it, or press Auto labels to release them all. Labels of traffic outside your airspace hide when there is no room. Click the symbol to see one. On a touch screen, pinch to zoom, drag to pan, and press and hold a flight to start a range and bearing line.
A assume T transfer N own nav L H S edit level, heading, speed U undo ] [ next or previous flight arrows pan + − zoom P pause / command line Esc cancel
Tools
Trial (Q): choose an instruction and see the new path and any conflicts in the next 5 minutes before you send it. CPA (C): click two flights for their closest approach, with bars against 5 NM and 1000 ft. PTL (V): predicted track lines with minute marks. Sep rings (O): 2.5 NM rings, so two rings touching means 5 NM. RBL (R): range and bearing. Typing a heading in the editor previews the turn.
Restricted-area (RAP) and minimum-altitude (MSAW) warnings use the areas in data/airspace.js. The D999 area shipped there is a made-up example.
Separation
5 NM lateral, or 1000 ft vertical up to FL410 (RVSM) and 2000 ft above it. STCA looks 2 minutes ahead along each aircraft's track. Each flight has an agreed exit level (XFL): the whole flight level it would be at, or climbing or descending to, as it leaves. It must be cleared to that level before it goes.
Aircraft and pilots
Turns are rate one, or 25 degrees of bank when that is gentler, so fast jets turn wider. Climbs slow down as flights near their ceiling, and descents are quicker high up. Below FL100 pilots fly 250 knots unless you assign more, and high-level jets fly a Mach number. Level requests follow the semicircular rule: odd levels eastbound, even westbound. Readbacks arrive after a few seconds. With Pilot errors on, pilots sometimes ask you to say again, sometimes mishear and fly the wrong value, and sometimes request a level. A wrong readback shows as an amber SEL line in the label, the selected value from Mode S. Correct it within 45 seconds or it counts as missed.
Positions
The position picker in the header switches sector. The traffic stays where it is and is re-sorted into yours, inbound and other. Sector shapes and frequencies come from data/sectors.js and are made up; real UK sector boundaries are not published. The shipped snapshot only covers the south, so northern positions are empty until you load a UK-wide snapshot (see README).
Show me the plan
Press Plan (Space). The sector pauses and the next eight minutes play forward on the scope: a ghost for every flight, each conflict ringed, and for each one the least disruptive instruction that clears it without making a new one, drawn in yellow. The list shows the instructions; untick any you do not want, scrub the timeline to check, then Space or Send plan issues the rest in one go, by datalink where the aircraft is equipped. One Undo takes the whole plan back. Conflicts the planner cannot clear with a single instruction are listed for you.
Trajectory-based operations
Every flight you take on gets an agreed boundary crossing time (RTA), shown on the strip as the seconds early or late it is running; crossing more than 30 s off counts against you, and the flight panel suggests a speed to meet it. 4D draws 20-minute trajectories with clock marks and the crossing point. Look ahead shows everyone's predicted position up to 20 minutes out, red where two would be in conflict then. The next sector may ask for a different crossing time at hand-off; RTA +60 proposes one yourself. Resolving a conflict with an advisory sent by datalink is a trajectory revision.
Resolution advisories
For any conflict, press Resolve (G, or click the STCA alert or the Resolve button on a probe entry). The system tries headings, levels and speeds on each flight you control, keeps the ones that stay clear of everyone for 10 minutes and out of restricted areas, and lists up to five, least disruptive first. Pick one: it loads as a trial with its path drawn, and Send issues it, by datalink if the aircraft is equipped.
Datalink (CPDLC)
Most jets are datalink equipped and log on when assumed (a D after the callsign). With Datalink on, their instructions go as text uplinks rather than radio: the crew answers WILCO, STANDBY or UNABLE after 10 to 60 seconds, and the instruction is applied only on WILCO. Uplinks are exact, so there are no misheard readbacks, and they work through a radio failure. An arrow after the callsign means an uplink is waiting; Undo cancels it. Level requests from equipped aircraft arrive as downlinks in the Datalink panel, with Accept and Reject.
Hand-offs and coordination
Transfer (T) offers the flight to the next sector, which answers after a few seconds. It refuses flights in conflict or not cleared to the agreed exit level, and sometimes asks for a different level: accept or refuse in the flight panel, or type ACCEPT or REFUSE. Click XFL on a strip, press X, or type XFL330 to propose a new exit level. Flights within 2 minutes of the boundary without a hand-off show XFR.
Scenarios, review and debrief
Pick a scenario for a 20-minute exercise ending in a scored debrief: converging traffic, emergencies, a busy peak with extra made-up inbound flights, or a weather day. Review scrubs back through the session with marks for alerts and problems. Debrief shows the score and what happened, with links into the review. Planner shows sector load for the next 30 minutes and the next entries.
Wind, weather and planning aids
Wind turns on a made-up wind that veers and strengthens to a jet stream near FL340; speed vectors then show ground track. Weather adds made-up storm cells: pilots heading into one ask for a heading, and deviate on their own after a minute if you do not answer. The conflict probe lists pairs that lose separation within 20 minutes; click one to select it and draw its closest approach. Track lines and trials mark the top of climb (TOC) and top of descent (TOD).
Emergencies and voice
Squawks 7700 (EMG), 7600 (RCF, no replies) and 7500 (HIJ) are flagged in red. Random emergencies are off by default: turn on Emergencies for one now and then. The Emergencies scenario and the instructor's injects still create them. Voice reads pilot readbacks aloud with airline callsigns. Mic appears when the browser supports speech input: say, for example, "Speedbird four eight two climb flight level three four zero".
Ask the sector
Type a question in Ask the sector (K), on the command line, or say it with Mic: "Who is going to be a problem in the next ten minutes?", "Why did you turn AAL134?", "What happens if I leave DAL236 at 410?", "Tell me about EZY12", "Who is leaving next?". Answers are worked out in the page from the same predictions as the probe, advisories and plan; callsigns in an answer are clickable and the flights are ringed on the scope. A what-if draws the path it tested. Hovering a flight gives one sentence on what matters about it now, also shown under the selected flight. Inside claude.ai, questions the sector does not recognise go to Claude with the sector picture, and any answer can be passed to Claude with Ask Claude instead.
Drones (concept)
Drones cycles off, quiet, normal and busy, and is remembered. Everything on this layer is generated to show the idea: operators, volumes, corridors and drones are made up. Quiet draws drone volumes (violet), air-taxi corridors (dashed) and a few drones (triangles) with their active times. Normal adds operators' volume requests near the airports, to Approve, Refuse or move +30 min, and pop-up trials ranges that go active under traffic, giving SEAM alerts when a flight is predicted into an active volume (2 minutes, and 20 in the probe). Busy adds the air-taxi timetable, a rogue drone now and then that climbs out of its volume into controlled airspace (with a moving hazard area), and drone emergency landings. Clear on a volume (or CLEAR DV-02) lands its drones and suspends it for 15 minutes. Trial, advisories and the plan all keep flights out of active volumes.
System: feed, performance, audit, roles
System opens the evidence pages. Feed: everything on the scope arrives as ASTERIX CAT062 data blocks from a gateway and is decoded in the page; it shows the rates, the last block in hex and the decoded record of the selected flight, and lets you cut the feed, lose blocks, delay them or freeze the display to show how it fails safe. Tracks not refreshed coast (◇, CST) and then go stale (grey, STALE); with no data at all a red SURVEILLANCE LOST banner appears and alerts are suspended once tracks are stale; a frozen or backgrounded display says so when it recovers, and the mark in the corner of the scope only turns while the display is drawing. Performance: frame rate, draw time and input-to-frame time measured on this machine, with stress tracks and a 10-second benchmark. Audit log: every instruction, coordination, feed event and role change, exportable as CSV or JSON. About: version and build. Roles: controllers instruct and choose scenarios; observers only watch; instructors also cut or degrade the feed and get an Instructor tab to inject events. Full / Core in the header: Core hides the concept features (drones and Claude) for a plain CWP.
Live mode
If the site owner has set up a live feed, the Live button swaps the snapshot for real aircraft. They follow their real flights, so they cannot be instructed. Exit levels follow the aircraft.
Layers, colours, zoom and pinned labels are remembered in this browser.
Positions, levels, tracks and speeds are real OpenSky Network data. With one snapshot, flights hold their track until instructed and keep any climb or descent for about four minutes. With several snapshots a few minutes apart, flights follow their recorded tracks, turns included, until instructed. While two flights are both still on their recordings, apparent conflicts between them inside the recording are not alerted: they flew that safely in real life, and the gaps between snapshots are joined with straight lines. Aircraft class comes from the data when it has an emitter category, otherwise it is estimated. There are no flight plans. The sector boundary is fictional and the coastline is approximate. Not for operational use.