Prova i webbläsaren
För alla, inget att installera. Kräver: inget.
Motorn körs lokalt som WebAssembly; ingenting laddas upp.
Maskinöversättning, inte granskad av en modersmålstalare. Engelska är referensen.
En Rust-motor för resiliens inom GNSS (Global Navigation Satellite System) och PNT (positionering, navigering och tidssynkronisering): ett kommandoradsgränssnitt (CLI), paket för Rust, Python och JavaScript, Kshana Studio i webbläsaren, ett insticksprogram för JetBrains IDE (integrerad utvecklingsmiljö) och en MCP-server (Model Context Protocol), så att en AI-assistent (artificiell intelligens) kör den validerade motorn i stället för att gissa matematiken. Öppen källkod under AGPL-3.0 (GNU Affero General Public License, version 3) eller en kommersiell licens.
The recorded session plays here with JavaScript.
Genererad från arkivets manifest och korskontrollerad mot dess README-filer, så att varje kommando stämmer med v0.40.0. kshana-mcp ger din AI-assistent samma motor: ett TOML-scenario (Tom's Obvious, Minimal Language) in, JSON (JavaScript Object Notation) och CSV (kommaavgränsade värden) ut.
För alla, inget att installera.
Motorn körs lokalt som WebAssembly; ingenting laddas upp.
För ingenjörer som vill ha kommandot kshana.
Kontrollera sedankshana --version
För analytiker och notebooks.
Kontrollera sedanpython -c "import kshana; print(kshana.version())"
För webb- och Node.js-utvecklare.
Kontrollera sedannpm ls kshana
För alla som använder en assistent med MCP-stöd.
Kontrollera sedancargo install --list | grep kshana-mcp
Registernamn io.github.ashfordeOU/kshana-mcp. Registrera den hos din klient, enligt README för 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": {}
}
}
}För dig utan Rust-verktygskedja; MCP-servern i en container.
Kontrollera sedandocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
För Rust-utvecklare som bäddar in motorn.
Kontrollera sedancargo tree --depth 1 | grep kshana
För användare av IntelliJ, PyCharm och CLion.
Settings → Plugins → Marketplace → sök efter "Kshana" (plugin-ID dev.kshana.ide). Högerklicka på ett scenario .toml och välj Run Kshana Scenario.
Rust-motorAGPL-3.0 eller kommersiell licensProgramvaruinnehållsförteckning och byggproveniens för varje utgåva
Den inspelade sessionen spelas upp här steg för steg.
Samma körning i Studio: Motor v0.40.0 · clock-holdover.toml · frö 42Öppna i Kshana StudioRapport
49 verktyg över det publika Kshana-API:et (programmeringsgränssnitt), i det officiella MCP-registret som io.github.ashfordeOU/kshana-mcp. Banexporter: SP3 (Standard Product 3) samt CCSDS (Consultative Committee for Space Data Systems) OMM och OEM (meddelanden om banmedelelement och efemerid, TEME: True Equator, Mean Equinox-systemet). Registrera den under AI-assistent (MCP-server) eller Docker-avbild. Dokumentation för MCP-servern
run_scenarioKör ett Kshana-scenario för PNT-resiliens utifrån en TOML-definition och returnera dess kvalitetsmått. Returnerar den läsbara sammanfattningen följd av hela resultat-JSON (FoM, kurvor). Kshana validerar SGP4/SDP4, IAU:s referenssystem, Allan-avvikelser, GNSS-tillgänglighet/DOP, ARAIM-skyddsnivåer, GNSS/INS-fusion och kvantsensormodeller mot publicerade referenser. Varje slag körs genom det här verktyget, inklusive spectrum (radiofrekvensspektrum och vattenfall), solar-system, constellation-design och body-pnt (konstellationer kring vilken kropp som helst), campaign (kedjade faser, parametersvep, Monte Carlo-ensembler och sammansatta scenarier) och navigeringsslagen för låg jordomloppsbana leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning och leo-pnt-chain. Innehållet är inbäddat: ett scenariofält som namnger en fil avvisas, och ett scenario är högst 4 MiB. Anropa först list_scenario_kinds för att upptäcka scenariotyper och deras fält, och list_example_scenarios / get_example_scenario för ett komplett körbart scenario av ett slag.
list_scenario_kindsLista varje inbyggt Kshana-scenarioslag med dess beskrivning och obligatoriska och valfria TOML-fält, som en JSON-array. Använd detta för att upptäcka vilka scenarier som kan köras och hur du bygger en giltig scenario-TOML för run_scenario.
validate_scenarioFörkontroll av en Kshana-scenario-TOML: verifiera att den tolkas som TOML och identifiera dess scenarioslag, utan att köra den. Returnerar det identifierade slaget, eller ett beskrivande fel för felaktig TOML. (run_scenario gör den fullständiga valideringen genom att köra scenariot.)
assess_receiver_logBedöm förtroendet för en verklig GNSS-mottagarlogg: läs en u-blox UBX-, RINEX 3- (valfritt med utsänd navigering, vilket lägger till motorns egen positionsbestämning, RAIM och en klockstödd övervakare), Android GnssLogger- eller NMEA-logg, kör förtroendeövervakarna (fall i bärvåg-till-brus-täthet, AGC, jamming-indikator, förlorad låsning, positionshopp, RAIM, klocka) mot en kalibreringsbaslinje och returnera när och varför mottagaren slutade vara tillförlitlig. Valfria [[events]] med inledningar och predikterade C/N0-fall poängsätts mot toleranser som anges i scenariot: upptäckt, sen eller missad, och överensstämmer eller avviker. Returnerar sammanfattningen och hela resultat-JSON (diagram och CSV på begäran; en CSV från en fartygskörning börjar med en #-kommentarsrad som bär det rådgivande påståendet, vilken CSV-läsare hoppar över med sitt kommentarsalternativ). Loggens byte läggs inbäddade i TOML som text eller base64 (endast inbäddat, högst 4 MiB). En [platform] kind = "vessel"-tabell väljer de maritima övervakarna (kinematisk konsistens, kurs mot kurs över grund, loggens fart, antennhöjd, C/N0-spridning, tidskonsistens) och lägger till en förtroendepoäng från 0 till 100 per epok med de övervakare som gav avdrag. Varje epok bär också sin satellit-geometry (good; degraded vid få satelliter eller hög PDOP eller HDOP; eller unknown där loggen saknar satellitelevationer eller DOP); varje epok har en label (good, fair, poor); för ett fartyg ingår en geometry-övervakare i poängen, som bara ger avdrag när geometrin är poor (högst 15 poäng: degraded, aldrig untrusted), och varje avdrag bär en klass: geometry (himlen), environment eller inconsistency (attackliknande). För ett strömutdrag med grinden använd assess_vessel_stream. Endast rådgivande; evidensnivå MODELLED.
list_example_scenariosLista de medföljande referensscenarierna som JSON: count och scenarios, en array av name, kind och about (den första meningen i filens egen rubrikkommentar). Vart och ett är ett komplett scenario som körs som det står, så detta är den snabbaste vägen till en giltig TOML för ett slag: välj ett namn, hämta det med get_example_scenario, redigera det, kör det. Ange kind för att bara lista exemplen av ett slag (till exempel spectrum, solar-system, constellation-design, campaign, leo-signal, leo-pass, leo-navmsg, leo-pvt).
get_example_scenarioReturnera TOML-texten för ett medföljande referensscenario, byte för byte den fil som arkivet levererar under scenarios/. Ge texten (redigerad eller inte) till run_scenario, report_scenario, animate_scenario eller ett exportverktyg. Namnen kommer från list_example_scenarios. Ett scenario som finns i arkivet men inte medföljer avvisas med skälet.
report_scenarioKör ett Kshana-scenario och returnera dess rapport: en sammanfattning för ledningen, indata, varje resultatsiffra med sin enhet och sin etikett VALIDATED eller MODELLED, händelserna, de förmågerader som körningen använde och en reproducerbarhetspost (motorversion, SHA-256-sammandrag för scenario och resultat, frö, det kommando som reproducerar det). format är json (standard; den maskinläsbara report.json) eller html (den utskrivbara, fristående report.html med diagrammet inbäddat). En kampanjs rapport bär också sin svepetabell eller sin Monte Carlo-fördelning. Rapporten är en ren funktion av scenariot: ingen klocka läses.
animate_scenarioKör ett Kshana-scenario och returnera dess tidsserie som en animering. format är svg (standard: en animerad SVG, inget skript), html (en fristående spelarsida) eller frames (numrerade statiska SVG-bildrutor plus manifest.json, högst 120 bildrutor i ett svar). Valfria fps (1 till 60, standard 12), duration_s (0,5 till 600, standard 8) och width (480 till 3840 pixlar, standard 960). Det första innehållsobjektet är en JSON-sammanfattning av vad som ritades: tidsintervall och enhet, diagramrubrikerna, antalet faser och händelser, om ett spektrumvattenfall finns, de resultatsökvägar som kurvorna lästes från, eventuella utelämnade serier och filnamnen. Filerna följer, ett innehållsobjekt vardera, i den ordning som sammanfattningens files listar. Ett slag vars resultat saknar samplad tidsaxel avvisas med ett meddelande som säger det. Animeringen är en MODELLED presentation av körningens egna siffror; samma scenario och samma alternativ ger byteidentiska filer.
list_export_formatsRedovisa vilka interoperabilitetsformat för export som gäller för ett Kshana-scenario, utan att köra det: en JSON-array med en post per format (czml, kml, geojson, stk, sigmf) som anger applies, reason när det inte gäller och spec_url, den publicerade specifikation som skrivaren följer. CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON och STK-efemeriden (Systems Tool Kit) .e beskriver scenariots geometri; SigMF (Signal Metadata Format) registrerar de samplingar som ett spectrum-scenario med ett [iq]-block syntetiserar. Anropa detta före export_interop.
export_interopExportera ett Kshana-scenario i ett interoperabilitetsformat: czml (Cesium Language, för CesiumJS), kml (Keyhole Markup Language, för Google Earth och verktyg för geografiska informationssystem), geojson (RFC 7946), stk (Systems Tool Kit-efemerid .e, en fil per satellit) eller sigmf (Signal Metadata Format-inspelning av de syntetiserade samplingarna i ett spectrum-scenario). Det första innehållsobjektet är ett JSON-index: format, spec_url och files, var och en med sin suffix (vad kommandoraden lägger till utdatanamnet, till exempel .czml eller .G01.e), bytes, sha256 och encoding. Filerna följer, ett innehållsobjekt vardera, i indexets ordning: utf-8-filer som sin text, den binära SigMF-samplingsfilen som base64. En kampanj exporterar varje medlemsscenario som formatet gäller för. Ett format som inte gäller avvisas med skälet; list_export_formats redovisar alla fem på en gång. Tider anges i koordinerad universell tid (UTC); samma scenario ger byteidentiska filer.
import_routeSkriv in en GeoJSON-rutt i ett Kshana-scenario som flyger ett spår av vägpunkter, och returnera den nya scenario-TOML:en (kör den med run_scenario). Rutten är en LineString (eller en Feature / FeatureCollection som innehåller en) med positioner i longitud och latitud; den ersätter scenariots start_lat_deg, start_lon_deg, step_lat_deg, step_lon_deg och waypoints. De slag som tar en rutt är terrain-nav, terrain-slam, gravity-map och combined-altpnt; varje annat slag avvisas med skälet. Ange spårets två ändar, eller jämnt fördelade positioner längs en rät linje: spårslagen flyger start + i*step, så varje annan form avvisas.
export_sp3Exportera en orbit-scenarios propagerade konstellation som SP3-c-text med precis efemerid (standardformatet för efterbearbetning av GNSS). Ger fel om scenariot inte är av slaget orbit.
export_ommExportera en orbit-scenarios medelelement som en katalog av CCSDS 502.0-B-2 OMM (Orbit Mean-Elements Message), ett OMM per satellit. Ger fel om scenariot inte är av slaget orbit.
export_oemExportera en orbit-scenarios propagerade konstellation som CCSDS OEM 2,0-efemeristext, alltså den tröga (TEME) tillståndstidsserien med både position OCH hastighet, som verktyg för flygdynamik (GMAT / Orekit / STK) läser. Detta är den hastighetsbärande motsvarigheten till export_sp3, som bara har position. Ger fel om scenariot inte är av slaget orbit.
export_table_csvKör ett Kshana-scenario och returnera dess reproducerbarhetstabell som CSV-text, den bytestabila tabell som kommandoraden skriver som <scenario>.table.csv och som artiklarna citerar. Bara dessa slag ger en: realtime-frame-eop, lunar-time-budget, lunar-jamming, telecom-timing, leo-navmsg när dess encode-decode-analys körs på en meddelandemodell kepler16 eller kepler-rac (tabellen för utsänd efemerid) och moonlight-service-volume när både export_site_lat_deg och export_site_lon_deg är satta. Ger fel för varje annat slag (eller ett ogiltigt scenario); använd run_scenario för kvalitetsmåtten.
sky_geometryHimmelsgeometri under en azimutberoende horisontlinje (en gatukanjon, en hamn, en fjord, en containerterminal): utifrån en plats, en tid och konstellationsförinställningar, tvåradiga elementuppsättningar (tle, med en UTC-epoch) eller satelliter angivna som azimut/elevation eller ECEF, vilka satelliter som är synliga och vilka som skyms av horisontlinjen, GDOP/PDOP/HDOP/VDOP/TDOP från DOP-kärnan som kontrollerats mot gnss_lib_py, öst-nord-upp-kofaktorn och kovariansen med en mottagarklocka per system (eller en gemensam), samt den horisontella felellipsen vid en sigma och vid en angiven konfidens för en angiven UERE. Utan request beskrivs en REPRESENTATIVE horisontförinställning med sin proveniens och sin skärning för varje grad (en tom skyline_preset listar dem). Scenarier av slagen orbit och integrity (med user_site), gnss-sim, jamming, leo-pvt och leo-pass tar samma [skyline]-sektion via run_scenario. Evidensnivå MODELLED: geometri under en angiven felmodell, endast fri sikt; inte en prediktion av en mottagares verkliga fel och inte en integritetsgräns; förinställda konstellationer är en representativ himmel, inte himlen ett visst datum; tle-text med en epoch (UTC) ger den himmel som de elementuppsättningarna ger vid den epoken (SGP4), inte en mätning, och sky_source anger vilken. Bär det rådgivande budskapet: inte typgodkänd navigationsutrustning. Ingen Monte Carlo över MCP (bulkurval; använd CLI, Python eller WASM). Endast inbäddat, högst 4 MiB.
iq_signalsUppsättningen av GNSS-IQ-lagret, som JSON: signals (de signalnamn som iq_scene, iq_acquire och iq_track godtar), enabled (om IQ-filverktygen är på), work_dir (den enda mapp de läser och skriver; varje sökvägsargument är relativt den), max_samples (flest komplexa samplingar som ett anrop får generera eller bearbeta) och, när det är av, reason. IQ-samplingar färdas aldrig genom protokollet: verktygen tar filsökvägar i arbetskatalogen och svarar med kompakta JSON-sammanfattningar. IQ-lagret lägger inte till någon syntes av störning eller spoofer; ingenting sänds någonsin. Anropa detta först.
iq_infoBeskriv en IQ-inspelning i arbetskatalogen utan att bearbeta den: slag (rå med sidovagn, SigMF, SigMF-samling), samplingsformat, samplingshastighet, mittfrekvens, totalt antal samplingar, varaktighet, datafiler och deras storlek, inspelningsgränser och antal annoteringar, som JSON (samma rad som kshana iq info skriver ut). Valfria raw beskriver en rå fil utan sidovagn; valfria hash lägger till varje datafils SHA-256 (läser hela filen).
iq_sceneGenerera en GNSS-IQ-scen med flera satelliter till en fil i arbetskatalogen (kshana iq scene). Läge med angiven profil: signal + prns (+ valfria dopplers_hz, cn0_dbhz, data). Läge med utsänd data: nav (en RINEX-navigationsfil i arbetskatalogen) + rx_pos [lat, lon, alt] placerar varje frisk GPS-satellit i sin verkliga utsända geometri. Valfria channel tillämpar jonosfär, troposfär, scintillation, flerväg, skuggning vid markrörlighet eller NLOS på signalnivå. rate_hz × duration_s måste rymmas inom samplingsbudgeten (se iq_signals). Skriver inspelningen (rå + <out>.json-sidovagn, eller ett SigMF-par) och en referenssidovagn; svarar med de skrivna filerna och deras bytetal, antalet samplingar och samplingen samt referensens första epok per satellit (kodfas, Doppler, C/N0) att poängsätta iq_acquire mot. IQ-lagret lägger inte till någon syntes av störning eller spoofer; ingenting sänds någonsin.
iq_acquireFFT-förvärv av en eller flera PRN över en IQ-inspelning i arbetskatalogen (kshana iq acquire). Läser bara de samplingar en sökning behöver (koherenta × inkoherenta kodperioder), vilka måste rymmas inom samplingsbudgeten. Valfria frontend-steg (bandpass, notch, blankning, excision, AGC, kvantiserare) körs först. Svarar med en detektering per PRN: acquired, doppler_hz, code_phase_chips, den normaliserade toppen statistic, dess detektionsthreshold och peak_ratio; json_out / csv_out behåller också hela resultatet som filer, och surface_out (en PRN; .csv, .json eller .bin) behåller hela korrelationseffektytan över Doppler × kodfas med toppen och dess parabola och finsökta Dopplerförfiningar.
iq_trackFörvärva och spåra sedan en eller flera PRN över en IQ-inspelning i arbetskatalogen (kshana iq track): förvärvet initierar varje kanal, därefter spelar DLL/PLL-slingbanken (valfritt FLL-assisterad) upp inspelningen en gång. De spårade samplingarna (hela inspelningen, eller dess första max_seconds) måste rymmas inom samplingsbudgeten. Slingorna kommer från design (en kshana.loop-design/1-TOML-fil i arbetskatalogen, design_name för att välja en) eller den inbyggda utformningen, där slingargumenten åsidosätter den; reacquire återförvärvar en kanal som tappar låsning eller falsklåser. Spårningen strömmar, så minnet växer inte med inspelningen. Svarar med utformningens namn och hash, eventuella warnings (commensurate_sampling: en samplingshastighet som är en multipel av halva kiphastigheten gör kodslingans jitter och bias ickerepresentativa) och, per kanal, antal epoker, spårade sekunder, slutlig Doppler och kodfas, slutlig och genomsnittlig C/N0 (dB-Hz), andelarna epoker i fas- och kodlåsning, locked_at_end, slutligt låsningstillstånd, upptäckta falsklåsningar och återförvärv. Utdata per epok går bara till filer: epochs_out (E/P/L, diskriminatorer, slingtillstånd, C/N0, låsningstillstånd; .csv/.jsonl/.bin), events_out, json_out / csv_out. En PRN som inte förvärvats avvisas med sin statistik och sin tröskel.
iq_frontendTillämpa DSP för mottagarens front end och störningsdämpning på en IQ-inspelning i arbetskatalogen och skriv resultatet som en ny rå inspelning med en <out>.json-sidovagn (kshana iq frontend). stages väljer vilka som helst av: bandpass_hz [lo, hi] FIR, adaptiv notch, pulsblankning blank, frekvensdomänens excise, agc och en kvantiserare med bits bitar (föregången av en automatisk AGC om inte no_agc), alltid i den ordningen. Hela indata måste rymmas inom samplingsbudgeten. Svarar med de bearbetade samplingarna och de skrivna filerna med deras bytetal. Detta bearbetar en inspelning; det syntetiserar ingenting.
iq_campaignKör en kampanj med labbuppspelning som ligger i arbetskatalogen (kshana iq campaign): inspelningar (var och en beskriven av en kshana.test-conditions/1-fil som anger labbets kända referens) x front end-kedjor x slingutformningar, där varje cell spåras och poängsätts mot de angivna villkoren (tid till förlorad låsning, tid för återförvärv, C/N0-försämring mot angiven J/S bredvid en analytisk referens märkt MODELLED, frekvens av falsklåsning, PLL/DLL-jitter, tillgänglighet). Inkrementell: ett anrop kör de väntande celler som ryms inom samplingsbudgeten (eller max_cells), varje färdig cell behålls och nästa anrop återupptar. Svarar med celltalen, misslyckanden, de skrivna filerna och digest när alla celler är klara. Poängsätter bara inspelade data; den syntetiserar ingen störning.
iq_campaign_statusRedovisa en labbuppspelningskampanjs framsteg från dess utdatamapp i arbetskatalogen, endast genom att läsa filer: färdiga och väntande celler, inspelningarna, front ends och utformningar i planen samt digest när alla celler är klara.
iq_sweepSpela upp en IQ-inspelning i arbetskatalogen över flera utformningar av spårningsslingor och redovisa varje utformnings stationära resultat (kshana iq sweep): utformningarna är varje utformning i en kshana.loop-design/1-fil (design), eller produkten av listorna pll_bws_hz, dll_bws_hz, spacings_chips och coherents på den inbyggda utformningen. Varje PRN förvärvas en gång och varje kanal (utformning, PRN) spårar samma samplingar, så varje resultat är exakt det som uppstår när utformningen körs ensam. Svarar med, per utformning och PRN, epochs, phase_jitter_deg och code_jitter_chips (över körningens andra hälft), phase_lock_frac, code_lock_frac, mean_cn0_dbhz och utformningens hash; json_out / csv_out behåller tabellen som filer. Det spårade intervallet måste rymmas inom samplingsbudgeten (max_seconds begränsar det) och högst 256 kanaler (utformning, PRN) körs per anrop. Detta bearbetar en inspelning; det syntetiserar ingenting.
iq_monitorKör övervakarna för störnings- och spoofingdetektering över en IQ-inspelning i arbetskatalogen (kshana iq monitor): de bredbandiga övervakarna power och spectral och, givet signal + prns, övervakarna för C/N0 och signalkvalitet per satellit, var och en mot en baslinje som lärts in från de första baseline_s sekunderna (eller från en inställningsfil). Svarar med serierna (namn och längd), varje händelse som övervakarna gav upphov till (start, slut, övervakare, vad som ändrades; högst 200 i svaret) samt de inställningar och baslinjer som övervakarna lärde sig; json_out behåller hela rapporten (varje serie, händelse och spektrum) och csv_prefix skriver <prefix>.series.csv och <prefix>.events.csv. Intervallet måste rymmas inom samplingsbudgeten (max_seconds begränsar det). En övervakarhändelse säger att en uppmätt storhet lämnade sin inlärda baslinje; den identifierar ingen orsak eller källa. Detta poängsätter bara inspelade data; det syntetiserar ingenting. Evidensnivå: MODELLED.
iq_test_conditionsValidera en testvillkorsfil från labb (kshana iq conditions): en kshana.test-conditions/1-fil, TOML- eller JSON-text, som anger labbets kända referens för en inspelning (de förväntade satelliterna, insvängningstiden, det angivna schemat för jamming eller störning). Svarar med de lösta villkoren och deras hash, eller skälet till att filen är ogiltig. Endast inbäddat: ingenting läses från disk, och en inspelningssökväg som filen namnger öppnas inte (en kampanj löser dem inom arbetskatalogen). Indata är begränsade till 4 MiB.
iq_labfitAnpassa modellen för förlorad låsning i spårningsslingan till labbkörningar (kshana iq labfit): en iq-labfit-scenario-TOML namnger en eller flera körningar, var och en en mottagarlogg plus dess angivna testvillkor; motorn läser in varje logg, anpassar slingmodellerna och de empiriska modellerna, bootstrappar osäkerheten och beräknar felet på den undanhållna datamängden. Allt är inbäddat: varje körnings log ger text eller base64 (en path avvisas) och verktyget läser och skriver ingen fil, så det behöver inte IQ-arbetskatalogen. Alternativt namnger scenariots [input] campaign = "<out-dir>", en färdig utdatamapp från kshana iq campaign: verktyget anpassar då C/N0-modellerna och låsningsmodellerna till dess poängsatta celler (en kshana.labfit-iq/1-rapport; Q anges, anpassas aldrig, och den identifierbara J/S-offseten anpassas; med mode = "validation" krävs en [validation]-tabell). Den mappen löses relativt IQ-arbetskatalogen och måste ligga inom den (allt utanför avvisas); den läses, ingenting skrivs. Svarar med den tolkade report, residualerna och prediktionerna som CSV-text och en Markdown-sammanfattning. Indata är begränsade till 4 MiB. Anpassningen beskriver de givna labbkörningarna; den är ingen prediktion för andra mottagare eller villkor utöver vad rapporten anger. Evidensnivå: MODELLED.
assess_vessel_streamPoängsätt ett begränsat utdrag ur ett fartygs NMEA 0183-ström på samma sätt som kshana receiver-trust live poängsätter den, och returnera förtroendetillstånd per epok (calibrating, nominal, degraded, untrusted) och poäng från 0 till 100 med de övervakare som gav avdrag (live JSON-lines-schema 1,3: varje epok bär position, ett advisory-påstående om att utdata är rådgivande, och sin satellitgeometri geometry (good, degraded med skäl som few-satellites eller high-pdop, eller unknown när utdraget saknar GSV eller GSA) med en label (good, fair, poor; geometri ger bara avdrag när den är poor); varje avdrag bär en class: geometry (himlen, inte ett konstaterande att ingen attack skedde), environment eller inconsistency (attackliknande)), sammanfattningen (antal per tillstånd, geometri och klass, lägsta och sista poäng, när den första epoken med untrusted kom) och den senaste $PKSHT-meningen. session_toml deklarerar fartyget ([platform] kind = "vessel", dess gränser för fart, acceleration och svängtakt, antennhöjd och om en kompass finns på bussen). Utdraget måste innehålla kalibreringsfönstret; indata är begränsade till 2 MiB och 20 000 epoker, och svaret bär högst 200 rader med epoker som är degraded eller untrusted. Detta är den begränsade formen av live-kommandot: inget uttag öppnas och ingenting skrivs till en port, och grinden och telemetriexportörerna (den långvariga processen och dess --listen-server) finns bara på kommandoraden. Kontrollerna kan inte se en spoofer vars positionsbestämning stämmer med allt på bussen. Endast rådgivande: inte typgodkänd navigationsutrustning; operatören är fortsatt ansvarig. Evidensnivå: MODELLED.
jammertest_importLäs den publicerade testkatalogen och sändningsplanen för Jammertest (NPRA/jammertest-plan, MIT) som schemalagd referens (kshana jammertest import): luckorna i ett testområde blir receiver-trust-händelser med katalog-id och år i varje etikett. plans innehåller en planfil per dygn, log_start_utc är loggens första epok, local_offset_h planens förskjutning från UTC (standard 2, CEST). Returnerar events_toml (lägg till den i en receiver-trust-session), events (test-id, slag, start och slut i sekunder sedan loggstarten) och antalet överhoppade. Händelserna är PLANERADE luckor, inte inspelade sändningstider: en lucka kan börja sent eller aldrig köras, och planens fält status är oftast tomt. Inget kontakt- eller personfält i planen läses. Indata är begränsade till 4 MiB per text. Evidensnivå: MODELLED.
jammertest_scorePoängsätt en mottagarlogg mot schemat för Jammertest (kshana jammertest score): per schemalagt test detektionsfördröjningen (första larm minus planerad start), om det upptäcktes inom toleransen, sent eller missades, och tiden till återhämtning (en larmfri period på recover_hold_s), samt falsklarmen utanför varje lucka och dess skyddsintervall. session_toml behöver bara [log] format = "ubx" (eller rinex, android, nmea, sbf); ange loggen som log (textformat) eller log_base64 (binärt). Behöver katalogens och planens JSON (catalog_json, plans) och testområdet (location). Returnerar resultattavlan: tests, summary, baseline_contaminated och en etikett MODELLED. Schemat är planerade luckor, inte inspelade sändningstider, så en miss kan vara ett test som aldrig kördes. Ett signerat bevispaket behöver en signeringsnyckel: använd kommandoraden (kshana jammertest score --key). Indata är begränsade till 4 MiB per text. Endast rådgivande: inte typgodkänd navigationsutrustning; operatören är fortsatt ansvarig. Evidensnivå: MODELLED.
assess_vessel_logBedöm ett fartygs NMEA 0183-logg som en batchkörning (kshana receiver-trust med [platform] kind = "vessel"): poängmodellen, de övervakare som kördes och varje epoks poäng från 0 till 100 med sina avdrag, dess satellitgeometri (good, degraded, unknown) med en label (good, fair, poor) för varje epok, där geometri bara ger avdrag när den är poor, och en klass för varje avdrag (geometry, environment, inconsistency), med geometry_model (trösklar, gällande tak och golv samt proveniens) och geometry_summary. session_toml anger fartygets gränser och eventuella övervaknings- eller poänginställningar (ingen [log]-tabell behövs) och nmea är logtexten, vilket undviker att klistra in den i en TOML-sträng. Indata är begränsade till 4 MiB; svaret bär dokumentet med epochs nedkortat till antal per tillstånd och högst 200 epoker som är degraded eller untrusted. För en logg i ett annat format, eller med [[events]] att poängsätta, använd assess_receiver_log. Endast rådgivande: inte typgodkänd navigationsutrustning; operatören är fortsatt ansvarig. Evidensnivå: MODELLED.
generate_training_nmeaGenerera syntetisk NMEA 0183 för bryggan för besättningsutbildning utifrån en nmea-scenario-TOML (kshana nmea-scenario): ett fartygsspår och en tidslinje med skriptade händelser (jamming, positionsavdrift, tidsspoofing, replay-fördröjning, med återhämtning). Returnerar den uppsättning meningar med giltig kontrollsumma (GGA, RMC, VTG, GSV, GSA, GNS, ZDA, HDT, VBW; de första 2000 raderna) och instruktörsloggen (vad som injicerades när, med det verkliga spåret och en summary på toppnivå med högsta farter och accelerationer; händelser med avdrift bär sin högsta avdriftsfart och acceleration; schema kshana-nmea-training/1) som JSON och text. Mottagarens tak för synliga satelliter är receiver.max_used (standard 12). Deterministisk per seed. ENDAST TEXT: ingenting här syntetiserar RF, IQ eller någon vågform, ingenting sänds, och utdata är för utbildning och test, aldrig för ett fartygs levande navigationssystem (en markörmening i strömmen säger det). Rådgivande, inte typgodkänd navigationsutrustning. Strömning till en TCP- eller UDP-adress finns bara på kommandoraden. Fyra exempelscenarier levereras i scenarios/training/.
create_evidence_packSkapa ett signerat bevispaket för ett fönster i ett fartygs NMEA 0183-logg (kshana receiver-trust evidence): de råa logbyten för fönstret, konfigurationen med varje tröskel, resultaten och skälen per epok, en fristående sammanfattningssida samt ett manifest som listar varje fils SHA-256 med hela loggens hash och en hashkedja, signerat med Ed25519. from_s/to_s är sekunder sedan loggens första epok. Returnerar filerna som JSON (mata dem till verify_evidence_pack), signerarens publika nyckel och fingeravtryck. Signeringsfröet returneras eller loggas aldrig; om signing_key_seed_hex utelämnas används en engångsnyckel som kasseras, så paketet bevisar integritet mot den nyckel som det själv namnger, inte vem som signerade: för en nyckel som spelar roll, skapa paketet på kommandoraden (ett frö som skickas hit färdas genom konversationen). Indata är begränsade till 4 MiB och svaret till 4 MiB (smalna av fönstret). Ett paket är en teknisk redogörelse för vad motorn beräknade ur en logg under angivna inställningar; det är inte ett juridiskt utlåtande, ett faktakonstaterande om någon händelse eller en certifiering. Evidensnivå: MODELLED.
create_round_trip_packSkapa det signerade laboratoriepaketet för tur och retur (kshana evidence round-trip, docs/spec/TEST-CONDITIONS.md): länkar via hash scenariot som gav rörelsen, laboratoriets kshana.test-conditions/1-dokument, mottagarloggen och dess poäng mot de angivna händelserna, i ett signerat bevispaket vars config.json bär ett round_trip-block. Avvisar ett paket vars villkor och poängsättande händelser inte stämmer överens, eller vars angivna SHA-256 för loggen inte är loggens. INGEN SIGNAL: ingenting skrivs, spelas upp eller schemaläggs; hur ett scenarios rörelse nådde mottagaren är operatörens ansvar och registreras bara som det anges. Signeringsfröet returneras eller loggas aldrig; utelämnat används en engångsnyckel som kasseras (integritet, inte identitet). Indata är begränsade till 4 MiB och svaret till 4 MiB. En teknisk redogörelse, inte ett juridiskt utlåtande eller en certifiering. Evidensnivå: MODELLED.
verify_evidence_packVerifiera ett signerat bevispaket (kshana evidence verify): varje fils SHA-256 mot manifestet, hashkedjan, Ed25519-signaturen, och med public_key (signerarens nyckel, från signeraren på annan väg) att signeraren är den förväntade, och med full_log att loggen du har är den som paketet registrerar och att utsnittet kom från den. Returnerar rapporten: ok, varje fel med kod och fil, varje kontroll, signer_pinned, anteckningar och en verdict: verified (signeraren är fastlåst), intact-signer-not-pinned (allt stämmer men ingen betrodd public_key gavs, så signaturen bevisar bara att paketet är intakt mot den nyckel som det själv namnger, vilken vem som helst kan generera; säg det, kalla det inte verifierat) eller failed, med ett message att visa för användaren. require_timestamp underkänner ett paket som saknar tidsstämpelstoken. Indata är begränsade till 4 MiB. Ett godkänt resultat säger att uppgiften är oförändrad och vem som signerade den (nyckeln du angav); det säger inte vad som orsakade någon händelse, vem som är ansvarig eller att loggen visar vad mottagaren verkligen tog emot.
build_interference_mapBygg en GNSS-störningskarta av öppet licensierade positionsrapporter från flygplan (ADS-B NIC/NACp) eller fartyg (AIS) som ges som CSV-text (kshana interference-map adsb|ais). Returnerar ett GeoJSON-dokument per UTC-dygn (schema kshana-interference-map/v1) (filnamn <source>-<dataset>-<date>.geojson; metodversion 2) där varje publicerad rutnätscell är degraded, not_degraded, insufficient_sample, withheld_day_confounded eller withheld_no_background (ADS-B) eller anomalous/not_anomalous (AIS), med metoden, dess förhandsregistrerade trösklar, datamängdens licens och tillskrivning inbäddade. Varje antal per cell under publiceringsminimum (5) är null (undanhållet, aldrig noll), och ett dygn vars bakgrund inte kan skattas undanhåller sina bedömningar. Endast aggregat: identifierare hashas i minnet och returneras aldrig, och en cell med färre än 5 distinkta flygplan eller fartyg publiceras inte. dataset är en tillåten förinställning eller custom (med licens, licens-URL, tillskrivning). Indata är begränsade till 4 MiB och svaret till 4 MiB (använd en grövre cell_deg eller kommandoraden för mer). Ingenting hämtas: landpolygoner, om de önskas för AIS, skickas in. En försämrad cell identifierar inte störning som orsak; en opublicerad cell är inget belägg för en fri cell; detta är ingen prognos. Evidensnivå: MODELLED.
route_exposureSammanfatta hur stor del av en rutt som går genom försämrade celler i en eller flera störningskartor (kshana route-exposure): för varje karta (en per källa och UTC-dygn, den GeoJSON som build_interference_map returnerar), ruttens längd och andelarna av dess längd i försämrade celler, i celler som inte var försämrade, i celler med för litet urval för att bedömas och i celler som inte observerats. Rutten är en GeoJSON-LineString eller CSV-text av typen lat,lon; date_from/date_to (ÅÅÅÅ-MM-DD) behåller kartor inom ett datumintervall. Indata är begränsade till 4 MiB per post. Celler som inte observerats är inget belägg för en fri rutt; en försämrad cell identifierar inte störning som orsak; detta beskriver tidigare rapporter och är ingen prognos. Evidensnivå: MODELLED.
compliance_reportFyll i mappningen mot offentliga ramverk utifrån Kshanas resultatdokument (kshana compliance-report): vilka rader i sex ramverk och standarder för resiliens (USA:s DHS-ramverk Resilient PNT v2.0, IMO:s vägledning för fartyg, EASA:s vägledning för luftfart, NIS2 artikel 21, EN 16803, NIST IR 8323r1) de givna körningarna ger belägg för, vilka de inte gör, och den lucka som varje rad behåller. Ange varje körning som label, result (resultat-JSON-texten) och, när du har den, scenario (scenario-TOML, som namnger det slag som ett resultat inte gör; ett receiver-trust-resultat behöver ingen). Högst 64 körningar och 4 MiB totalt; ingenting läses från disk. Varje rads status är evidenced, partly-evidenced, not-evidenced eller out-of-scope, och varje rad behåller sin gap även när den är evidenced; indata som inte kunde användas listas i unrecognised och räknas som ingenting. Visa rapportens statement med varje resultat, ordagrant: en status betyder att en körning ger belägg för de förmågor som raden namnger; det är inte ett konstaterande att ett ramverk är uppfyllt, och det betyder inte att någon produkt har betygsatts eller godkänts av någon. Beskriv inte utdata i starkare ordalag. Evidensnivå: MODELLED.
compliance_mappingDen statiska kartläggningen mot offentliga ramverk (kshana compliance-report --mapping / --sources) som Markdown: en tabell per ramverk med varje rads parafraserade krav, de utdata från Kshana som ger belägg för det och den lucka som utdata inte täcker; eller, med sources satt till true, de källdokument som tabellerna hänvisar till med versioner och URL:er. Inleds med det påstående som varje rapport innehåller och som följer med varje utdrag: en rad markerad som evidenced betyder att en körning ger belägg för de förmågor som raden nämner; det är inte ett konstaterande att ett ramverk är uppfyllt, och det betyder inte att någon produkt har betygsatts eller godkänts av någon. Kräver inga körningar.
fit_imu_logAnpassa sensorparametrarna för scenarierna hybrid och fusion utifrån en IMU-logg i stillastående (kshana imu-fit, docs/MACHINE-INPUTS.md). Dessa scenarier tar brusparametrar, inte en tidsserie: det här läser av dem ur en logg som spelats in med sensorn hållen stilla, med den överlappande Allan-avvikelsen för den integrerade signalen. Returnerar JSON: fit (accelerometerns bias, PSD för hastighetens slumpvandring q_va, gyrots bias, PSD för vinkelns slumpvandring q_arw, golvet för biasinstabilitet när loggen är tillräckligt lång för att visa ett, loggens samplingstakt och tidsomfång, de tidiga Allan-lutningarna samt notes om det som inte kunde anpassas eller litas på), toml (en [accel_classical]-tabell vars proveniens anger loggens SHA-256, färdig att klistra in i ett scenario) och sha256. En logg som inte var stillastående, eller som är för kort eller ojämnt samplad, ger felaktiga parametrar eller avvisas; lutningarna (omkring -0,5 där vitt brus dominerar) visar vilket. Ingenting skrivs till disk. Evidensnivå: MODELLED (skattaren tillämpad på loggen, ingen extern oberoende referens).
list_standards_packsLista standardpaketen (kshana standards-pack list): poängsatta scenariouppsättningar för testprofilerna i DHS Resilient PNT framework, IMO MSC.1/Circ.1575 och ICAO Doc 9849 Appendix F, var och en med de trösklar den anger före körningen och de compliance-rader den ger belägg för. Kräver ingen indata. Ett paket mäter modellerade scenarier mot angivna trösklar; det betygsätter ingen produkt. Evidensnivå: MODELLED.
run_standards_packKör ett standardpaket (kshana standards-pack run <id>): varje scenario i det, poängsatt mot trösklar som angetts före körningen. Returnerar rapporten (varje test MET, NOT MET eller NEEDS INPUT när det behöver en mottagarlogg och inte poängsätts; varje tröskel med sitt uppmätta och förväntade värde) och samma sak som markdown. Skicka rapportens JSON till compliance_report för att se de rader som paketet ger belägg för. Säg tydligt att en MET-tröskel betyder att ett modellerat scenario nådde en angiven tröskel och att ett NOT MET är ett resultat som ligger kvar i registret; beskriv aldrig utdata som att de visar att en produkt eller ett ramverk är uppfyllt. Endast rådgivande: analysutdata, inte typgodkänd navigationsutrustning. Evidensnivå: MODELLED.
lunanet_afs_checkKontrollera LunaNet Augmented Forward Signal (AFS) mot den publicerade specifikationen, fastlåst till LNIS Version 5 Applicable Document 1 Volume A (LSIS-AFS V1.0, 29 januari 2025) (kshana lunanet-afs-check, docs/LUNANET-AFS.md). Läget spec kontrollerar den här implementationen mot dokumentets tryckta kodtabeller (de första och sista 24 chipsen i varje AFS-I Gold-, AFS-Q Weil- och tertiärkod för PRN 1 till 210, samt båda Legendre-sekvenserna) och de genomgångna exemplen (SB1 BCH, CRC-24Q), trösklarna B1 till B10 i en förhandsregistrering; B4 rapporterar ett missat krav (dokumentet skriver ut samma sista 24 chips för tertiär PRN 147 och 151). Läget symbols kontrollerar en symbolström med hårda beslut (text med 0 och 1) avseende synkroniseringsmönster, SB1-avkodning, FID, TOI-kontinuitet och ramavstånd. Delramarna 2 till 4 (LDPC med hastighet 1/2, CRC-24Q) är INTE verifierade: LDPC-matriserna finns i en separat bilaga som inte är implementerad. Läget generate returnerar en teststräng med platshållardelramar: symboler, inte en vågform; Kshana skriver ingen signal. VALIDATED endast mot de tryckta tabellerna i den utgåvan, som dokumentet självt markerar som TBC; säg det, och beskriv inte ett resultat som att det visar att någon LunaNet-nod eller tjänst är korrekt. Endast rådgivande.
score_benchmarkPoängsätt en kshana-bench-inlämning (kshana bench score, bench/SPEC.md, docs/BENCH.md): en prediktionsfil (kshana-bench-predictions/1) mot en referensfil (kshana-bench-truth/1), båda JSON-text, högst 4 MiB vardera, och returnera resultatfilen (kshana-bench-result/1) med specifikationsversion, uppgift (a detektion på mottagarloggar, b detektion på IQ, c prediktion av timing-holdover, d optimismglapp utanför fördelningen), delmängd, SHA-256 för båda indatafilerna och uppgiftens mått (AUC, detektionssannolikhet vid ett tak för falsklarm, RMSE per horisont, eller optimismglappet). threshold är det deklarerade larmtröskelvärdet för uppgift a och b. Ingenting läses från disk eller skrivs. Varje poäng är MODELLED och beskriver en logg eller ett korpus, aldrig en produkt; det är inte en certifiering och ingen organisation stöds av en poäng. Evidensnivå: MODELLED.
render_leaderboardRendera resultatfiler från kshana-bench (kshana bench leaderboard) som den statiska resultattavlan, HTML-text i svaret: results är en lista med JSON-texter av typen kshana-bench-result/1 (högst 256, 4 MiB vardera), var och en validerad först; en fil som poängsatts under en annan större specifikationsversion avvisas eftersom resultat från olika större versioner aldrig sätts i samma tabell. En rad säger att den här filen fick det här talet på den här delmängden; den betyder inte att någon produkt har betygsatts eller godkänts av någon. Ingenting skrivs. Evidensnivå: MODELLED.
trust_telemetryRendera en GNSS-förtroendeström eller ett receiver-trust-resultat som säkerhetstelemetri i textform (kshana trust-telemetry, docs/TRUST-TELEMETRY.md), med samma kodare som kommandoraden använder: prometheus (exponeringen av det slutliga tillståndet), cef eller leef (en syslog-rad enligt RFC 5424 per bandbyte, eller per epok med syslog_all; ingen tidsstämpel, eftersom ingen klocka läses) eller otlp (nyttolasten med OTLP/HTTP JSON-mätvärden). input_kind är jsonl (standard) eller result; en strömrad som inte kan tolkas hoppas över och räknas i kshana_trust_input_errors_total. Ingenting skickas, serveras eller skrivs: utdata är text i svaret (de körande exportörerna, som är en process, finns kvar på kommandoraden). Mottagarens rapporterade position utelämnas om inte expose_position är true. Indata som innehåller satellitgeometri (levande schema 1,3, resultat från 0,36) lägger till geometrietiketten (good, fair, poor; poängsätts aldrig utom för poor) och status, HDOP, PDOP, VDOP och antalet använda satelliter, samt en class-etikett (geometry, environment, inconsistency) på varje orsak; äldre indata renderas precis som tidigare. Endast rådgivande: Kshana är inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162) och operatören är fortsatt ansvarig. Evidensnivå: MODELLED.
export_test_benchExportera ett scenarios fordonsrörelse och händelser för en GNSS-simulator i laboratorium (kshana bench-export, docs/TEST-BENCH.md): en rörelse-CSV och dess JSON-beskrivning (jordfast och geodetisk position, hastighet, attityd, UTC), NMEA 0183-meningar av typen GGA/RMC, en waypoint-text när samplingsrutnätet är millisekundregelbundet, samt scenariots händelser som CSV och som [[events]] TOML för ett receiver-trust-scenario. Gäller för gnss-ins (dess avbrott i navigeringstillståndet är händelserna), jamming och gnss-sim; en annan typ avvisas med skälet angivet. epoch är UTC-ögonblicket för rörelsetidens nollpunkt, YYYY-MM-DDTHH:MM:SS (standard 2024-01-01T00:00:00Z). Ingenting skrivs till disk: det första innehållsobjektet är ett JSON-index (files med suffix, bytes, sha256; notes för varje utelämnad fil; notice), följt av varje fils text i indexets ordning. Samma scenario och epok ger byteidentiska filer. INGEN SIGNAL: ingenting som exporteras är, modellerar eller styr en radiofrekvens- eller basbandssignal, och en händelse är ett märkt intervall, inte ett recept för att framställa störning; simulatorn och dess operatör tillhandahåller signalerna och ansvarar för att köra dem endast där det är tillåtet. Behåll meddelandet tillsammans med filerna. Kshana publicerar inga resultat från sådana körningar. Evidensnivå: MODELLED.
attach_evidence_timestampKnyt en tidsstämpeltoken enligt RFC 3161 till ett bevispaket (kshana evidence attach-timestamp), i minnet: files är ett paket så som create_evidence_pack returnerar det, token_base64 är byten i .tsr-filen från en tidsstämpelmyndighet. Token lagras som timestamp.tsr bredvid det signerade manifestet, inte i det, och paketet med token måste fortfarande kunna verifieras, annars bifogas ingenting; en befintlig token behålls om inte replace är true. Returnerar de uppdaterade files (mata dem till verify_evidence_pack med require_timestamp satt till true för att kräva att token finns) och verifieringsanteckningarna. Detta kontrollerar INTE tidsstämpelmyndighetens signatur på token eller myndighetens certifikat (det kontrollerar tokenens struktur och att dess meddelandeavtryck är hashen av det här paketets manifest.json): säg det, och hänvisa användaren till openssl ts -verify. Indata och svar begränsas till 4 MiB. En tidsstämpel visar att en hash fanns vid en tidpunkt som myndigheten anger; det är inte ett juridiskt utlåtande. Evidensnivå: MODELLED.
En tabell, genererad från förrådets packaging/channels.json och korskontrollerad mot dess README-filer, så att varje kommando är det som README visar, fastlåst till v0.40.0. Förbyggda binärer för varje operativsystem, tillägget för skrivbordsassistenten, enklickknappar för Cursor och VS Code, startprogrammen npx och uvx, Homebrew, Scoop och winget, registren och ett självhostat HTTP-läge. Kanaler markerade när den publiceras går live med utgåvan.
Själva motorn, i det språk eller den miljö du arbetar i.
För alla, inget att installera. Kräver: inget.
Motorn körs lokalt som WebAssembly; ingenting laddas upp.
För ingenjörer som vill ha kommandot kshana. Kräver: Rust.
Fastlåst till v0.40.0cargo install kshana --version 0.40.0
Kontrollera sedankshana --version
För Rust-utvecklare som bäddar in motorn. Kräver: Rust.
Fastlåst till v0.40.0cargo add kshana@0.40.0
Kontrollera sedancargo tree --depth 1 | grep kshana
För analytiker och notebooks. Kräver: Python.
Fastlåst till v0.40.0pip install kshana==0.40.0
Kontrollera sedanpython -c "import kshana; print(kshana.version())"
För webb- och Node.js-utvecklare. Kräver: Node.
Fastlåst till v0.40.0npm install kshana@0.40.0
Kontrollera sedannpm ls kshana
Rådgivande, inte typgodkänd navigationsutrustning: operatören är fortsatt ansvarig för navigeringen. Servern körs på din dator; ingenting skickas till Ashforde OÜ.
För alla som använder en MCP-kapabel assistent. Kräver: Rust 1,88+.
Fastlåst till v0.40.0cargo install kshana-mcp --version 0.40.0
Kontrollera sedancargo install --list | grep kshana-mcp
För dig utan Rust-verktygskedja; MCP-servern i en container. Kräver: Docker.
Fastlåst till v0.40.0docker run --rm -i ghcr.io/ashfordeou/kshana-mcp:0.40.0
Kontrollera sedandocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
För användare av skrivbordsassistenten, utan terminal. Kräver: inget.
macOS (Apple silicon)macOS (Intel)WindowsLinux (x86-64)Linux (Arm)
Dubbelklicka på kshana-mcp-<target>.mcpb.
För Cursor-användare. Kräver: Node eller Docker.
Fastlåst till v0.40.0kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
För användare av VS Code och Insiders. Kräver: Node eller Docker.
Fastlåst till v0.40.0kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
Installera i VS Code (npx)Installera i VS Code (Docker)Installera i VS Code Insiders (npx)
För Node-användare, valfri MCP-klient. Kräver: Node 18+.
Fastlåst till v0.40.0kshana-mcp@0.40.0
Kontrollera sedannpx -y kshana-mcp@0.40.0 --version
Ett startprogram: det laddar ner utgåvans binär, verifierar SHA256SUMS och kör den.
För Python-användare, valfri MCP-klient. Kräver: Python 3,9+ med uv eller pipx.
Fastlåst till v0.40.0kshana-mcp==0.40.0
Kontrollera sedanuvx kshana-mcp==0.40.0 --version
För macOS och Linux. Kräver: brew.
Fastlåst till v0.40.0formula for v0.40.0
Kontrollera sedankshana-mcp --version
För Windows. Kräver: Scoop.
Fastlåst till v0.40.0manifest for v0.40.0
Kontrollera sedankshana-mcp --version
För Windows. Kräver: winget.
Fastlåst till v0.40.0winget install AshfordeOU.KshanaMcp --version 0.40.0
Kontrollera sedankshana-mcp --version
Visas när Microsoft har infogat inlämningen.
För dig utan pakethanterare. Kräver: inget.
Ladda ner kshana-mcp-<target> från utgåvan och kontrollera den mot SHA256SUMS.
För MCP-klienter som stöder register. Kräver: en klient som stöder register.
Sök efter io.github.ashfordeOU/kshana-mcp.
För klienter som tar en URL. Kräver: din egen värd.
Fastlåst till v0.40.0v0.40.0
Loopback som standard; en bindning som inte är loopback kräver --allow-remote och en bearer-token. Kshana driver ingen slutpunkt.
Plugin och avbildningar som för in Kshana i andra verktyg.
För användare av IntelliJ, PyCharm och CLion. Kräver: en JetBrains-IDE.
Settings → Plugins → Marketplace → sök efter "Kshana" (plugin-ID dev.kshana.ide). Högerklicka på ett scenario .toml och välj Run Kshana Scenario.
För båtägare som kör en Signal K-server. Kräver: Node, en Signal K-server.
Fastlåst till v0.40.0npm install signalk-kshana-trust@0.40.0
Kontrollera sedannpm ls signalk-kshana-trust
För användare av OpenCPN-kartplotter. Kräver: OpenCPN 5,8+.
Ladda ner pluginets tarball från utgåvan. Utgåvan innehåller tarballen och dess katalogmetadata-XML; en notering i OpenCPN:s katalog sker genom en pull request som öppnas för hand.
För operatörer som kör Grafana. Kräver: Grafana.
Importera kshana-grafana-*.json från utgåvan.
För driftsättningar av gate och bench. Kräver: Docker.
Fastlåst till v0.40.0docker pull ghcr.io/ashfordeou/kshana-reference-build:0.40.0
Från en webbläsarflik till en regressionssvit för kontinuerlig integration (CI). Varje ingång kör samma motor och skriver samma JSON-resultat, SVG-diagram (Scalable Vector Graphics) och HTML-rapport (HyperText Markup Language). Välj en; varje kommando är på riktigt och kopieras med ett klick.
Valfritt medföljande scenario, körs på din dator som WebAssembly; inget installeras, inget laddas upp. Justera det, jämför körningar, svep över en parameter och exportera en reproducerbar rapport.
Endast Kshana Studio, för en kurssida eller en rapport, med scenario och vy förvalda
studio/index.html?embed=1&scenario=integrity-raim&tab=timeserieskshana <scenario>.toml skriver result.json, chart.svg och report.html
Utdata är deterministiska utifrån scenario, frö och motorversion, så en incheckad result.json är ett regressionstest (CI: kontinuerlig integration): kör om och jämför
kshana --study: en svit av scenarier till en stämplad study.json och study.html, gratis. Inte den betalda skräddarsydda studien.
kshana::api::run_toml returnerar JSON, SVG, en sammanfattning och CSV (kommaseparerade värden)
kshana.run och run_full, samt validate_toml och list_kinds
run, summary och chart_svg i webbläsaren eller Node.js
49 verktyg som en AI-assistent kan anropa, vart och ett ett tunt skal över det publika API:t
MCP-servern utan Rust-verktygskedja, för flera arkitekturer
Högerklicka på ett scenario .toml, Run Kshana Scenario, läs måtten i ett verktygsfönster
Kommandoraden, bindningarna för Rust, Python och JavaScript samt de filformat som motorn läser och skriver, sida vid sida. Allt här är den fria öppna kärnan.
kshana --helpFrån binärenkshana <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 körning skriver result.json, chart.svg, report.html, report.json, table.csv bredvid scenariot; --export-sp3, --export-omm och --export-oem skriver banfiler; --animate skriver också körningen som något som rör sig (animation.svg, animation.html, frames: en animerad SVG, en fristående HTML-spelare eller en mapp med numrerade bildrutor), med --animate-fps och --animate-duration för uppspelningshastighet och längd; --export skriver scenariots geometri eller dess syntetiserade signal för andra verktyg: CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON (geografisk JSON), en STK-efemerisfil (Systems Tool Kit), SigMF (Signal Metadata Format); --import-route läser en rutt ritad som en GeoJSON-linje; --eop för in jordorienteringsparametrar från en finals2000A-fil; --study kör en gratis svit av scenarier till study.json och study.html; kshana kinds --json listar varje typ med dess fält; kshana example skriver ut ett scenario att utgå från. Resultat kan färdas i höljet Kshana Interchange Format (KIF). MCP-servern exponerar banexporterna som verktyg.
kshana --study är den fria körningen av sviter. Om du i stället vill ha analysen gjord åt dig är det en betald skräddarsydd studie.
result.json, chart.svg, report.html och samma rapport som report.json, plus en CSV-tabell (kommaseparerade värden) för de typer som publicerar en. På begäran skriver den också en animering av körningen (--animate) och scenariot i de format som andra verktyg läser (--export).Varje program kör det medföljande scenariot clock-holdover (skriv det med kshana example clock-holdover > clock-holdover.toml) och skriver ut samma enradiga sammanfattning. Paketens README-filer innehåller de fullständiga versionerna.
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 också run_scenario, validate_scenario, list_scenario_kinds och banexportörerna. Rust-dokumentation
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)Paketet har också validate_toml och list_kinds. Python-dokumentation
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 stringSamma paket körs i webbläsaren; det är vad Kshana Studio använder. npm-dokumentation
Format som motorn hanterar i dag, från förrådets standardsida (Dokumentation: standarder). Öppna en rad för att se hur du når det och vad det kontrollerades mot.
--export-oem, MCP export_oem--export-omm, MCP export_omm--export-sp3, MCP export_sp3space-packet-scenarierpvtorbit-scenarier--eop med en finals2000A-filexport_table_csvPluginet "Kshana — PNT simulator": högerklicka på ett valfritt scenario .toml, välj Run Kshana Scenario och läs kvalitetsmåtten i ett verktygsfönster.
kshana bench score omvandlar en inlämningsfil och en delmängds referens till en resultatfil, och kshana bench leaderboard renderar resultatfiler till en statisk sida. Ingenting körs för din räkning och ingenting laddas upp.