You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Temporary gonogo fork — not the official Telemachus Reborn.
This fork exists only to carry a few extra data keys that gonogo needs while the matching upstream PRs await review, and it will be retired once upstream merges them. For the real, maintained mod, use TeleIO/Telemachus-1. Releases here are tagged …-gonogo and are intended for manual install by gonogo users only.
A KSP plugin that exposes live telemetry data over HTTP and WebSocket, letting you build external dashboards, flight instruments, and ground control applications for your vessels.
Features
HTTP REST + WebSocket API on port 8085 — poll or stream any telemetry value in real time
Camera streaming — capture in-game camera views as JPEG snapshots over HTTP
Built-in web UI — flight controls, navigation, orbital data, map, console, SmartASS, and more, accessible from any browser on your network
Flight control — throttle, staging, SAS modes, RCS, action groups, and fly-by-wire attitude control
Delta-V readouts — per-stage and total delta-V, TWR, ISP, burn time, and mass breakdown
Maneuver node management — create, update, and delete maneuver nodes via the API
N-body orbit analysis — mean elements, flight plan burns, recurrence
In testing
All mod integrations are soft dependencies via reflection — no mod DLLs are required at build time. Query a.mods at runtime to check which mods are detected, or a.physicsMode to check if Principia's N-body integrator is active ("n_body" vs "patched_conics").
Installation
Download the latest GameData.zip from the Releases page.
Extract and merge the GameData/ folder into your KSP installation directory.
Launch KSP. The Telemachus server starts automatically when a vessel with a Telemachus antenna is active, or when running in partless mode.
Open a browser and navigate to http://localhost:8085/ to access the built-in UI.
The default port is 8085 and binds to 0.0.0.0 (all interfaces). Both can be changed in the plugin configuration file.
Cross-origin access (CORS)
By default Telemachus sends no CORS headers, so browsers will block any JavaScript on a different origin (a different host, port, or scheme) from reading the responses. That covers the bundled web UI fine — it's served from the same origin as the API — but a dashboard hosted elsewhere (another machine on the LAN, a deployed static site, a dev server on a different port) needs an explicit opt-in.
List the origins permitted to read cross-origin in ALLOWED_ORIGINS in PluginData/Telemachus/config.xml:
Comma-separated scheme://host[:port] entries — match exactly what the browser sends in the Origin header. Trailing slashes and empty entries are stripped. Empty list (the default) preserves the historical behaviour of never sending CORS headers, so existing setups are untouched.
When a matching Origin arrives, Telemachus echoes it back in Access-Control-Allow-Origin (with Vary: Origin) rather than wildcarding, and responds 204 to the standard OPTIONS preflight. Non-allowlisted origins get no CORS header and the browser blocks the response by default.
API overview
Endpoints
Endpoint
Protocol
Purpose
/telemachus/datalink
HTTP GET/POST
Poll telemetry values
/datalink
WebSocket
Stream telemetry in real time
/telemachus/cameras
HTTP GET
List available cameras
/telemachus/cameras/<name>
HTTP GET
Capture a camera frame (JPEG)
/telemachus/*
HTTP GET
Built-in web UI (static files)
HTTP polling
Query parameters use key=value format, where the key is an arbitrary label and the value is the API string:
GET /telemachus/datalink?alt=v.altitude&lat=v.lat&lon=v.long
{ "alt": 12345.6, "lat": -0.0974, "lon": 285.4 }
Multiple values in a single request:
GET /telemachus/datalink?alt=v.altitude&pe=o.PeA&ap=o.ApA&throttle=f.throttle
You can also POST a JSON body instead of query parameters:
The server pushes a JSON object with current values at the requested interval (milliseconds).
Command
Description
"+"
Subscribe to API keys (array)
"-"
Unsubscribe from API keys (array)
"run"
One-shot evaluation — included in the next update only (array)
"rate"
Set update interval in milliseconds (integer, default 500)
"binary"
Subscribe to binary stream — values sent as big-endian float32 (array)
Binary packet format: byte 0 is 0x01 (marker), followed by 4-byte IEEE 754 big-endian floats in subscription order. Sent alongside the JSON text frame each tick.
Error handling
Unknown API keys are returned in an "unknown" array. Exceptions are returned in an "errors" object:
Some API keys accept parameters in bracket notation:
r.resource[ElectricCharge] — resource by name
b.name[3] — celestial body by index
o.orbitalSpeedAt[1200.0] — speed at orbit time
mj.surface[90,45] — MechJeb heading + pitch
v.setPitchYawRollXYZ[0,0,0,1,0,0] — FBW attitude + translation
Scaling for embedded controllers
For integer-only boards (Raspberry Pi Pico, MicroBlocks, etc.) that can't handle floating-point JSON, both /api/ and /telemachus/datalink support scaling query parameters.
Input scaling — map an integer range to 0.0–1.0 before the API processes it:
GET /api/f.setThrottle?args=512&scale=0,1023 → throttle set to ~0.5
Output scaling — round to N decimals, optionally shift to integer:
GET /api/v.altitude?precision=2 → 18345.67
GET /api/v.altitude?precision=2&int=true → 1834567 (divide by 100 on board)
On the batch endpoint (/telemachus/datalink), use _scale, _precision, and _int as global defaults:
GET /telemachus/datalink?alt=v.altitude&pe=o.PeA&_precision=1&_int=true
→ { "alt": 183457, "pe": 750001 }
Or override per-key with pipe syntax in the value string:
GET /telemachus/datalink?alt=v.altitude|precision:2|int&t=f.setThrottle[512]|scale:0,1023
→ { "alt": 1834567, "t": 1 }
Per-key pipe modifiers take precedence over global _ parameters.
Modifier
Where
Effect
scale=min,max / `
scale:min,max`
Input
precision=N / `
precision:N`
Output
int=true / `
int`
Output
OpenAPI spec
A machine-readable OpenAPI 3.1 spec is auto-generated from the source code. It covers all endpoints below, including mod-specific ones (tagged with x-requires-mod). (The OpenAPI spec and schema generation pipeline are not yet released — in testing.)
API reference
v.* — Vessel
Position & altitude
Key
Description
Unit
v.altitude
Altitude above sea level
m
v.heightFromTerrain
Height above terrain
m
v.heightFromSurface
Height above surface
m
v.terrainHeight
Terrain altitude
m
v.pqsAltitude
PQS terrain altitude
m
v.lat
Latitude
deg
v.long
Longitude (normalized -180 to 180)
deg
Velocity
Key
Description
Unit
v.surfaceVelocity
Surface velocity magnitude
m/s
v.surfaceVelocityx
Surface velocity X
m/s
v.surfaceVelocityy
Surface velocity Y
m/s
v.surfaceVelocityz
Surface velocity Z
m/s
v.orbitalVelocity
Orbital velocity magnitude
m/s
v.orbitalVelocityx
Orbital velocity X
m/s
v.orbitalVelocityy
Orbital velocity Y
m/s
v.orbitalVelocityz
Orbital velocity Z
m/s
v.surfaceSpeed
Horizontal surface speed
m/s
v.verticalSpeed
Vertical speed
m/s
v.speed
Total speed
m/s
v.srfSpeed
Surface speed (direct)
m/s
v.obtSpeed
Orbital speed (direct)
m/s
v.angularVelocity
Angular velocity magnitude
rad/s
v.angularVelocityx/y/z
Angular velocity components
rad/s
Acceleration & forces
Key
Description
Unit
v.geeForce
G-force (averaged)
G
v.geeForceImmediate
G-force (instantaneous)
G
v.acceleration
Total acceleration magnitude
m/s^2
v.accelerationx/y/z
Acceleration components
m/s^2
v.specificAcceleration
Thrust / mass
m/s^2
v.perturbation
Orbital perturbation magnitude
m/s^2
v.perturbationx/y/z
Perturbation components
m/s^2
Mass & inertia
Key
Description
Unit
v.mass
Total vessel mass
kg
v.angularMomentum
Angular momentum magnitude
—
v.angularMomentumx/y/z
Angular momentum components
—
v.momentOfInertia
Moment of inertia
Vector3d
v.CoM
Center of mass position
Vector3d
Atmosphere & environment
Key
Description
Unit
v.atmosphericDensity
Air density
kg/m^3
v.dynamicPressurekPa
Dynamic pressure
kPa
v.dynamicPressure
Dynamic pressure
Pa
v.staticPressurekPa
Static pressure
kPa
v.staticPressure
Static pressure (FlightGlobals)
kPa
v.atmosphericPressurePa
Atmospheric pressure
Pa
v.atmosphericPressure
Atmospheric pressure
atm
v.atmosphericTemperature
Air temperature
K
v.externalTemperature
External temperature
K
v.mach
Mach number
—
v.speedOfSound
Speed of sound
m/s
v.indicatedAirSpeed
Indicated airspeed
m/s
v.directSunlight
In direct sunlight
bool
v.distanceToSun
Distance to sun
m
v.solarFlux
Solar flux
—
Situation & state
Key
Description
Type
v.name
Vessel name
string
v.body
Celestial body name
string
v.situation
Situation enum
string
v.situationString
Human-readable situation
string
v.vesselType
Vessel type
string
v.landed
Is landed
bool
v.splashed
Is splashed
bool
v.landedOrSplashed
Is landed or splashed
bool
v.landedAt
Biome / location name
string
v.isEVA
Is EVA
bool
v.isActiveVessel
Is active vessel
bool
v.isControllable
Is controllable
bool
v.isCommandable
Is commandable
bool
v.loaded
Vessel is loaded
bool
v.packed
Vessel is on rails
bool
v.currentStage
Current stage number
int
v.missionTime
Mission elapsed time
s
v.missionTimeString
Formatted MET
string
v.launchTime
Launch time (UT)
s
v.crewCount
Number of crew
int
v.crewCapacity
Crew capacity
int
v.crew
List of crew names
string[]
v.angleToPrograde
Angle to orbital prograde
deg
Action group state (read)
Key
Description
v.sasValue
SAS state
v.rcsValue
RCS state
v.lightValue
Lights state
v.brakeValue
Brakes state
v.gearValue
Gear state
v.abortValue
Abort state
v.precisionControlValue
Precision mode state
v.ag1Value … v.ag10Value
Custom action group states
Vessel topology
Structural snapshot of the active vessel — parts, parent links, modules, and
assembled-space positions. Cached and event-invalidated, so v.topology only
recomputes when staging / docking / decoupling / part-death events fire.
Subscribe to v.topologySeq and refetch v.topology when the seq changes
rather than streaming the topology key directly.
Key
Description
Type
v.topologySeq
Monotonic counter — bumps on every vessel structural change
int
v.topology
{ topologySeq, rootFlightId, parts: [...] } (see below)
object
Each entry in parts[]:
Field
Description
flightId
Stable runtime id within a flight — use for live-lookup keys (r.resourceFor, therm.part)
persistentId
Cross-flight id (survives save/load)
parentFlightId
flightId of the parent part, or null for the root
name
Internal part name (e.g. liquidEngine2)
title
Display name (e.g. "LV-T45 'Swivel' Liquid Fuel Engine")
manufacturer
Display manufacturer
category
PartCategories enum as string
inverseStage
Stage at which this part separates
crewCapacity
Max crew
maxTemp
Internal thermal limit (K)
crashTolerance
Impact tolerance
dryMass
Part.mass
orgPos
[x, y, z] — vessel-local, as-assembled
bounds.size
{ x, y, z } — prefab renderer bounds in metres
bounds.center
{ x, y, z } — prefab renderer bounds centre offset in metres
up
[x, y, z] — part-local up vector in assembled-space orientation
fuelLineTarget
flightId of the fuel line's destination part; null for non-fuel-line parts
modules
Raw PartModule.moduleName strings (passthrough, no filtering)
Part behavioural state
Live deployable / activation state for a single part, keyed by flightID
(same id v.topology emits). Intended for UI that reflects whether a panel
is extended, an engine is firing, a parachute is armed, etc. — not for
high-frequency telemetry.
Key
Description
Type
v.partState[flightId]
{ seq, modules: [...] } — see below
object
The response carries a vessel-level seq that bumps whenever the cache is
invalidated. Consumers can dedup unchanged pushes by comparing seq rather
than walking the modules array.
Each entry in modules[] has a type (semantic, not the raw KSP module
name) and a state from the standard vocabulary. Type-specific extras
(e.g. tracking on solar panels, flameout on engines) are included
inline when present.
Supported semantic types and their KSP-module sources:
Invalidation hooks: onStageActivate, onVesselWasModified, onPartCouple,
onPartUndock, onPartDie, onPartActionUIDismiss. A 10s backstop covers
player interactions that don't fire a global event (right-click → Extend
Solar Panel, the G key for landing gear, custom action groups). Worst-case
staleness is therefore ~10 seconds for non-event-triggered transitions —
mid-animation transitions like "deploying → extended" may also lag up to
that bound if no other event fires in the interim.
Flat per-action listing of which parts are bound to each action group on the active vessel. One row per (action, group) pair; unbound actions are omitted.
Fly-by-wire (FBW)
Key
Description
v.setFbW[1]
Action: enable FBW (0 to disable)
v.setPitch[float]
Action: set pitch (-1 to 1)
v.setYaw[float]
Action: set yaw (-1 to 1)
v.setRoll[float]
Action: set roll (-1 to 1)
v.setAttitude[pitch,yaw,roll]
Action: set rotation
v.setTranslation[x,y,z]
Action: set RCS translation
v.setPitchYawRollXYZ[p,y,r,x,y,z]
Action: set all axes at once
t.* — Time & warp
Key
Description
t.universalTime
Current UT (seconds)
t.deltaTime
Frame delta time
t.currentRate
Current warp rate multiplier
t.currentRateIndex
Current warp rate index
t.warpMode
HIGH or LOW
t.maxPhysicsRate
Max physics warp rate
t.isPaused
Game is paused
t.timeWarp[index]
Action: set time warp rate
t.pause
Action: pause game
t.unpause
Action: unpause game
tar.* — Target
Target info
Key
Description
tar.name
Target name
tar.type
Target type
tar.distance
Distance to target (m)
tar.o.relativeVelocity
Relative velocity (m/s)
tar.o.velocity
Target velocity (m/s)
tar.o.PeA / tar.o.ApA
Target apsides (m)
tar.o.inclination
Target inclination (deg)
tar.o.eccentricity
Target eccentricity
tar.o.period
Target period (s)
tar.o.sma / tar.o.lan
Target SMA / LAN
tar.o.trueAnomaly
Target true anomaly (deg)
tar.o.orbitingBody
Target reference body
tar.o.orbitPatches
Target orbit patches
tar.availableVessels
Array of targetable vessels — [{ index, name, type, situation, body, position }, …]
tar.setTargetBody[index]
Action: set target to body
tar.setTargetVessel[index]
Action: set target to vessel (use tar.availableVessels to get index)
tar.switchVessel[index]
Action: fly to vessel by index — same as Tracking Station "Fly"
tar.clearTarget
Action: clear target
dock.* — Docking alignment
Key
Description
Unit
dock.ax
Docking X angle
deg
dock.ay
Docking Y angle / relative pitch
deg
dock.az
Docking Z angle
deg
dock.x
Target X distance
m
dock.y
Target Y distance
m
dv.* — Delta-V
Totals
Key
Description
dv.ready
Calculator is ready
dv.totalDVVac
Total delta-V vacuum (m/s)
dv.totalDVASL
Total delta-V at sea level (m/s)
dv.totalDVActual
Total delta-V current atmosphere (m/s)
dv.totalBurnTime
Total burn time (s)
dv.stageCount
Number of stages
dv.stages
All stages (complex object)
Per-stage (indexed by stage number)
Key
Description
dv.stageDVVac[n]
Stage delta-V vacuum (m/s)
dv.stageDVASL[n]
Stage delta-V ASL (m/s)
dv.stageDVActual[n]
Stage delta-V actual (m/s)
dv.stageTWRVac[n]
Stage TWR vacuum
dv.stageTWRASL[n]
Stage TWR ASL
dv.stageTWRActual[n]
Stage TWR actual
dv.stageISPVac[n]
Stage ISP vacuum (s)
dv.stageISPASL[n]
Stage ISP ASL (s)
dv.stageISPActual[n]
Stage ISP actual (s)
dv.stageThrustVac[n]
Stage thrust vacuum (kN)
dv.stageThrustASL[n]
Stage thrust ASL (kN)
dv.stageThrustActual[n]
Stage thrust actual (kN)
dv.stageBurnTime[n]
Stage burn time (s)
dv.stageMass[n]
Stage total mass (kg)
dv.stageDryMass[n]
Stage dry mass (kg)
dv.stageFuelMass[n]
Stage fuel mass (kg)
dv.stageStartMass[n]
Stage start mass (kg)
dv.stageEndMass[n]
Stage end mass (kg)
b.* — Celestial bodies
All body queries take a body index parameter: b.name[0] (Kerbol), b.name[1] (Kerbin), etc.
Properties
Key
Description
b.number
Total number of bodies
b.name[i]
Body name
b.description[i]
Body description
b.radius[i]
Radius (m)
b.mass[i]
Mass (kg)
b.geeASL[i]
Surface gravity (G)
b.soi[i]
Sphere of influence (m)
b.hillSphere[i]
Hill sphere radius (m)
b.rotationPeriod[i]
Rotation period (s)
b.rotationAngle[i]
Current rotation angle (deg)
b.tidallyLocked[i]
Tidally locked (bool)
b.atmosphere[i]
Has atmosphere (bool)
b.maxAtmosphere[i]
Atmosphere depth (m)
b.atmosphereContainsOxygen[i]
Has oxygen (bool)
b.ocean[i]
Has ocean (bool)
b.referenceBody[i]
Reference body name
b.orbitingBodies[i]
Names of orbiting bodies
Body orbital parameters
Key
Description
b.o.gravParameter[i]
Gravitational parameter
b.o.PeA[i] / b.o.ApA[i]
Apsides (m)
b.o.inclination[i]
Inclination (deg)
b.o.eccentricity[i]
Eccentricity
b.o.period[i]
Orbital period (s)
b.o.sma[i] / b.o.lan[i]
SMA / LAN
b.o.trueAnomaly[i]
True anomaly (deg)
b.o.phaseAngle[i]
Phase angle to vessel (deg)
b.o.truePositionAtUT[i,ut]
Position at UT (Vector3d)
r.* — Resources
Key
Description
r.resource[name]
Resource amount across all parts
r.resourceMax[name]
Resource max capacity
r.resourceCurrent[name]
Resource amount in current stage
r.resourceCurrentMax[name]
Resource max in current stage
r.resourceNameList
List of all resource names
r.resourceFor[flightId]
Live resources for a single part — { resourceName: { amount, maxAmount }, … }; empty object if the flightId isn't found
Snapshot keys captured from GameEvents — readable from any scene (including Space Center / Tracking Station after the flight) so a dashboard can surface a "last outcome" panel.
PRELAUNCH recovery (the cheap launchpad refund path) doesn't fire onVesselRecoveryProcessingComplete so it produces no snapshot. Flight-scene recoveries and the post-landing summary dialog both work.
m.* — Map view
Key
Description
m.mapIsEnabled
Map view is active
m.toggleMapView
Action: toggle map view
m.enterMapView
Action: enter map view
m.exitMapView
Action: exit map view
mj.* — MechJeb (requires MechJeb)
Key
Description
mj.smartassoff
Action: disable SmartASS
mj.node
Action: point to maneuver node
mj.prograde / mj.retrograde
Action: orbital prograde/retrograde
mj.normalplus / mj.normalminus
Action: normal/anti-normal
mj.radialplus / mj.radialminus
Action: radial in/out
mj.targetplus / mj.targetminus
Action: toward/away from target
mj.relativeplus / mj.relativeminus
Action: along/against relative velocity
mj.parallelplus / mj.parallelminus
Action: parallel/anti-parallel to target
mj.surface[heading,pitch]
Action: surface orientation
mj.surface2[heading,pitch,roll]
Action: surface with roll
mj.stagingInfo
Staging simulation data
p.* — Pause state
Key
Value
Meaning
p.paused
0
Flight scene OK
1
Paused
2
No power
3
Off
4
Antenna not found
5
Not in flight scene
a.* — API meta
Key
Description
a.version
Telemachus version string
a.ip
Server IP addresses
a.api
Full API listing
a.apiSubSet[key1,key2,...]
Subset of API listing
a.mods
Detected mod integrations (object)
a.physicsMode
"patched_conics" or "n_body" (Principia)
a.schema
Full API schema as JSON
tech.* — Tech tree
Callable from any game scene.
Key
Description
tech.nodes
Full tech tree — every node with its title, description, science cost, prerequisites, state (Available / Researchable / Unavailable), and the parts it unlocks. Costs include both nominal and strategy-modified effective values. See the OpenAPI schema for field detail.
tech.unlockedIds
All currently unlocked node IDs
tech.unlockedPartCount
Count of unlocked parts
tech.affordable
Unpurchased nodes affordable right now (with cost / scienceRequired)
tech.unlock[nodeId]
Action: purchase a node by ID; returns 0 on success or an error string
kc.* — KSC / Space Center
Key
Description
kc.scene
Current scene name (SPACECENTER, FLIGHT, EDITOR, or TRACKSTATION)
kc.facilityLevels
All Space Center facilities — current level, max level, upgrade cost (nominal and strategy-modified), and the multi-line descriptions KSP shows in its upgrade dialog
kc.launchSite
Active launch site (LaunchPad / Runway)
kc.padOccupied / kc.padVesselTitle
Pad state
kc.partsAvailable
All purchasable parts with their availability + cost
kc.savedShips
Saved craft per facility — name, part count, mass, rollout cost (nominal and strategy-modified), and any missing-part references
kc.crewRoster
Full kerbal roster — name, stats, experience, and current assignment
kc.upgradeFacility[facilityName]
Action: start a facility upgrade; deducts funds
sci.* — Science
Key
Description
sci.count / sci.dataAmount
Science container summary
sci.canRecoverTotal / sci.canTransmitTotal
Aggregate recoverable / transmittable
sci.instruments
All ModuleScienceExperiment instances on the active vessel
Contract IDs are emitted as strings (KSP-generated long values frequently exceed JS Number.MAX_SAFE_INTEGER). Action handlers accept both string and number forms.
Key
Description
contracts.active
Active contracts; rows include id, title, agent, parameters (with parameterType + typed fields per parameter)
contracts.offered
Offered (un-accepted) contracts
contracts.completedRecent
Recently-completed contracts
contracts.accept[id]
Action: accept an offered contract
contracts.decline[id]
Action: decline an offered contract
contracts.cancel[id]
Action: cancel an active contract
ksp.* — Scene & vessel verbs
All AlwaysEvaluable action keys for launch / recovery / revert / scene transitions. Each refuses internally when the underlying state isn't ready.
Action: load a saved craft to the chosen pad. Refuses outside SC/Editor or if an active vessel exists. Crew names delimited by ; (since , is already an arg separator).
ksp.recover
Action: recover active vessel (PRELAUNCH / LANDED / SPLASHED only)
ksp.revertToLaunch
Action: revert to the post-init launch snapshot (Flight only)
When Principia is installed, KSP's patched-conic orbit propagator is replaced with an N-body integrator. Stock o.* values become osculating (instantaneous Keplerian) snapshots. Principia's orbit analyser computes mean elements averaged over many orbits — these are available under o.mean.*.
All data is read via reflection from Principia's runtime state. No Principia DLLs are needed at build time, and Principia's (removed) external API is not used.
Detection & status
Key
Description
principia.available
Principia is installed
principia.version
Principia assembly version
principia.active
Principia plugin is running
principia.analysisProgress
Orbit analysis progress (0–1)
principia.missionDuration
Analysis mission duration (s)
Mean orbital elements
These mirror the stock o.* keys but report mean (time-averaged) values from Principia's orbit analyser. Angles are in degrees, distances are altitudes (body radius subtracted).
Key
Description
Unit
o.mean.sma
Mean semi-major axis
m
o.mean.eccentricity
Mean eccentricity
—
o.mean.inclination
Mean inclination
deg
o.mean.lan
Mean longitude of ascending node
deg
o.mean.argumentOfPeriapsis
Mean argument of periapsis
deg
o.mean.PeA
Mean periapsis altitude
m
o.mean.ApA
Mean apoapsis altitude
m
Element ranges (min/max from N-body integration)
Each returns { "min": number, "max": number }.
Key
Description
o.mean.smaRange
SMA range
o.mean.eccentricityRange
Eccentricity range
o.mean.inclinationRange
Inclination range (deg)
o.mean.PeARange
Periapsis altitude range (m)
o.mean.ApARange
Apoapsis altitude range (m)
Periods, precession & recurrence
Key
Description
Unit
o.mean.siderealPeriod
Sidereal period
s
o.mean.nodalPeriod
Nodal period
s
o.mean.anomalisticPeriod
Anomalistic period
s
o.mean.nodalPrecession
Nodal precession rate
rad/s
o.mean.recurrence
Orbit recurrence info (object)
—
Flight plan
Key
Description
principia.plan.count
Number of planned burns
principia.plan.guidance
Navball guidance active
principia.plan.burns
All planned burns (array of objects)
principia.plan.burn[index]
Single burn by index
principia.analysis
Complete orbit analysis dump (object)
Each burn object contains { tangent, normal, binormal, initial_time, duration } in m/s and seconds.
land.* — Landing prediction (WIP — in testing)
Key
Description
Unit
land.timeToImpact
Estimated seconds to impact
s
land.speedAtImpact
Predicted speed at impact (current thrust)
m/s
land.bestSpeedAtImpact
Predicted speed at impact (max thrust)
m/s
land.suicideBurnCountdown
Seconds until suicide burn start
s
land.predictedLat
Predicted landing latitude
deg
land.predictedLon
Predicted landing longitude
deg
land.predictedAlt
Predicted landing terrain altitude
m
land.slopeAngle
Terrain slope angle under vessel
deg
therm.* — Thermal monitoring (WIP — in testing)
Key
Description
Unit
therm.hottestPartTemp
Hottest part temperature
C
therm.hottestPartTempKelvin
Hottest part temperature
K
therm.hottestPartMaxTemp
Hottest part max temperature
K
therm.hottestPartTempRatio
Hottest part temp ratio (0–1)
—
therm.hottestPartName
Hottest part name
string
therm.hottestEngineTemp
Hottest engine temperature
K
therm.hottestEngineMaxTemp
Hottest engine max temperature
K
therm.hottestEngineTempRatio
Hottest engine temp ratio (0–1)
—
therm.anyEnginesOverheating
Any engine near overheat (>90%)
bool
therm.heatShieldTemp
Heat shield temperature
K
therm.heatShieldTempCelsius
Heat shield temperature
C
therm.heatShieldFlux
Heat shield thermal flux
kW
therm.part[flightId]
Per-part thermal state — { temperature, maxTemperature, temperatureK, maxTemperatureK }; null if the flightId isn't found. Core part temperature only — skin temp not exposed
object
career.* — Career mode
Key
Description
career.funds
Available funds
career.reputation
Current reputation
career.science
Available science points
career.mode
Game mode (CAREER / SCIENCE / SANDBOX)
comm.* — CommNet
Key
Description
comm.connected
CommNet is connected
comm.signalStrength
CommNet signal strength (0–1)
comm.controlState
CommNet control state (0=none, 1=partial, 2=full)
comm.controlStateName
CommNet control state name
comm.signalDelay
CommNet signal delay (s)
strategies.* — Administration Building strategies
Callable from any game scene — the activate / deactivate path replicates KSP's eligibility checks against live state, so the Admin Building dialog does not need to be open.
Key
Description
strategies.all
All career strategies (active and inactive) with title, description, department, current activation state, costs (nominal and strategy-modified), reputation requirements, factor-slider info, and pre-computed canActivate / canDeactivate flags with human-readable blocked reasons
strategies.activate[id, factor]
Action: activate a strategy at the given commitment factor (0–1). Returns 0 on success, error string otherwise.
strategies.deactivate[id]
Action: deactivate an active strategy. Returns 0 on success, error string otherwise.
Building
The project targets .NET Framework 4.7.2 via an SDK-style csproj and builds with the .NET SDK. Unity and KSP reference DLLs are pre-committed to references/ — no KSP installation is required to build.
Pull requests: please follow the conventional commits format (feat:, fix:, docs:, etc.). A commit-msg hook is installed automatically when you enter the Nix dev shell.