Prøv i nettleseren
For alle, ingenting å installere. Krever: ingenting.
Motoren kjører lokalt som WebAssembly; ingenting lastes opp.
Maskinoversettelse, ikke gjennomgått av en morsmålsbruker. Engelsk er referansen.
Én Rust-motor for robusthet i GNSS (Global Navigation Satellite System) og PNT (posisjonering, navigasjon og tidssynkronisering): et kommandolinjegrensesnitt (CLI), pakker for Rust, Python og JavaScript, Kshana Studio i nettleseren, en JetBrains IDE-plugin (integrert utviklingsmiljø) og en MCP-server (Model Context Protocol), slik at en KI-assistent (kunstig intelligens) kjører den validerte motoren i stedet for å gjette matematikken. Åpen kildekode under AGPL-3.0 (GNU Affero General Public License, versjon 3) eller en kommersiell lisens.
The recorded session plays here with JavaScript.
Generert fra manifestene i repositoriet og kryssjekket mot README-filene, slik at hver kommando stemmer med v0.40.0. kshana-mcp gir KI-assistenten din den samme motoren: et scenario i TOML (Tom's Obvious, Minimal Language) inn, JSON (JavaScript Object Notation) og CSV (kommaseparerte verdier) ut.
For alle, ingenting å installere.
Motoren kjører lokalt som WebAssembly; ingenting lastes opp.
For ingeniører som vil ha kommandoen kshana.
Kontroller den deretterkshana --version
For analytikere og notatbøker.
Kontroller den deretterpython -c "import kshana; print(kshana.version())"
For web- og Node.js-utviklere.
Kontroller den deretternpm ls kshana
For alle som bruker en assistent med MCP-støtte.
Kontroller den derettercargo install --list | grep kshana-mcp
Registernavn io.github.ashfordeOU/kshana-mcp. Registrer den hos klienten din, fra README-filen til kshana-mcp:
{
"mcpServers": {
"kshana": {
"command": "/Users/you/.cargo/bin/kshana-mcp",
"env": { "KSHANA_MCP_IQ_DIR": "/Users/you/iq" }
}
}
}{
"mcpServers": {
"kshana": {
"command": "/Users/you/.cargo/bin/kshana-mcp",
"args": [],
"env": {}
}
}
}Uten Rust-verktøykjede; MCP-serveren i en container.
Kontroller den deretterdocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
For Rust-utviklere som bygger motoren inn i egen programvare.
Kontroller den derettercargo tree --depth 1 | grep kshana
For brukere av IntelliJ, PyCharm og CLion.
Settings → Plugins → Marketplace → søk etter "Kshana" (plugin-ID dev.kshana.ide). Høyreklikk en scenario-.toml og velg Run Kshana Scenario.
Rust-motorAGPL-3.0 eller kommersiell lisensProgramvarestykkliste og byggproveniens for hver utgivelse
Den registrerte økten spilles av her, trinn for trinn.
Samme kjøring i Studio: Motor v0.40.0 · clock-holdover.toml · seed 42Åpne i Kshana StudioRapport
49 verktøy over det offentlige Kshana-API-et (programmeringsgrensesnitt), i det offisielle MCP-registeret som io.github.ashfordeOU/kshana-mcp. Baneeksporter: SP3 (Standard Product 3) og CCSDS (Consultative Committee for Space Data Systems) OMM og OEM (meldinger om banemiddelelementer og efemerider, TEME: True Equator, Mean Equinox-referansesystemet). Registrer den under KI-assistent (MCP-server) eller Docker-image. Dokumentasjon for MCP-serveren
run_scenarioKjør et Kshana-scenario for PNT-robusthet fra en TOML-definisjon og returner kvalitetsmålene. Returnerer det menneskelesbare sammendraget etterfulgt av hele resultat-JSON-en (FoM-er, kurver). Kshana validerer SGP4/SDP4, IAU-referansesystemer, Allan-avvik, GNSS-tilgjengelighet/DOP, ARAIM-beskyttelsesnivåer, GNSS/INS-fusjon og kvantesensormodeller mot publiserte referanser. Alle typer kjøres gjennom dette ene verktøyet, inkludert spectrum (radiofrekvensspektrum og fossefall), solar-system, constellation-design og body-pnt (konstellasjoner rundt et hvilket som helst legeme), campaign (lenkede faser, parametersveip, Monte Carlo-ensembler og sammensatte scenarioer) og navigasjonstypene i lav jordbane leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning og leo-pnt-chain. Innholdet er innebygd: et scenariofelt som navngir en fil avvises, og et scenario er høyst 4 MiB. Kall list_scenario_kinds først for å finne scenariotyper og feltene deres, og list_example_scenarios / get_example_scenario for et komplett kjørbart scenario av en type.
list_scenario_kindsList hver innebygde Kshana-scenariotype med beskrivelse og obligatoriske/valgfrie TOML-felt, som en JSON-tabell. Bruk dette til å finne ut hvilke scenarioer som kan kjøres og hvordan du bygger en gyldig scenario-TOML for run_scenario.
validate_scenarioForhåndskontroll av en Kshana-scenario-TOML: verifiser at den lar seg tolke som TOML og påvis scenariotypen, uten å kjøre den. Returnerer den påviste typen, eller en beskrivende feil for ugyldig TOML. (run_scenario utfører full validering ved å kjøre scenarioet.)
assess_receiver_logVurder tilliten til en ekte GNSS-mottakerlogg: les en u-blox UBX-, RINEX 3- (eventuelt med kringkastet navigasjon, som legger til motorens egen posisjonsbestemmelse, RAIM og en klokkestøttet overvåker), Android GnssLogger- eller NMEA-logg, kjør tillitsovervåkerne (fall i bærer-til-støy-tetthet, AGC, jamming-indikator, tap av lås, posisjonssprang, RAIM, klokke) mot en kalibreringsgrunnlinje, og returner når og hvorfor mottakeren sluttet å være til å stole på. Valgfrie [[events]] med starttidspunkter og predikerte C/N0-fall skåres mot toleranser oppgitt i scenarioet: påvist, sent eller uteblitt, og enig eller uenig. Returnerer sammendraget og hele resultat-JSON-en (diagram og CSV på forespørsel; CSV-en fra en fartøykjøring begynner med en #-kommentarlinje med den veiledende erklæringen, som CSV-lesere hopper over med kommentarvalget sitt). Loggens bytes legges innebygd i TOML-en som text eller base64 (bare innebygd, høyst 4 MiB). En [platform] kind = "vessel"-tabell velger de maritime overvåkerne (kinematisk konsistens, kurs mot retning, logg for fart, antennehøyde, spredning i C/N0, tidskonsistens) og legger til en tillitsskår fra 0 til 100 per epoke med overvåkerne som trakk poeng. Hver epoke har også sin satellittgeometri geometry (good; degraded ved få satellitter eller høy PDOP eller HDOP; eller unknown der loggen ikke har satellittelevasjoner eller DOP); hver epoke har en label (good, fair, poor); for et fartøy kommer en geometry-overvåker med i skåren, som bare trekker poeng når geometrien er poor (høyst 15 poeng: degraded, aldri untrusted), og hvert fradrag har en klasse: geometry (himmelen), environment eller inconsistency (angrepslignende). For et strømutdrag med porten bruk assess_vessel_stream. Kun veiledende; evidensnivå MODELLED.
list_example_scenariosList de medfølgende referansescenarioene som JSON: count, og scenarios, en tabell med name, kind og about (den første setningen i filens egen toppkommentar). Hvert av dem er et komplett scenario som kjører som det står, så dette er den raskeste veien til en gyldig TOML for en type: velg et navn, hent det med get_example_scenario, rediger det og kjør det. Oppgi kind for å liste bare eksemplene av én type (for eksempel spectrum, solar-system, constellation-design, campaign, leo-signal, leo-pass, leo-navmsg, leo-pvt).
get_example_scenarioReturner TOML-teksten til ett medfølgende referansescenario, byte for byte filen repositoriet leverer under scenarios/. Gi teksten (redigert eller ikke) til run_scenario, report_scenario, animate_scenario eller et eksportverktøy. Navnene kommer fra list_example_scenarios. Et scenario som finnes i repositoriet, men ikke er medfølgende, avvises med årsaken.
report_scenarioKjør et Kshana-scenario og returner rapporten: et sammendrag for ledelsen, inndataene, hvert resultattall med enhet og merkingen VALIDATED eller MODELLED, hendelsene, funksjonsradene kjøringen brukte, og en reproduserbarhetsregistrering (motorversjon, SHA-256-sammendrag for scenario og resultat, seed, kommandoen som gjenskaper det). format er json (standard; den maskinlesbare report.json) eller html (den utskriftsvennlige, selvstendige report.html med diagrammet innebygd). Rapporten for en kampanje har også sin sveiptabell eller Monte Carlo-fordeling. Rapporten er en ren funksjon av scenarioet: ingen klokke leses.
animate_scenarioKjør et Kshana-scenario og returner tidsserien som en animasjon. format er svg (standard: én animert SVG, uten skript), html (én selvstendig avspillingsside) eller frames (nummererte statiske SVG-bilder pluss manifest.json, høyst 120 bilder i ett svar). Valgfrie fps (1 til 60, standard 12), duration_s (0,5 til 600, standard 8) og width (480 til 3840 piksler, standard 960). Det første innholdselementet er et JSON-sammendrag av det som ble tegnet: tidsområdet og enheten, diagramtitlene, antall faser og hendelser, om et spektrumfossefall er med, resultatstiene sporene ble lest fra, serier som er utelatt, og filnavnene. Filene følger, ett innholdselement hver, i den rekkefølgen sammendragets files lister dem. En type der resultatet ikke har noen samplet tidsakse, avvises med en melding som sier det. Animasjonen er en MODELLED presentasjon av kjøringens egne tall; det samme scenarioet og de samme valgene gir byte-identiske filer.
list_export_formatsRapporter hvilke eksportformater for interoperabilitet som gjelder for et Kshana-scenario, uten å kjøre det: en JSON-tabell med én oppføring per format (czml, kml, geojson, stk, sigmf) med applies, reason når det ikke gjelder, og spec_url, den publiserte spesifikasjonen skriveren følger. CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON og STK-efemeriden (Systems Tool Kit) .e beskriver scenarioets geometri; SigMF (Signal Metadata Format) registrerer samplene et spectrum-scenario med en [iq]-blokk syntetiserer. Kall dette før export_interop.
export_interopEksporter et Kshana-scenario i ett interoperabilitetsformat: czml (Cesium Language, for CesiumJS), kml (Keyhole Markup Language, for Google Earth og geografiske informasjonssystemer), geojson (RFC 7946), stk (Systems Tool Kit-efemeride .e, én fil per satellitt) eller sigmf (Signal Metadata Format-opptak av de syntetiserte samplene fra et spectrum-scenario). Det første innholdselementet er en JSON-indeks: format, spec_url og files, hver med sin suffix (det kommandolinjen legger til utdatanavnet, for eksempel .czml eller .G01.e), bytes, sha256 og encoding. Filene følger, ett innholdselement hver, i indeksens rekkefølge: utf-8-filer som sin tekst, den binære SigMF-samplefilen som base64. En kampanje eksporterer hvert medlemsscenario formatet gjelder for. Et format som ikke gjelder, avvises med årsaken; list_export_formats rapporterer alle fem på én gang. Tidene er koordinert universaltid (UTC); det samme scenarioet gir byte-identiske filer.
import_routeSkriv en GeoJSON-rute inn i et Kshana-scenario som flyr et veipunktspor, og returner den nye scenario-TOML-en (kjør den med run_scenario). Ruten er en LineString (eller en Feature / FeatureCollection som inneholder én) med posisjoner i lengdegrad og breddegrad; den erstatter scenarioets start_lat_deg, start_lon_deg, step_lat_deg, step_lon_deg og waypoints. Typene som tar en rute er terrain-nav, terrain-slam, gravity-map og combined-altpnt; enhver annen type avvises med årsaken. Oppgi de to endene av sporet, eller jevnt fordelte posisjoner langs en rett linje: sportypene flyr start + i*step, så enhver annen form avvises.
export_sp3Eksporter den propagerte konstellasjonen til et orbit-scenario som SP3-c-tekst med presise efemerider (standardformatet for etterbehandling av GNSS). Gir feil hvis scenarioet ikke er av typen orbit.
export_ommEksporter middelelementene til et orbit-scenario som en CCSDS 502.0-B-2 OMM-katalog (Orbit Mean-Elements Message), én OMM per satellitt. Gir feil hvis scenarioet ikke er av typen orbit.
export_oemEksporter den propagerte konstellasjonen til et orbit-scenario som CCSDS OEM 2,0-efemeridetekst, tidsserien av inertial tilstand (TEME) med både posisjon OG hastighet, som flyvedynamikkverktøy (GMAT / Orekit / STK) leser. Dette er den hastighetsbærende motparten til det rene posisjonsverktøyet export_sp3. Gir feil hvis scenarioet ikke er av typen orbit.
export_table_csvKjør et Kshana-scenario og returner reproduserbarhetstabellen som CSV-tekst, den byte-stabile tabellen CLI-et skriver som <scenario>.table.csv og som artiklene siterer. Bare disse typene sender ut en: realtime-frame-eop, lunar-time-budget, lunar-jamming, telecom-timing, leo-navmsg når analysen encode-decode kjører på en meldingsmodell av typen kepler16 eller kepler-rac (tabellen over kringkastet efemeride), og moonlight-service-volume når både export_site_lat_deg og export_site_lon_deg er satt. Gir feil for enhver annen type (eller et ugyldig scenario); bruk run_scenario for kvalitetsmålene.
sky_geometryHimmelgeometri under en azimutavhengig horisontlinje (en gatekløft, en havn, en fjord, en containerterminal): fra et sted, et tidspunkt og forhåndsinnstillinger for konstellasjoner, sett med to linjers elementer (tle, med en UTC-epoch) eller satellitter oppgitt som azimut/elevasjon eller ECEF, hvilke satellitter som er synlige og hvilke som skjules av horisontlinjen, GDOP/PDOP/HDOP/VDOP/TDOP fra DOP-kjernen kontrollert mot gnss_lib_py, øst-nord-opp-kofaktoren og kovariansen med én mottakerklokke per system (eller én felles), og den horisontale feilellipsen ved én sigma og ved en oppgitt konfidens for en oppgitt UERE. Uten request beskrives en REPRESENTATIVE forhåndsinnstilling for horisontlinje med proveniens og snittet for hver grad (en tom skyline_preset lister dem). Scenarioer av typene orbit og integrity (med user_site), gnss-sim, jamming, leo-pvt og leo-pass tar den samme [skyline]-seksjonen via run_scenario. Evidensnivå MODELLED: geometri under en oppgitt feilmodell, bare fri sikt; ikke en prediksjon av en mottakers virkelige feil og ikke en integritetsgrense; konstellasjonene i forhåndsinnstillingene er en representativ himmel, ikke himmelen på en gitt dato; tle-tekst med en epoch (UTC) gir himmelen disse elementsettene gir på det tidspunktet (SGP4), ikke en måling, og sky_source sier hvilken. Bærer den veiledende merkingen: ikke typegodkjent navigasjonsutstyr. Ingen Monte Carlo over MCP (bulkprøver; bruk CLI, Python eller WASM). Bare innebygd, høyst 4 MiB.
iq_signalsOppsettet til GNSS-IQ-laget, som JSON: signals (signalnavnene iq_scene, iq_acquire og iq_track godtar), enabled (om IQ-filverktøyene er på), work_dir (den eneste mappen de leser og skriver; hvert stiargument er relativt til den), max_samples (flest komplekse samples ett kall kan generere eller behandle) og, når av, reason. IQ-samples går aldri gjennom protokollen: verktøyene tar filstier i arbeidsmappen og svarer med kompakte JSON-sammendrag. IQ-laget legger ikke til syntese av interferens eller spoofer; ingenting sendes noen gang. Kall dette først.
iq_infoBeskriv ett IQ-opptak i arbeidsmappen uten å behandle det: type (rå med sidefil, SigMF, SigMF-samling), sampleformat, samplingsrate, midtfrekvens, totalt antall samples, varighet, datafiler og størrelsen deres, opptaksgrenser og antall annotasjoner, som JSON (den samme raden kshana iq info skriver ut). Valgfri raw beskriver en rå fil uten sidefil; valgfri hash legger til SHA-256 for hver datafil (leser hele filen).
iq_sceneGenerer en GNSS-IQ-scene med flere satellitter til en fil i arbeidsmappen (kshana iq scene). Modus med oppgitt profil: signal + prns (+ valgfrie dopplers_hz, cn0_dbhz, data). Modus med kringkasting: nav (en RINEX-navigasjonsfil i arbeidsmappen) + rx_pos [lat, lon, alt] plasserer hver friske GPS-satellitt i sin sanne kringkastede geometri. Valgfri channel bruker ionosfære, troposfære, scintillasjon, multipath, landmobil skygging eller NLOS på signalnivå. rate_hz × duration_s må passe i samplebudsjettet (se iq_signals). Skriver opptaket (rå + <out>.json-sidefil, eller et SigMF-par) og en referansesidefil; svarer med filene som er skrevet og bytetellingene deres, antall samples og samplingen, og referansens første epoke per satellitt (kodefase, Doppler, C/N0) som iq_acquire kan skåres mot. IQ-laget legger ikke til syntese av interferens eller spoofer; ingenting sendes noen gang.
iq_acquireFFT-fangst av én eller flere PRN-er over et IQ-opptak i arbeidsmappen (kshana iq acquire). Leser bare samplene ett søk trenger (koherente × ikke-koherente kodeperioder), som må passe i samplebudsjettet. Valgfrie frontend-trinn (båndpass, hakk, blanking, utskjæring, AGC, kvantiserer) kjører først. Svarer med én påvisning per PRN: acquired, doppler_hz, code_phase_chips, den normaliserte toppen statistic, dens påvisnings-threshold og peak_ratio; json_out / csv_out beholder også hele resultatet som filer, og surface_out (én PRN; .csv, .json eller .bin) beholder hele korrelasjonseffektflaten for Doppler × kodefase med toppen og dens parabolske og finsøkte Doppler-forbedringer.
iq_trackFang og spor deretter én eller flere PRN-er over et IQ-opptak i arbeidsmappen (kshana iq track): fangsten initialiserer hver kanal, og så spiller DLL/PLL-sløyfebanken (eventuelt FLL-assistert) av opptaket én gang. Samplene som spores (hele opptaket, eller de første max_seconds) må passe i samplebudsjettet. Sløyfene kommer fra design (en kshana.loop-design/1-TOML-fil i arbeidsmappen, design_name for å velge én) eller den innebygde utformingen, der sløyfeargumentene overstyrer den; reacquire gjenfanger en kanal som mister lås eller får falsk lås. Sporingen strømmer, så minnebruken vokser ikke med opptaket. Svarer med utformingens navn og hash, eventuelle warnings (commensurate_sampling: en samplingsrate som er et multiplum av halve brikkehastigheten gjør jitter og skjevhet i kodesløyfen urepresentative) og, per kanal, antall epoker, sekunder sporet, endelig Doppler og kodefase, endelig og gjennomsnittlig C/N0 (dB-Hz), andelene av epoker i fase- og kodelås, locked_at_end, den endelige låstilstanden, falske låser påvist og gjenfangster. Utdata per epoke går bare til filer: epochs_out (E/P/L, diskriminatorer, sløyfetilstander, C/N0, låstilstand; .csv/.jsonl/.bin), events_out, json_out / csv_out. En PRN som ikke er fanget, avvises med sin statistikk og terskel.
iq_frontendBruk DSP for mottakerfrontend og avbøting av interferens på et IQ-opptak i arbeidsmappen og skriv resultatet som et nytt rått opptak med en <out>.json-sidefil (kshana iq frontend). stages velger hvilke som helst av: bandpass_hz [lo, hi] FIR, adaptiv notch, pulsblanking, frekvensdomene-excise, agc, og en kvantiserer med bits biter (foran den en automatisk AGC med mindre no_agc), alltid i den rekkefølgen. Hele inndataene må passe i samplebudsjettet. Svarer med samplene som er behandlet og filene som er skrevet med bytetellingene deres. Dette behandler et opptak; det syntetiserer ingenting.
iq_campaignKjør en laboratoriekampanje med avspilling som ligger i arbeidsmappen (kshana iq campaign): opptak (hvert beskrevet av en kshana.test-conditions/1-fil som oppgir laboratoriets kjente referanse) ganger frontend-kjeder ganger sløyfeutforminger, der hver celle spores og skåres mot de oppgitte forholdene (tid til tap av lås, tid til gjenfangst, C/N0-forringelse mot den oppgitte J/S ved siden av en analytisk referanse merket MODELLED, rate for falsk lås, PLL/DLL-jitter, tilgjengelighet). Inkrementelt: ett kall kjører de ventende cellene som passer i samplebudsjettet (eller max_cells), hver ferdige celle beholdes, og neste kall fortsetter. Svarer med celletellingene, feil, filene som er skrevet, og digest når hver celle er ferdig. Skårer bare registrerte data; den syntetiserer ingen interferens.
iq_campaign_statusRapporter fremdriften til en laboratoriekampanje med avspilling fra utdatamappen i arbeidsmappen, bare ved å lese filer: celler ferdige og ventende, opptakene, frontendene og utformingene i planen, og digest når hver celle er ferdig.
iq_sweepSpill av ett IQ-opptak i arbeidsmappen over flere sporingssløyfeutforminger og rapporter hver utformings resultat i stasjonær tilstand (kshana iq sweep): utformingene er hver utforming i en kshana.loop-design/1-fil (design), eller produktet av listene pll_bws_hz, dll_bws_hz, spacings_chips og coherents på den innebygde utformingen. Hver PRN fanges én gang, og hver (utforming, PRN)-kanal sporer de samme samplene, så hvert resultat er nøyaktig det en kjøring av utformingen alene ville gitt. Svarer med, per utforming og PRN, epochs, phase_jitter_deg og code_jitter_chips (over den andre halvdelen av kjøringen), phase_lock_frac, code_lock_frac, mean_cn0_dbhz og utformingens hash; json_out / csv_out beholder tabellen som filer. Spennet som spores må passe i samplebudsjettet (max_seconds innsnevrer det), og høyst 256 (utforming, PRN)-kanaler kjøres per kall. Dette behandler et opptak; det syntetiserer ingenting.
iq_monitorKjør overvåkerne for påvisning av interferens og spoofing over et IQ-opptak i arbeidsmappen (kshana iq monitor): de bredbåndede overvåkerne power og spectral, og, gitt signal + prns, overvåkerne for C/N0 og signalkvalitet per satellitt, hver mot en grunnlinje lært fra de første baseline_s sekundene (eller fra en innstillingsfil). Svarer med seriene (navn og lengde), hver hendelse overvåkerne utløste (start, slutt, overvåker, hva som endret seg; høyst 200 i svaret), og innstillingene og grunnlinjene overvåkerne lærte; json_out beholder hele rapporten (hver serie, hendelse og spektrum) og csv_prefix skriver <prefix>.series.csv og <prefix>.events.csv. Spennet må passe i samplebudsjettet (max_seconds innsnevrer det). En overvåkerhendelse sier at en målt størrelse forlot sin lærte grunnlinje; den peker ikke ut en årsak eller en kilde. Dette skårer bare registrerte data; det syntetiserer ingenting. Evidensnivå: MODELLED.
iq_test_conditionsValider en testbetingelsesfil fra laboratoriet (kshana iq conditions): en kshana.test-conditions/1-fil, TOML- eller JSON-tekst, som oppgir laboratoriets kjente referanse for et opptak (forventede satellitter, innsvingingstiden, den oppgitte planen for jamming eller interferens). Svarer med de løste betingelsene og deres hash, eller årsaken til at filen er ugyldig. Bare innebygd: ingenting leses fra disk, og en opptakssti filen navngir åpnes ikke (en kampanje løser dem opp inne i arbeidsmappen). Inndata er begrenset til 4 MiB.
iq_labfitTilpass modellen for tap av lås i sporingssløyfen til laboratoriekjøringer (kshana iq labfit): en iq-labfit-scenario-TOML navngir én eller flere kjøringer, hver en mottakerlogg pluss de oppgitte testforholdene; motoren laster hver logg, tilpasser sløyfemodellene og de empiriske modellene, bootstrapper usikkerheten og beregner feilen på det tilbakeholdte datasettet. Alt er innebygd: hver kjørings log gir text eller base64 (en path avvises), og verktøyet leser og skriver ingen fil, så det trenger ikke IQ-arbeidsmappen. Alternativt navngir scenarioets [input] campaign = "<out-dir>", en ferdig utdatamappe fra kshana iq campaign: verktøyet tilpasser da C/N0- og låsmodellene til de skårede cellene (en kshana.labfit-iq/1-rapport; Q oppgis, tilpasses aldri, og den identifiserbare J/S-forskyvningen tilpasses; med mode = "validation" kreves en [validation]-tabell). Mappen løses relativt til IQ-arbeidsmappen og må ligge inne i den (alt utenfor avvises); den leses, ingenting skrives. Svarer med den tolkede report, residualene og prediksjonene som CSV-tekst og et Markdown-sammendrag. Inndata er begrenset til 4 MiB. Tilpasningen beskriver laboratoriekjøringene som er gitt; den er ikke en prediksjon for andre mottakere eller forhold utover det rapporten oppgir. Evidensnivå: MODELLED.
assess_vessel_streamSkår et begrenset utdrag av et fartøys NMEA 0183-strøm slik kshana receiver-trust live skårer den, og returner tillitstilstand per epoke (calibrating, nominal, degraded, untrusted) og skår fra 0 til 100 med overvåkerne som trakk poeng (live JSON-lines-skjema 1,3: hver epoke har position, en advisory-erklæring om at utdataene er veiledende, og satellittgeometrien geometry (good, degraded med årsaker som few-satellites eller high-pdop, eller unknown når utdraget ikke har GSV eller GSA) med en label (good, fair, poor; geometri trekker bare poeng når den er poor); hvert fradrag har en class: geometry (himmelen, ikke en konstatering av at ingen angrep fant sted), environment eller inconsistency (angrepslignende)), oppsummeringen (antall per tilstand, geometri og klasse, laveste og siste skår, når den første epoken med untrusted kom) og den siste $PKSHT-setningen. session_toml erklærer fartøyet ([platform] kind = "vessel", dets grenser for fart, akselerasjon og svingrate, antennehøyde, om en retningssensor er på bussen). Utdraget må inneholde kalibreringsvinduet; inndata er begrenset til 2 MiB og 20 000 epoker, og svaret har høyst 200 linjer med degraded eller untrusted epoker. Dette er den begrensede formen av live-kommandoen: ingen socket åpnes og ingenting skrives til en port, og porten og telemetrieksportørene (den langvarige prosessen og dens --listen-server) finnes bare på kommandolinjen. Kontrollene kan ikke se en spoofer hvis posisjonsbestemmelse er konsistent med alt på bussen. Kun veiledende: ikke typegodkjent navigasjonsutstyr; operatøren er fortsatt ansvarlig. Evidensnivå: MODELLED.
jammertest_importLes den publiserte testkatalogen og sendeplanen til Jammertest (NPRA/jammertest-plan, MIT) som planlagt referanse (kshana jammertest import): sporene i ett testområde blir receiver-trust-hendelser med katalog-ID og år i hver merkelapp. plans har én planfil per dag, log_start_utc er loggens første epoke, local_offset_h planens avvik fra UTC (standard 2, CEST). Returnerer events_toml (legg den til i en receiver-trust-økt), events (test-ID, type, start og slutt i sekunder siden loggstart), og tellingene av hoppet over. Hendelsene er PLANLAGTE spor, ikke registrerte sendetidspunkter: et spor kan starte sent eller aldri kjøre, og planens status-felt er for det meste tomt. Ingen kontakt- eller personfelt i planen leses. Inndata er begrenset til 4 MiB per tekst. Evidensnivå: MODELLED.
jammertest_scoreSkår en mottakerlogg mot Jammertest-planen (kshana jammertest score): per planlagte test påvisningsforsinkelsen (første alarm minus planlagt start), om den ble påvist innenfor toleransen, sent eller uteblitt, og tiden til gjenoppretting (en alarmfri strekning på recover_hold_s), pluss de falske alarmene utenfor hvert spor og dets vern. session_toml trenger bare [log] format = "ubx" (eller rinex, android, nmea, sbf); oppgi loggen som log (tekstformater) eller log_base64 (binær). Trenger katalogen og plan-JSON (catalog_json, plans) og testområdet (location). Returnerer resultatkortet: tests, summary, baseline_contaminated og en MODELLED-merking. Planen er planlagte spor, ikke registrerte sendetidspunkter, så en uteblitt påvisning kan være en test som aldri kjørte. En signert bevispakke trenger en signeringsnøkkel: bruk kommandolinjen (kshana jammertest score --key). Inndata er begrenset til 4 MiB per tekst. Kun veiledende: ikke typegodkjent navigasjonsutstyr; operatøren er fortsatt ansvarlig. Evidensnivå: MODELLED.
assess_vessel_logVurder et fartøys NMEA 0183-logg som en batchkjøring (kshana receiver-trust med [platform] kind = "vessel"): skåremodellen, overvåkerne som kjørte og hver epokes skår fra 0 til 100 med fradragene, satellittgeometrien (good, degraded, unknown) med en label (good, fair, poor) på hver epoke, der geometri bare trekker poeng når den er poor, og en klasse på hvert fradrag (geometry, environment, inconsistency), med geometry_model (terskler, taket og gulvet som gjelder, og proveniens) og geometry_summary. session_toml oppgir fartøyets grenser og eventuelle innstillinger for overvåkere eller skår (ingen [log]-tabell nødvendig) og nmea er logg-teksten, som unngår å lime den inn i en TOML-streng. Inndata er begrenset til 4 MiB; svaret har dokumentet med epochs kortet ned til antall per tilstand og høyst 200 epoker med degraded eller untrusted. For en logg i et annet format, eller med [[events]] å skåre, bruk assess_receiver_log. Kun veiledende: ikke typegodkjent navigasjonsutstyr; operatøren er fortsatt ansvarlig. Evidensnivå: MODELLED.
generate_training_nmeaGenerer syntetisk NMEA 0183 for bro til mannskapstrening fra en nmea-scenario-TOML (kshana nmea-scenario): et fartøyspor og en tidslinje med skriptede hendelser (jamming, posisjonsavdrift, tidsspoofing, avspillingsforsinkelse, med gjenoppretting). Returnerer settet med setninger med gyldig sjekksum (GGA, RMC, VTG, GSV, GSA, GNS, ZDA, HDT, VBW; de første 2000 linjene) og instruktørloggen (hva som ble injisert når, med det sanne sporet og et toppnivå-summary av maksimale hastigheter og akselerasjoner; hendelser med avdrift har sin maksimale avdriftshastighet og akselerasjon; skjema kshana-nmea-training/1) som JSON og tekst. Mottakerens tak for synlige satellitter er receiver.max_used (standard 12). Deterministisk per seed. KUN TEKST: ingenting her syntetiserer RF, IQ eller noen bølgeform, ingenting sendes, og utdataene er til trening og testing, aldri for et fartøys levende navigasjonssystemer (en markørsetning i strømmen sier det). Veiledende, ikke typegodkjent navigasjonsutstyr. Strømming til en TCP- eller UDP-adresse finnes bare på kommandolinjen. Fire eksempelscenarioer følger med i scenarios/training/.
create_evidence_packLag en signert bevispakke for et vindu av et fartøys NMEA 0183-logg (kshana receiver-trust evidence): de rå loggbytene for vinduet, konfigurasjonen med hver terskel, resultatene og årsakene per epoke, en selvstendig oppsummeringsside og en manifestfil som lister SHA-256 for hver fil med hashen til hele loggen og en hashkjede, signert med Ed25519. from_s/to_s er sekunder siden loggens første epoke. Returnerer filene som JSON (gi dem til verify_evidence_pack), utstederens offentlige nøkkel og fingeravtrykk. Signeringsseedet returneres eller logges aldri; hvis signing_key_seed_hex utelates, brukes en engangsnøkkel som kastes, så pakken beviser integritet mot nøkkelen den selv navngir, ikke hvem som signerte: for en nøkkel som betyr noe, lag pakken på kommandolinjen (et seed som sendes hit går gjennom samtalen). Inndata er begrenset til 4 MiB og svaret til 4 MiB (innsnevre vinduet). En pakke er en teknisk registrering av hva motoren beregnet fra en logg under oppgitte innstillinger; den er ikke en juridisk vurdering, en konstatering av faktum om noen hendelse eller en sertifisering. Evidensnivå: MODELLED.
create_round_trip_packLag den signerte rundturpakken fra laboratoriet (kshana evidence round-trip, docs/spec/TEST-CONDITIONS.md): knytter med hash sammen scenarioet som ga bevegelsen, laboratoriets kshana.test-conditions/1-dokument, mottakerloggen og skåren mot de oppgitte hendelsene, i en signert bevispakke der config.json har en round_trip-blokk. Avviser en pakke der betingelsene og skåringshendelsene er uenige, eller der den oppgitte SHA-256 for loggen ikke er loggens. INGEN SIGNALER: ingenting skrives, spilles av eller planlegges; hvordan et scenarios bevegelse nådde mottakeren er operatørens ansvar og registreres bare slik det oppgis. Signeringsseedet returneres eller logges aldri; utelatt brukes en engangsnøkkel som kastes (integritet, ikke identitet). Inndata er begrenset til 4 MiB og svaret til 4 MiB. En teknisk registrering, ikke en juridisk vurdering eller en sertifisering. Evidensnivå: MODELLED.
verify_evidence_packVerifiser en signert bevispakke (kshana evidence verify): SHA-256 for hver fil mot manifestet, hashkjeden, Ed25519-signaturen, og med public_key (utstederens nøkkel, fra utstederen via en annen vei) at utstederen er den forventede, og med full_log at loggen du har er den pakken registrerer og at utsnittet kom fra den. Returnerer rapporten: ok, hver feil med kode og fil, hver kontroll, signer_pinned, merknader og en verdict: verified (utsteder festet), intact-signer-not-pinned (alt stemmer, men ingen pålitelig public_key ble oppgitt, så signaturen beviser bare at pakken er intakt mot nøkkelen den selv navngir, som hvem som helst kan generere; si det, og ikke kall den verifisert) eller failed, med en message å vise brukeren. require_timestamp lar en pakke uten tidsstempeltoken feile. Inndata er begrenset til 4 MiB. En vellykket verifisering sier at registreringen er uendret og hvem som signerte den (nøkkelen du oppga); den sier ikke hva som forårsaket noen hendelse, hvem som er ansvarlig, eller at loggen viser det mottakeren faktisk mottok.
build_interference_mapBygg et GNSS-interferenskart fra åpent lisensierte posisjonsrapporter fra fly (ADS-B NIC/NACp) eller skip (AIS), gitt som CSV-tekst (kshana interference-map adsb|ais). Returnerer ett GeoJSON-dokument per UTC-dag (skjema kshana-interference-map/v1) (filnavn <source>-<dataset>-<date>.geojson; metodeversjon 2) der hver publiserte rutenettcelle er degraded, not_degraded, insufficient_sample, withheld_day_confounded eller withheld_no_background (ADS-B) eller anomalous/not_anomalous (AIS), med metoden, dens terskler fastsatt på forhånd, datasettets lisens og kildeangivelse innebygd. Hvert antall per celle under publiseringsminimum (5) er null (tilbakeholdt, aldri null), og en dag der bakgrunnen ikke kan estimeres, holder tilbake sine vurderinger. Bare aggregater: identifikatorer hashes i minnet og returneres aldri, og en celle med færre enn 5 ulike fly eller fartøy publiseres ikke. dataset er en tillatt forhåndsinnstilling eller custom (med licence, licence_url, attribution). Inndata er begrenset til 4 MiB og svaret til 4 MiB (bruk en grovere cell_deg eller kommandolinjen for mer). Ingenting hentes: landpolygoner, hvis ønsket for AIS, sendes inn. En forringet celle peker ikke ut interferens som årsak; en upublisert celle er ikke belegg for en fri celle; dette er ikke en prognose. Evidensnivå: MODELLED.
route_exposureOppsummer hvor mye av en rute som går gjennom forringede celler i ett eller flere interferenskart (kshana route-exposure): for hvert kart (ett per kilde per UTC-dag, GeoJSON-en build_interference_map returnerer), rutens lengde og andelene av lengden i forringede celler, i celler som ikke var forringet, i celler med for lite utvalg til å vurdere, og i celler som ikke ble observert. Ruten er en GeoJSON LineString eller lat,lon-CSV-tekst; date_from/date_to (YYYY-MM-DD) beholder kart i et datointervall. Inndata er begrenset til 4 MiB per element. Celler som ikke er observert, er ikke belegg for en fri rute; en forringet celle peker ikke ut interferens som årsak; dette beskriver tidligere rapporter og er ikke en prognose. Evidensnivå: MODELLED.
compliance_reportFyll ut kartleggingen mot offentlige rammeverk fra Kshana-resultatdokumenter (kshana compliance-report): hvilke rader i seks rammeverk og standarder for robusthet (det amerikanske DHS-rammeverket Resilient PNT v2.0, IMO-veiledning for skip, EASA-veiledning for luftfart, NIS2 artikkel 21, EN 16803, NIST IR 8323r1) de oppgitte kjøringene gir belegg for, hvilke de ikke gjør det for, og gapet hver rad beholder. Oppgi hver kjøring som label, result (resultat-JSON-teksten) og, når du har den, scenario (scenario-TOML-en, som navngir typen et resultat ikke gjør; et receiver-trust-resultat trenger ingen). Høyst 64 kjøringer og 4 MiB til sammen; ingenting leses fra disk. Hver rads status er evidenced, partly-evidenced, not-evidenced eller out-of-scope, og hver rad beholder sitt gap selv når den er evidenced; inndata som ikke kunne brukes, listes i unrecognised og teller ikke. Vis rapportens statement med ethvert resultat, ordrett: en status betyr at en kjøring gir belegg for funksjonene raden navngir; den er ikke en konstatering av at et rammeverk er innfridd, og den betyr ikke at noe produkt er vurdert eller godkjent av noen. Ikke beskriv utdataene i sterkere ordelag. Evidensnivå: MODELLED.
compliance_mappingDen statiske kartleggingen av offentlige rammeverk (kshana compliance-report --mapping / --sources) som Markdown: én tabell per rammeverk med hver rads omskrevne krav, Kshana-utdataene som gir belegg for den og gapet utdataene ikke tetter; eller, med sources satt til true, kildedokumentene tabellene viser til, med versjoner og URL-er. Først kommer erklæringen som alle rapporter bærer, og som følger med ethvert utdrag: en rad merket som belagt betyr at en kjøring gir belegg for funksjonene raden nevner; det er ikke en konstatering av at et rammeverk er oppfylt, og det betyr ikke at noe produkt er vurdert eller godkjent av noen. Trenger ingen kjøringer.
fit_imu_logTilpass sensorparametrene for scenarioene hybrid og fusion fra en IMU-logg i ro (kshana imu-fit, docs/MACHINE-INPUTS.md). Disse scenarioene tar støyparametere, ikke en tidsserie: dette leser dem ut av en logg som er tatt opp med sensoren holdt i ro, ved hjelp av den overlappende Allan-deviasjonen til det integrerte signalet. Returnerer JSON: fit (akselerometerets bias, PSD-en for hastighetens tilfeldige vandring q_va, gyroets bias, PSD-en for vinkelens tilfeldige vandring q_arw, gulvet for biasustabilitet når loggen er lang nok til å vise ett, loggens rate og tidsspenn, de tidlige Allan-stigningstallene, og notes om det som ikke kunne tilpasses eller stoles på), toml (en [accel_classical]-tabell der opphavet oppgir loggens SHA-256, klar til å limes inn i et scenario) og sha256. En logg som ikke var i ro, eller er for kort eller ujevnt samplet, gir feil parametere eller blir avvist; stigningstallene (omtrent -0.5 der hvitt støy dominerer) viser hvilket. Ingenting skrives til disk. Evidensnivå: MODELLED (estimatoren anvendt på loggen, ingen ekstern uavhengig referanse).
list_standards_packsList standardpakkene (kshana standards-pack list): scenariosett med poengsum for testprofilene i DHS Resilient PNT-rammeverket, IMO MSC.1/Circ.1575 og ICAO Doc 9849 Appendix F, hver med terskelene den oppgir før kjøringen og compliance-radene den gir belegg for. Trenger ingen inndata. En pakke måler modellerte scenarioer mot oppgitte terskler; den vurderer ikke noe produkt. Evidensnivå: MODELLED.
run_standards_packKjør én standardpakke (kshana standards-pack run <id>): alle scenarioene i den, poengsatt mot terskler som er oppgitt før kjøringen. Returnerer rapporten (hver test MET, NOT MET eller NEEDS INPUT når den trenger en mottakerlogg og ikke får poengsum; hver terskel med målt og forventet verdi) og det samme som markdown. Gi rapport-JSON-en til compliance_report for å se radene pakken gir belegg for. Si tydelig at en MET-terskel betyr at et modellert scenario nådde en oppgitt terskel, og at en NOT MET er et resultat på rekord; beskriv aldri utdataene som et bevis for at et produkt eller et rammeverk er oppfylt. Kun veiledende: analyseutdata, ikke typegodkjent navigasjonsutstyr. Evidensnivå: MODELLED.
lunanet_afs_checkKontroller LunaNet Augmented Forward Signal (AFS) mot den publiserte spesifikasjonen, låst til LNIS Version 5 Applicable Document 1 Volume A (LSIS-AFS V1.0, 29 January 2025) (kshana lunanet-afs-check, docs/LUNANET-AFS.md). Modus spec kontrollerer denne implementasjonen mot dokumentets trykte kodetabeller (de første og siste 24 chipsene i hver AFS-I Gold-, AFS-Q Weil- og tertiærkode for PRN 1 til 210, og begge Legendre-sekvensene) og gjennomgåtte eksempler (SB1 BCH, CRC-24Q), terskler B1 til B10 i en forhåndsregistrering; B4 melder ett bom (dokumentet trykker de samme siste 24 chipsene for tertiær PRN 147 og 151). Modus symbols kontrollerer en symbolstrøm med harde beslutninger (tekst med 0 og 1) for synkroniseringsmønsteret, SB1-dekoding, FID, TOI-kontinuitet og rammeavstand. Delrammene 2 til 4 (LDPC med rate 1/2, CRC-24Q) er IKKE verifisert: LDPC-matrisene ligger i et eget vedlegg som ikke er implementert. Modus generate returnerer en teststrøm med plassholder-delrammer: symboler, ikke en bølgeform; Kshana skriver ikke noe signal. VALIDATED bare mot de trykte tabellene i den utgaven, som dokumentet selv markerer som TBC; si dette, og beskriv ikke et resultat som et bevis for at en LunaNet-node eller -tjeneste er korrekt. Kun veiledende.
score_benchmarkGi poeng til en kshana-bench-innsending (kshana bench score, bench/SPEC.md, docs/BENCH.md): en prediksjonsfil (kshana-bench-predictions/1) mot en referansefil (kshana-bench-truth/1), begge JSON-tekst, høyst 4 MiB hver, og returner resultatfilen (kshana-bench-result/1) med spesifikasjonsversjonen, oppgaven (a deteksjon på mottakerlogger, b deteksjon på IQ, c prediksjon av holdover for tidssynkronisering, d optimismegap utenfor fordelingen), delingen, SHA-256 for begge inndataene og oppgavens målinger (AUC, deteksjonssannsynlighet ved et tak for falsk alarm, RMSE per horisont, eller optimismegapet). threshold er den oppgitte alarmterskelen for oppgave a og b. Ingenting leses fra disk eller skrives. Hver poengsum er MODELLED og beskriver en logg eller et korpus, aldri et produkt; den er ikke en sertifisering, og ingen organisasjon støttes av en poengsum. Evidensnivå: MODELLED.
render_leaderboardGjengi kshana-bench-resultatfiler (kshana bench leaderboard) som den statiske resultattavlesiden, HTML-tekst i svaret: results er en liste med kshana-bench-result/1-JSON-tekster (høyst 256, 4 MiB hver), hver validert først; en fil som er poengsatt under en annen hovedversjon av spesifikasjonen, blir avvist fordi resultater fra ulike hovedversjoner aldri settes i én tabell. En rad sier at denne filen fikk dette tallet på denne delingen; den betyr ikke at noe produkt er vurdert eller godkjent av noen. Ingenting skrives. Evidensnivå: MODELLED.
trust_telemetryGjengi en GNSS-tillitsstrøm eller et receiver-trust-resultat som sikkerhetstelemetritekst (kshana trust-telemetry, docs/TRUST-TELEMETRY.md), med de samme enkoderne som kommandolinjen bruker: prometheus (eksponeringen av sluttilstanden), cef eller leef (én RFC 5424 syslog-linje per båndendring, eller per epoke med syslog_all; ingen tidsstempel, fordi ingen klokke leses) eller otlp (OTLP/HTTP JSON-metrikknyttelasten). input_kind er jsonl (standard) eller result; en strømlinje som ikke kan tolkes, hoppes over og telles i kshana_trust_input_errors_total. Ingenting sendes, serveres eller skrives: utdataene er tekst i svaret (de kjørende eksportørene, som er en prosess, forblir på kommandolinjen). Posisjonen som mottakeren rapporterer, utelates med mindre expose_position er true. Inndata som bærer satellittgeometri (live-skjema 1,3, resultater fra 0,36) legger til geometrietiketten (god, middels, dårlig; aldri gitt poeng unntatt for dårlig) og status, HDOP, PDOP, VDOP og antall brukte satellitter, og en class-etikett (geometri, miljø, inkonsistens) på hver årsak; eldre inndata gjengis nøyaktig som før. Kun veiledende: Kshana er ikke typegodkjent navigasjonsutstyr (IEC 61108, IEC 61162), og operatøren er fortsatt ansvarlig. Evidensnivå: MODELLED.
export_test_benchEksporter et scenarios kjøretøybevegelse og hendelser for en GNSS-simulator i laboratoriet (kshana bench-export, docs/TEST-BENCH.md): en bevegelses-CSV og dens JSON-beskrivelse (jordfast og geodetisk posisjon, hastighet, holdning, UTC), NMEA 0183 GGA/RMC-setninger, en veipunkttekst når samplingsrutenettet er regelmessig i millisekunder, og scenarioets hendelser som CSV og som [[events]] TOML for et receiver-trust-scenario. Gjelder for gnss-ins (navigasjonstilstandens avbrudd er hendelsene), jamming og gnss-sim; en annen type avvises med begrunnelse. epoch er UTC-tidspunktet for bevegelsestid null, YYYY-MM-DDTHH:MM:SS (standard 2024-01-01T00:00:00Z). Ingenting skrives til disk: det første innholdselementet er en JSON-indeks (files med suffix, bytes, sha256; notes for hver fil som er utelatt; notice), etterfulgt av hver fils tekst i indeksrekkefølge. Det samme scenarioet og den samme epoken gir byte-identiske filer. INGEN SIGNALER: ingenting som eksporteres er, modellerer eller driver et radiofrekvens- eller basebåndsignal, og en hendelse er et merket intervall, ikke en oppskrift for å lage interferens; simulatoren og operatøren leverer signalene og er ansvarlige for å kjøre dem bare der det er tillatt. Behold merknaden sammen med filene. Kshana publiserer ingen resultater fra slike kjøringer. Evidensnivå: MODELLED.
attach_evidence_timestampBind et RFC 3161 tidsstempeltoken til en bevispakke (kshana evidence attach-timestamp), i minnet: files er en pakke slik create_evidence_pack returnerer den, token_base64 bytene i .tsr-filen fra en tidsstempelautoritet. Tokenet lagres som timestamp.tsr ved siden av det signerte manifestet, ikke inni det, og pakken med tokenet må fortsatt verifiseres, ellers festes ingenting; et eksisterende token beholdes med mindre replace er true. Returnerer de oppdaterte files (gi dem til verify_evidence_pack med require_timestamp satt til true for å kreve at tokenet er til stede) og verifikasjonsnotatene. Dette kontrollerer IKKE tidsstempelautoritetens signatur på tokenet eller autoritetens sertifikat (det kontrollerer tokenets struktur og at meldingsavtrykket er hashen av denne pakkens manifest.json): si dette, og vis brukeren til openssl ts -verify. Inndata og svar er begrenset til 4 MiB. Et tidsstempel viser at en hash fantes på et tidspunkt autoriteten oppgir; det er ikke en juridisk vurdering. Evidensnivå: MODELLED.
Én tabell, generert fra depotets packaging/channels.json og krysskontrollert mot README-filene, slik at hver kommando er den README-filen viser, låst til v0.40.0. Ferdigbygde binærfiler for alle operativsystemer, utvidelsen for skrivebordsassistenten, ettklikksknapper for Cursor og VS Code, oppstartere for npx og uvx, Homebrew, Scoop og winget, registrene og en selvdrevet HTTP-modus. Kanaler merket når publisert går live med utgivelsen.
Selve motoren, i språket eller stedet du jobber.
For alle, ingenting å installere. Krever: ingenting.
Motoren kjører lokalt som WebAssembly; ingenting lastes opp.
For ingeniører som vil ha kommandoen kshana. Krever: Rust.
Låst til v0.40.0cargo install kshana --version 0.40.0
Kontroller den deretterkshana --version
For Rust-utviklere som bygger inn motoren. Krever: Rust.
Låst til v0.40.0cargo add kshana@0.40.0
Kontroller den derettercargo tree --depth 1 | grep kshana
For analytikere og notebooks. Krever: Python.
Låst til v0.40.0pip install kshana==0.40.0
Kontroller den deretterpython -c "import kshana; print(kshana.version())"
For web- og Node.js-utviklere. Krever: Node.
Låst til v0.40.0npm install kshana@0.40.0
Kontroller den deretternpm ls kshana
Veiledende, ikke typegodkjent navigasjonsutstyr: operatøren er fortsatt ansvarlig for navigasjonen. Serveren kjører på din datamaskin; ingenting sendes til Ashforde OÜ.
For alle som bruker en MCP-kompatibel assistent. Krever: Rust 1,88+.
Låst til v0.40.0cargo install kshana-mcp --version 0.40.0
Kontroller den derettercargo install --list | grep kshana-mcp
For deg uten Rust-verktøykjede; MCP-serveren i en container. Krever: Docker.
Låst til v0.40.0docker run --rm -i ghcr.io/ashfordeou/kshana-mcp:0.40.0
Kontroller den deretterdocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
For brukere av skrivebordsassistenter, uten terminal. Krever: ingenting.
macOS (Apple silicon)macOS (Intel)WindowsLinux (x86-64)Linux (Arm)
Dobbeltklikk på kshana-mcp-<target>.mcpb.
For Cursor-brukere. Krever: Node, eller Docker.
Låst til v0.40.0kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
For brukere av VS Code og Insiders. Krever: Node, eller Docker.
Låst til v0.40.0kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
Installer i VS Code (npx)Installer i VS Code (Docker)Installer i VS Code Insiders (npx)
For Node-brukere, alle MCP-klienter. Krever: Node 18+.
Låst til v0.40.0kshana-mcp@0.40.0
Kontroller den deretternpx -y kshana-mcp@0.40.0 --version
En oppstarter: den laster ned utgivelsens binærfil, verifiserer SHA256SUMS og kjører den.
For Python-brukere, alle MCP-klienter. Krever: Python 3,9+ med uv eller pipx.
Låst til v0.40.0kshana-mcp==0.40.0
Kontroller den deretteruvx kshana-mcp==0.40.0 --version
For macOS og Linux. Krever: brew.
Låst til v0.40.0formula for v0.40.0
Kontroller den deretterkshana-mcp --version
For Windows. Krever: Scoop.
Låst til v0.40.0manifest for v0.40.0
Kontroller den deretterkshana-mcp --version
For Windows. Krever: winget.
Låst til v0.40.0winget install AshfordeOU.KshanaMcp --version 0.40.0
Kontroller den deretterkshana-mcp --version
Vises når Microsoft har flettet inn innsendingen.
For deg uten pakkebehandler. Krever: ingenting.
Last ned kshana-mcp-<target> fra utgivelsen og kontroller den mot SHA256SUMS.
For MCP-klienter som støtter registre. Krever: en klient som støtter registre.
Søk etter io.github.ashfordeOU/kshana-mcp.
For klienter som tar en URL. Krever: din egen vert.
Låst til v0.40.0v0.40.0
Loopback som standard; en binding som ikke er loopback, krever --allow-remote og et bearer-token. Kshana driver ikke noe endepunkt.
Plugin-moduler og images som tar Kshana inn i andre verktøy.
For brukere av IntelliJ, PyCharm og CLion. Krever: en JetBrains-IDE.
Settings → Plugins → Marketplace → søk etter "Kshana" (plugin-ID dev.kshana.ide). Høyreklikk en scenario-.toml og velg Run Kshana Scenario.
For båteiere som kjører en Signal K-server. Krever: Node, en Signal K-server.
Låst til v0.40.0npm install signalk-kshana-trust@0.40.0
Kontroller den deretternpm ls signalk-kshana-trust
For brukere av OpenCPN-kartplotter. Krever: OpenCPN 5,8+.
Last ned plugin-tarballen fra utgivelsen. Utgivelsen inneholder tarballen og dens XML med katalogmetadata; oppføring i OpenCPNs katalog er en pull request som åpnes for hånd.
For operatører som kjører Grafana. Krever: Grafana.
Importer kshana-grafana-*.json fra utgivelsen.
For utrullinger i gate og bench. Krever: Docker.
Låst til v0.40.0docker pull ghcr.io/ashfordeou/kshana-reference-build:0.40.0
Fra en nettleserfane til en regresjonssuite for kontinuerlig integrasjon (CI). Hver inngang kjører den samme motoren og skriver det samme JSON-resultatet, SVG-diagrammet (Scalable Vector Graphics) og HTML-rapporten (HyperText Markup Language). Velg én; hver kommando er ekte og kopieres med ett klikk.
Et hvilket som helst medfølgende scenario, kjørt på din maskin som WebAssembly; ingenting installert, ingenting lastet opp. Juster det, sammenlign kjøringer, sveip en parameter og eksporter en gjengivbar rapport.
Bare Kshana Studio, for en kursside eller en rapport, med scenarioet og visningen forhåndsvalgt
studio/index.html?embed=1&scenario=integrity-raim&tab=timeserieskshana <scenario>.toml skriver result.json, chart.svg og report.html
Utdataene er deterministiske ut fra scenario, seed og motorversjon, så en innsjekket result.json er en regresjonstest (CI: kontinuerlig integrasjon): kjør på nytt og sammenlign
kshana --study: en suite av scenarioer til én stemplet study.json og study.html, gratis. Ikke den betalte skreddersydde studien.
kshana::api::run_toml returnerer JSON, SVG, en oppsummering og CSV (kommaseparerte verdier)
kshana.run og run_full, pluss validate_toml og list_kinds
run, summary og chart_svg i nettleseren eller Node.js
49 verktøy en KI-assistent kan kalle, hvert av dem en tynn omslutning rundt det offentlige API-et
MCP-serveren uten Rust-verktøykjede, for flere arkitekturer
Høyreklikk på en scenario-.toml, velg Run Kshana Scenario, og les kvalitetsmålene i et verktøyvindu
Kommandolinjen, bindingene for Rust, Python og JavaScript og filformatene motoren leser og skriver, side om side. Alt her er den gratis åpne kjernen.
kshana --helpFra binærfilenkshana <scenario.toml> [--study-name <s>] [--eop <finals2000A>] [--export-sp3 <out.sp3>] [--export-omm <out.omm>] [--export-oem <out.oem>] [--export <czml|kml|geojson|stk|sigmf|all|list>]... [--import-route <route.geojson>]
kshana <scenario.toml> --animate <svg|html|frames|all> [--animate-fps <n>] [--animate-duration <s>]
kshana --study <suite.toml>
kshana --validate <scenario.toml>
kshana receiver-trust <scenario.toml>
kshana receiver-trust live <session.toml> [--stdin | --file <path> [--follow] | --tcp <host:port> | --udp <port>] [--gate] (kshana receiver-trust live --help)
kshana receiver-trust evidence <scenario.toml> --from <t0> --to <t1> --key <keyfile> --out <dir> (kshana evidence --help)
kshana evidence <keygen|verify|attach-timestamp> ... (kshana evidence --help)
kshana jammertest <import|score> ... (kshana jammertest --help)
kshana evidence round-trip <scenario.toml> --scenario <bench-scenario> --conditions <file> --from <t0> --to <t1> --key <keyfile> --out <dir> (kshana evidence --help)
kshana trust-telemetry [options] (kshana trust-telemetry --help)
kshana imu-fit <imu.csv> [--format csv|euroc] [--axis x|y|z] [--expected-mean <m/s2>] [--id <name>] [--json]
kshana nmea-scenario <scenario.toml> [--out <file.nmea>] [--tcp <addr>|--udp <addr>] (kshana nmea-scenario --help)
kshana interference-map <adsb|ais|fetch-land> ... (kshana interference-map --help)
kshana route-exposure --route <route> --map <map.geojson|dir> [--from <date>] [--to <date>]
kshana bench <spec|truth|cases|score|baseline|seal|reveal-check|manifest|verify-manifest|validate|leaderboard> ... (kshana bench --help)
kshana bench-export <scenario.toml> [--out <base>] [--epoch <YYYY-MM-DDTHH:MM:SS>]
kshana compliance-report [--out <base>] <result.json>... | --mapping | --sources
kshana lunanet-afs-check <spec [--json] [--strict]|symbols <file> [--max-sp-errors <n>] [--json]|generate --frames <n> [--toi0 <t>] --out <file>>
kshana standards-pack <list|run <id> [--json] [--out <base>]|rows <id>|tests <id>>
kshana partner check <submission.toml> [--json]
kshana osnma verify <pages|vectors.csv|stream.ubx> [--merkle-root <hex>] [--public-key <id:type:hex>] [--reference-time <gst-s>] [--json] (kshana osnma --help)
kshana iq <scene|acquire|track|sweep|labfit|campaign|conditions|frontend|monitor|inventory|info|extract|convert|decimate> ... (kshana iq --help)
kshana sky <request.json|request.toml> | --site <lat,lon[,h]> --systems <a,b,...> [--time <s>] [--mask <deg>] [--skyline-preset <name>] [--uere <m>] [--monte-carlo <n> --seed <s>] [--svg] (kshana sky --help)
kshana skyline --preset <name> [--json] | --presets | --profile <skyline.json|toml>
kshana kinds [--json]
kshana example [<name>]
kshana --help | --versionEn kjøring skriver result.json, chart.svg, report.html, report.json, table.csv ved siden av scenarioet; --export-sp3, --export-omm og --export-oem skriver banefiler; --animate skriver også kjøringen som noe som beveger seg (animation.svg, animation.html, frames: en animert SVG, en selvstendig HTML-spiller eller en mappe med nummererte bilder), med --animate-fps og --animate-duration for avspillingshastighet og lengde; --export skriver scenarioets geometri eller dets syntetiserte signal for andre verktøy: CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON (geografisk JSON), en STK-efemeridefil (Systems Tool Kit), SigMF (Signal Metadata Format); --import-route leser en rute tegnet som en GeoJSON-linje; --eop injiserer parametere for jordens orientering fra en finals2000A-fil; --study kjører en gratis suite av scenarioer til study.json og study.html; kshana kinds --json lister hver type med feltene; kshana example skriver ut et scenario å starte fra. Resultater kan reise i Kshana Interchange Format-konvolutten (KIF). MCP-serveren eksponerer baneeksportene som verktøy.
kshana --study er den gratis suitekjøreren. Hvis du heller vil at analysen skal gjøres for deg, er det en betalt skreddersydd studie.
result.json, chart.svg, report.html og den samme rapporten som report.json, pluss en CSV-tabell (kommaseparerte verdier) for de typene som publiserer en. På forespørsel skriver den også en animasjon av kjøringen (--animate) og scenarioet i formatene andre verktøy leser (--export).Hvert program kjører det medfølgende scenarioet clock-holdover (skriv det med kshana example clock-holdover > clock-holdover.toml) og skriver ut den samme oppsummeringen på én linje. Pakkenes README-filer har de fullstendige versjonene.
cargo add kshanause kshana::api;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let toml = std::fs::read_to_string("clock-holdover.toml")?;
let out = api::run_toml(&toml)?; // RunOutput { json, svg, summary, csv }
println!("{}", out.summary); // the one-line result string
std::fs::write("clock-holdover.result.json", &out.json)?;
Ok(())
}kshana::api har også run_scenario, validate_scenario, list_scenario_kinds og baneeksportørene. Rust-dokumentasjon
pip install kshanaimport json, kshana
toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml)) # the full result document
print(result["quantum"]["fom"]["integrity"])
result_json, chart_svg, summary = kshana.run_full(toml)
print(kshana.version(), summary)Pakken har også validate_toml og list_kinds. Python-dokumentasjon
npm install kshanaimport { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { initSync, run, summary, version } from "kshana";
const wasm = createRequire(import.meta.url).resolve("kshana/kshana_bg.wasm");
initSync({ module: readFileSync(wasm) }); // in a browser: await init()
const toml = readFileSync("clock-holdover.toml", "utf8");
const result = JSON.parse(run(toml)); // the full result document
console.log(version(), result.classical.fom.timing_p95_ns);
console.log(summary(toml)); // the one-line result stringDen samme pakken kjører i nettleseren; det er den Kshana Studio bruker. npm-dokumentasjon
Formater motoren håndterer i dag, fra depotets standardside (Dokumentasjon: standarder). Åpne en rad for å se hvordan du kommer til den og hva den ble kontrollert mot.
--export-oem, MCP export_oem--export-omm, MCP export_omm--export-sp3, MCP export_sp3space-packet-scenarioerpvtorbit-scenarioer--eop med en finals2000A-filexport_table_csvPluginen «Kshana — PNT simulator»: høyreklikk på et hvilket som helst scenario .toml, velg Run Kshana Scenario, og les kvalitetsmålene i et verktøyvindu.
kshana bench score gjør en innsendingsfil og en delings referanse om til en resultatfil, og kshana bench leaderboard gjengir resultatfiler til en statisk side. Ingenting kjører på dine vegne, og ingenting lastes opp.