Rehearse the minute GNSS goes dark
Kshana replays jamming, spoofing and clock holdover when GNSS (Global Navigation Satellite
System) signals fail, and tells you how long a system keeps time and position inside its
budget, and which clock or sensor buys the most margin. This is the Rust crate: the engine as a library, and the kshana command. Every run is
reproducible bit for bit from the scenario, the seed and the engine version.
Try it first with nothing to install: Kshana Studio runs the whole engine in your browser, compiled to WebAssembly, and uploads nothing.
Evidence
123 of 249 capabilities validated against independent external oracles; 122 honestly labelled Modelled, 4 partner-owned. Each capability carries one label in a machine-checked ledger: VALIDATED (an independent external oracle agrees: real data, an independent implementation or published reference vectors), MODELLED (internally consistent, and said out loud) or PARTNER (a hardware partner owns it). Among the checks: all 666 SGP4 (Simplified General Perturbations 4) vectors of AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 to 4.12 mm, and the Cowell force model to 0.08 m against Orekit 12.2.
Install
Usage — library
The example is a complete program: it carries its own scenario, written in TOML (Tom's
Obvious, Minimal Language), so it runs as src/main.rs of a fresh cargo new project
after cargo add kshana, with nothing else on disk.
use api;
out.json is the result document in JSON (JavaScript Object Notation), out.svg the
chart as SVG (Scalable Vector Graphics) and out.csv, for the kinds that publish a table,
that table as CSV (comma-separated values).
Usage — CLI
A registry install has no scenarios/ directory, so the CLI carries the reference
scenarios with it; kshana example lists them, and names the few it leaves out with the
reason (each reads data shipped with the repository only, or follows a preset a release
may withhold).
A run dispatches on the scenario's kind and writes <scenario>.result.json,
.chart.svg, .report.html (a printable report page in HTML, HyperText Markup Language)
and .report.json (the same report, machine-readable), plus .table.csv for the kinds
that publish a table, next to the scenario file. --export adds exchange files: CZML
(the Cesium Language) and KML (Keyhole Markup Language) for globe viewers, GeoJSON for
maps, STK (Systems Tool Kit) ephemeris files, and SigMF (Signal Metadata Format)
recordings for the spectrum kind. --animate adds an SVG, HTML or frame-by-frame
animation.
From a clone of the repository the same commands take the files under scenarios/
directly, including the multi-scenario study
(kshana --study scenarios/quantum-pnt-demonstrator.suite.toml) and lunar-llr-datum,
the one scenario that reads real laser-ranging data shipped with the repository only.
Every capability in the verification matrix is labelled validated (checked against an independent external oracle), modelled or partner-owned; optical-clock figures are space goals on ground hardware (no strontium optical clock has flown). Maturity is not uniform across domains — Earth PNT is validated against real data; deep-space and Mars navigation is modelled, with only its building blocks (light time, planet positions) validated against external oracles; real-mission deep-space OD (orbit determination) is on the roadmap.
Capabilities
The engine has 75 scenario kinds; kshana kinds lists them with their fields.
- Spectrum: how a jammer takes the GNSS L band, band by band.
- Clocks and timing: holdover against a threshold, time transfer, and telecom holdover against the masks of the International Telecommunication Union's standardization sector (ITU-T).
- Constellations around any body: coverage, dilution of precision and availability around the Earth, the Moon or Mars, and the solar system at one epoch.
- Low-Earth-orbit navigation: signal, pass and link, navigation message, and a fused fix, stage by stage.
- Campaigns: a chained mission, a sweep or a Monte Carlo ensemble in one scenario.
- Reports, animation and exports: every figure with its unit and label; an animated drawing of a run; SP3 (Standard Product 3), CCSDS (Consultative Committee for Space Data Systems) orbit messages, CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK (Systems Tool Kit) and SigMF (Signal Metadata Format) files.
Architecture
The same scenario file gives the same bytes on every surface. MCP is the Model Context
Protocol: kshana-mcp lets an AI (artificial
intelligence) assistant run the engine.
Research
Five papers on arXiv are built on the open engine, each with the command behind it: arXiv:2606.22054 (the optimism gap of interference detectors), arXiv:2606.24210 (a conditional timing protection level), arXiv:2607.05415 (how stable a PNT resilience score is), arXiv:2607.02566 (lunar surface station observability with very-long-baseline interferometry) and arXiv:2607.06212 (lunar south-polar geometry and surface beacons). See Research.
Editions
The whole engine is free under the AGPL-3.0. Kshana Pro, a proprietary overlay that depends on the open engine and never forks it, and custom studies are available under contract from Ashforde® OÜ: contact@ashforde.org. There are no prices; see docs/PRO.md.
Learn more
- The full README → https://github.com/AshfordeOU/kshana
- Kshana Studio (the engine in your browser, as WebAssembly) → https://kshana.dev
- Capabilities → docs/CAPABILITY.md
- Validation and provenance → docs/VALIDATION.md · docs/PROVENANCE.md
- Verification matrix → docs/VERIFICATION-MATRIX.md
- Cite → CITATION.cff · DOI 10.5281/zenodo.20528627
Licence
Free and open source under the GNU AGPL-3.0-only (the GNU Affero General Public License, version 3 only). A commercial licence is available from Ashforde® OÜ (an Estonian private limited company; OÜ = osaühing) for closed integration; see LICENSING.md. Professionally developed and maintained by Ashforde® OÜ.