kshana
v0.25.0
Published
Open, reproducible PNT-resilience simulator with quantum-sensor performance models
Maintainers
Readme
Kshana is an open, reproducible PNT-resilience simulator with quantum-sensor
performance models — positioning, navigation, and timing. This package is the Rust
engine compiled to WebAssembly: it runs entirely client-side — pass a scenario TOML
string in, get a reproducible JSON result and an SVG chart back, with nothing uploaded.
Every result is reproducible from scenario + seed + engine version, and every sensor
parameter is traceable to a published source.
Validated, not asserted. 666/666 AIAA SGP4 vectors to 4.12 mm · Cowell force model 0.08 m vs Orekit 12.2 · Galileo 0.61 m / Swarm-A 0.10 m vs real ESA precise ephemerides · GCRS→ITRS bit-for-bit vs SOFA/ERFA · ML metrics exact vs scikit-learn · 56 of 102 capabilities validated against independent external oracles; 42 honestly labelled Modelled, 4 partner-owned.
Validated against external oracles — every row CI-gated
| | Capability | Result | External oracle |
|---|---|---|---|
| ✅ | SGP4/SDP4 propagation | 666/666 vectors, worst 4.12 mm | AIAA 2006-6753 (Vallado) + independent sgp4 crate |
| ✅ | Numerical Cowell force model | 0.08 m / 24 h, 275 epochs | Orekit 12.2 DormandPrince853 (CS GROUP) |
| ✅ | Orbit fit vs precise ephemeris | Galileo 0.61 m · Swarm-A 0.10 m | ESA/ESOC SP3 precise orbits |
| ✅ | GCRS→ITRS frame chain | bit-for-bit vs SOFA; ≤ 0.86 m vs SPICE | ERFA/SOFA + ANISE (pure-Rust SPICE) |
| ✅ | Allan deviations | reproduce reference deviations | NIST SP 1065 + Stable32 on a real Cs clock |
| ✅ | GNSS DOP · ML detector metrics | to 1e-6 · to 1e-9 | gnss_lib_py · scikit-learn |
Install
npm install kshanaUsage
The package is an ES module with a WebAssembly payload. Initialise it once, then call the engine synchronously:
import init, { run, run_full, chart_svg, version } from "kshana";
await init(); // load the wasm
const toml = `kind = "clock_holdover"\n# ... scenario fields ...`;
const result = JSON.parse(run(toml));
console.log(version(), result.classical.fom.timing_p95_ns);
// JSON result + SVG chart in one call:
const { json, svg } = run_full(toml);Beyond run / run_full / version, the module also exports summary (the one-line
result string), list_kinds / error_kind (introspection), and
encode_permalink / decode_permalink — the shareable-URL codec the
playground uses to round-trip a whole scenario through the
address-bar fragment.
Every figure of merit is labelled validated or modelled; optical-clock figures are space goals on ground hardware (no strontium optical clock has flown). Maturity is not uniform across domains — Earth PNT is real-data validated; deep-space / Mars navigation is simulation-validated; real-mission deep-space OD is on the roadmap.
Learn more
- Full README & validation matrix → https://github.com/AshfordeOU/kshana
- Live playground → https://kshana.dev
- Capabilities → docs/CAPABILITY.md
- Validation & provenance → docs/VALIDATION.md · docs/PROVENANCE.md
Licence
Free and open source under the GNU AGPL-3.0-only. A commercial licence is available from Ashforde OÜ for proprietary/closed integration — see LICENSING.md. Professionally developed and maintained by Ashforde OÜ; commercial support, integration, and proprietary extensions available.
