Controls and access
An account’s roles and grants determine which entities it can read and which actions it can perform. Grants can apply to all entities or a scope such as a site, tag, kind, or specific entity set. Administrators manage these through Access.
The development stack includes broad test roles. Staging creates one configured administrator; subsequent access should be assigned for the people using the deployment. Changes made in Access persist across restarts.
Observation and approval
Section titled “Observation and approval”A newly discovered entity may require approval before it becomes available. Approval sets the identity shown in Terminal. It does not change the provider’s control authority.
An observe-only aircraft can publish telemetry and video. Mainframe refuses ordinary flight commands and control leases for it. Some provider-declared lifecycle commands, such as native stream management, can remain available in observation mode.
Exclusive control
Section titled “Exclusive control”Continuous flight control uses a lease so two operators cannot steer an aircraft at the same time. Acquire control through the available controls, check the displayed owner/readiness, and release it when finished. Losing a lease or connection stops the authority associated with it; continuous inputs also have a deadman timeout.
Manual control can pause Mainframe’s mission tasking. Follow the displayed tasking state when handing the aircraft back. Available controls depend on hardware support and the module’s policy; do not infer readiness from an enabled-looking panel alone.
The Control panel
Section titled “The Control panel”Open it from Panels or from a drone’s menu. The toolbar shows the lease state (FREE, HOLDING, HELD BY someone, OBSERVE ONLY) and which local input is driving the aircraft: PAD (on-screen sticks), KEYS or USB with the controller’s name. Under the commands, a DRC … line reports the device control session as the provider sees it whenever the device supports explicit engagement; DRC READY is the state in which sticks reach the aircraft.
Commands are Take control / Release control, Engage / Disengage where supported, then Launch, RTB, Hold, Resume and Land (airborne only, when the device supports it) and Drop. Launch, Land and Drop ask for confirmation. A disabled button shows the provider’s reason on hover. The readout below the instruments prints exactly what is being sent (sticks x y h w, gimbal rate, zoom rate) and the active limits, so a wrong direction or a stuck input is visible before the aircraft shows it.
Keyboard: click inside the panel first. ↑↓ pitch, ←→ roll, W/S climb, A/D yaw, R/F gimbal, Q/E zoom, Z/X/C gimbal presets, Space holds position, Esc drops every local input and releases control. Keys act only while the panel holds the lease and has focus. Held flight keys ramp up to the stick authority over the time set in Settings → General (1 second by default) and ramp back down on release, so a tap nudges instead of jerking; the loop sends one neutral frame once the ramp reaches zero. Typing in any text field never flies the aircraft. The full list is under Terminal → Settings → Keyboard.
Controller settings
Section titled “Controller settings”Terminal → Settings… (⌘,) has a General section (appearance, attitude indicator colours, keyboard ramp) and a Controller section that binds a USB gamepad. Bindings are locked while you hold a control lease: rebind on the ground, never in flight. A non-standard device such as a radio starts with no flight axes bound. First ignore any channel that moves on its own (tilt or motion sensors) by clicking it in the monitor. Then, for each function, press Listen and sweep one control through its travel; Terminal offers the channel it saw, shows its live value, and binds only when you press Bind. Flight axes accept only joystick axes, and any channel that only reported 0 or 1 is refused. Check the sign next to each row (forward, right, up and clockwise must read positive) and toggle invert where it does not. Zoom is a rate axis: a centred axis sends nothing and a held deflection zooms for as long as it is held. Gimbal pitch is a position axis: the dial’s travel is the camera angle from −90° to +30°, and it takes effect once the dial crosses the camera’s current angle. Any channel can back any function: radios in joystick mode report channels above eight as analog buttons, and Listen captures those too. The three gimbal presets bind to a switch position or a button; press Listen and move the switch to the position that should fire, so a three-position switch can carry all three.
Stick authority scales the provider’s stick limits for every local source, including the keyboard and on-screen sticks; start low for a first flight. Deadzone and expo shape the response. The monitor at the bottom shows the raw values the browser reports. Settings live in this browser only; a controller is accepted in flight only after it has been neutral once, and only while the panel holds the lease.
When an action is refused
Section titled “When an action is refused”Read the reason shown by the command. Common causes include missing access, observe mode, an unsupported command, an offline provider, another operator’s lease, or replay mode. The Events panel shows command outcomes. Avoid retrying repeatedly without understanding the state; an accepted request and a completed physical action are different stages.
Auto-operator uses its own principal and has an additional provider/serial filter. In staging that filter covers only the virtual SIM-STG-* fleet, regardless of a real aircraft’s callsign or battery level.