ブラウザーで試す
どなたでも、インストール不要です。必要なもの:なし。
エンジンは WebAssembly としてローカルで動作し、何もアップロードされません。
機械翻訳であり、ネイティブスピーカーによる確認は行われていません。英語版が基準です。
GNSS(全球測位衛星システム)と PNT(測位・航法・時刻)のレジリエンスのための、一つの Rust エンジンです。コマンドラインインターフェース(CLI)、Rust・Python・JavaScript のパッケージ、ブラウザー上の Kshana Studio、JetBrains IDE(統合開発環境)プラグイン、MCP(Model Context Protocol)サーバーを備え、AI(人工知能)アシスタントは数式を推測せず、照合して確認済みのエンジンを実行できます。AGPL-3.0(GNU Affero General Public License、バージョン 3)または商用ライセンスのオープンソースです。
The recorded session plays here with JavaScript.
リポジトリのマニフェストから生成し、README と突き合わせて確認しているため、すべてのコマンドは v0.40.0 と一致します。kshana-mcp は、AI アシスタントに同じエンジンを提供します。TOML(Tom's Obvious, Minimal Language)のシナリオを入力すると、JSON(JavaScript Object Notation)と CSV(カンマ区切り値)が出力されます。
どなたでも、インストール不要。
エンジンは WebAssembly としてローカルで動作し、何もアップロードされません。
MCP 対応のアシスタントを使う方向け。
次に確認するcargo install --list | grep kshana-mcp
レジストリ名は io.github.ashfordeOU/kshana-mcp です。kshana-mcp の README に従って、お使いのクライアントに登録してください。
{
"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": {}
}
}
}Rust ツールチェーンが不要。コンテナー内の MCP サーバー。
次に確認するdocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
IntelliJ、PyCharm、CLion のユーザー向け。
Settings → Plugins → Marketplace → "Kshana" を検索(プラグイン ID dev.kshana.ide)。シナリオの .toml を右クリックし、Run Kshana Scenario を選びます。
Rust エンジンAGPL-3.0 または商用ライセンスすべてのリリースにソフトウェア部品表とビルドの来歴を添付
記録されたセッションが、ここでステップごとに再生されます。
Studio での同じ実行:エンジン v0.40.0 · clock-holdover.toml · シード 42Kshana Studio で開くレポート
公開されている Kshana API(アプリケーションプログラミングインターフェース)のツール 49 個で、公式 MCP レジストリに io.github.ashfordeOU/kshana-mcp として登録されています。軌道エクスポートは、SP3(Standard Product 3)と CCSDS(宇宙データシステム諮問委員会)の OMM と OEM(軌道平均要素・エフェメリスメッセージ、TEME:True Equator, Mean Equinox 座標系)です。AI アシスタント(MCP サーバー)または Docker イメージの下で登録してください。MCP サーバーのドキュメント
run_scenarioTOML 定義から Kshana の PNT レジリエンスのシナリオを実行し、その性能指標を返します。人が読める要約に続いて、完全な結果の JSON(FoM、曲線)を返します。Kshana は、SGP4/SDP4、IAU の座標系、アラン偏差、GNSS の可用性/DOP、ARAIM の保護レベル、GNSS/INS 融合、量子センサーのモデルを、公表された参照に対して検証します。すべての種類はこの一つのツールで実行でき、spectrum(無線周波数スペクトルとウォーターフォール)、solar-system、constellation-design、body-pnt(任意の天体まわりのコンステレーション)、campaign(連鎖したフェーズ、パラメーター掃引、モンテカルロアンサンブル、組み合わせたシナリオ)、および低軌道航法の種類 leo-signal、leo-pass、leo-navmsg、leo-pvt、leo-ppp、ntn-positioning、leo-pnt-chain を含みます。内容はインラインです。ファイルを指すシナリオフィールドは拒否され、シナリオは最大 4 MiB です。シナリオの種類とそのフィールドを調べるには最初に list_scenario_kinds を、種類ごとの完全に実行できるシナリオには list_example_scenarios / get_example_scenario を呼び出してください。
list_scenario_kinds組み込みのすべての Kshana シナリオの種類を、その説明と必須・任意の TOML フィールドとともに、JSON 配列として一覧します。どのシナリオを実行できるか、run_scenario に渡す有効なシナリオ TOML をどう作るかを調べるのに使います。
validate_scenarioKshana シナリオの TOML の事前チェックです。TOML として解析できることを確認してシナリオの種類を検出し、実行はしません。検出した種類、または不正な TOML に対する説明的なエラーを返します。(run_scenario は、シナリオを実行することで完全な検証を行います。)
assess_receiver_log実際の GNSS 受信機ログの信頼性を評価します。u-blox UBX、RINEX 3(放送航法を併用すると、エンジン自身の測位解、RAIM、時計支援モニターが加わります)、Android GnssLogger、NMEA のいずれかのログを読み込み、信頼性モニター(搬送波電力対雑音密度の低下、AGC、ジャミング指標、ロック喪失、位置ジャンプ、RAIM、時計)を校正ベースラインに対して実行し、受信機がいつ、なぜ信頼できなくなったかを返します。任意の [[events]] に、開始時刻と予測される C/N0 の低下を書いておくと、シナリオに明示した許容差に対して採点され、検出、遅れ、見逃し、そして一致か不一致かが示されます。要約と完全な結果の JSON を返します(要望に応じてグラフと CSV。船舶の実行の CSV は、助言の記述を載せた # コメント行で始まり、CSV リーダーはコメントオプションでこれを読み飛ばします)。ログのバイト列は TOML の中に text または base64 としてインラインで入れます(インラインのみ、最大 4 MiB)。[platform] kind = "vessel" テーブルは海事のモニター(運動の整合性、方位対針路、速度ログ、アンテナ高、C/N0 の広がり、時刻の整合性)を選び、エポックごとの 0-100 の信頼スコアを、減点したモニターとともに加えます。各エポックには、その衛星の geometry(good、衛星が少ない、または PDOP や HDOP が高い場合は degraded、ログに衛星の仰角も DOP もない場合は unknown)も付き、各エポックに label(good、fair、poor)があります。船舶では geometry モニターがスコアに加わり、減点するのは幾何が poor のときだけで(最大 15 点:degraded であり、untrusted にはなりません)、すべての減点には区分が付きます。geometry(天空)、environment、または inconsistency(攻撃に似た挙動)です。ゲート付きのストリーム抜粋には assess_vessel_stream を使います。助言のみ。エビデンスのティア:MODELLED。
list_example_scenarios同梱の参照シナリオを JSON で一覧します。count、そして scenarios(name、kind、about の配列。ファイル自身のヘッダーコメントの最初の文)です。どれもそのまま実行できる完全なシナリオなので、ある種類の有効な TOML に最短で到達する方法です。名前を選び、get_example_scenario で取得し、編集して実行します。kind を渡すと、一つの種類の例だけを一覧します(たとえば spectrum、solar-system、constellation-design、campaign、leo-signal、leo-pass、leo-navmsg、leo-pvt)。
get_example_scenario同梱の参照シナリオ一つの TOML テキストを返します。リポジトリが scenarios/ の下で出荷しているファイルとバイト単位で同一です。テキスト(編集の有無を問わず)を run_scenario、report_scenario、animate_scenario、またはエクスポートツールに渡します。名前は list_example_scenarios から得られます。リポジトリにはあっても同梱されていないシナリオは、その理由とともに拒否されます。
report_scenarioKshana シナリオを実行し、そのレポートを返します。エグゼクティブサマリー、入力、単位と VALIDATED または MODELLED のラベルを付けたすべての結果の値、イベント、その実行が使った機能の行、そして再現性の記録(エンジンのバージョン、シナリオと結果の SHA-256 ダイジェスト、シード、それを再現するコマンド)です。format は json(既定。機械可読な report.json)または html(グラフを埋め込んだ、印刷可能で自己完結した report.html)です。キャンペーンのレポートには、掃引テーブルまたはモンテカルロ分布も付きます。レポートはシナリオの純粋関数であり、クロックは読みません。
animate_scenarioKshana シナリオを実行し、その時系列をアニメーションとして返します。format は svg(既定:スクリプトなしの一つのアニメーション SVG)、html(自己完結した一つのプレーヤーページ)、または frames(番号付きの静的な SVG フレームと manifest.json、一回の返信で最大 120 フレーム)です。任意の fps(1 から 60、既定 12)、duration_s(0.5 から 600、既定 8)、width(480 から 3840 ピクセル、既定 960)があります。最初のコンテンツ項目は、描画された内容の JSON 要約で、時間範囲と単位、グラフのタイトル、フェーズとイベントの数、スペクトルのウォーターフォールの有無、トレースを読み取った結果のパス、除外された系列、ファイル名を含みます。ファイルはその後に、コンテンツ項目一つにつき一ファイルで、要約の files が列挙する順に続きます。結果にサンプリングされた時間軸がない種類は、その旨のメッセージとともに拒否されます。アニメーションは、その実行自身の数値を MODELLED として提示したものであり、同じシナリオとオプションからは、バイト単位で同一のファイルが得られます。
list_export_formatsKshana シナリオに、どの相互運用エクスポートフォーマットが適用できるかを、実行せずに報告します。フォーマット(czml、kml、geojson、stk、sigmf)ごとに一つの項目を持つ JSON 配列で、applies、適用できない場合の reason、そしてライターが従う公開仕様である spec_url を示します。CZML(Cesium Language)、KML(Keyhole Markup Language)、GeoJSON、STK(Systems Tool Kit)のエフェメリス .e はシナリオの幾何を記述し、SigMF(Signal Metadata Format)は [iq] ブロックを持つ spectrum シナリオが合成するサンプルを記録します。export_interop の前に呼び出してください。
export_interopKshana シナリオを、一つの相互運用フォーマットでエクスポートします。czml(Cesium Language、CesiumJS 向け)、kml(Keyhole Markup Language、Google Earth と地理情報システムのツール向け)、geojson(RFC 7946)、stk(Systems Tool Kit のエフェメリス .e、衛星ごとに一ファイル)、または sigmf(spectrum シナリオの合成サンプルを Signal Metadata Format で記録したもの)です。最初のコンテンツ項目は JSON のインデックスで、format、spec_url、files を持ち、それぞれに suffix(コマンドラインが出力名に付加するもの。たとえば .czml や .G01.e)、bytes、sha256、encoding があります。ファイルはその後に、コンテンツ項目一つにつき一ファイルで、インデックスの順に続きます。utf-8 のファイルはそのテキストとして、バイナリの SigMF サンプルファイルは base64 として返します。キャンペーンは、そのフォーマットが適用できる各メンバーシナリオをエクスポートします。適用できないフォーマットは、その理由とともに拒否されます。list_export_formats は五つすべてをまとめて報告します。時刻は協定世界時(UTC)です。同じシナリオからは、バイト単位で同一のファイルが得られます。
import_routeGeoJSON の経路を、ウェイポイント航跡を飛行する Kshana シナリオに書き込み、新しいシナリオの TOML を返します(run_scenario で実行します)。経路は、経度・緯度の位置を持つ LineString(またはそれを一つ含む Feature / FeatureCollection)で、シナリオの start_lat_deg、start_lon_deg、step_lat_deg、step_lon_deg、waypoints を置き換えます。経路を受け付ける種類は terrain-nav、terrain-slam、gravity-map、combined-altpnt で、それ以外の種類は理由とともに拒否されます。航跡の両端、または直線に沿って等間隔に並んだ位置を与えてください。航跡の種類は start + i*step で飛行するため、それ以外の形は拒否されます。
export_sp3orbit シナリオで伝播させたコンステレーションを、SP3-c 精密エフェメリステキスト(標準的な GNSS 後処理フォーマット)としてエクスポートします。シナリオが orbit の種類でない場合はエラーになります。
export_ommorbit シナリオの平均要素を、CCSDS 502.0-B-2 OMM(Orbit Mean-Elements Message)カタログとしてエクスポートします。衛星ごとに一つの OMM です。シナリオが orbit の種類でない場合はエラーになります。
export_oemorbit シナリオで伝播させたコンステレーションを、CCSDS OEM 2.0 エフェメリステキストとしてエクスポートします。位置と速度の両方を持つ慣性系(TEME)の状態時系列で、飛行力学ツール(GMAT / Orekit / STK)が読み込みます。これは、位置のみの export_sp3 を補う、速度を含む形式です。シナリオが orbit の種類でない場合はエラーになります。
export_table_csvKshana シナリオを実行し、その再現性テーブルを CSV テキストで返します。CLI が <scenario>.table.csv として書き出し、論文が引用する、バイト単位で安定したテーブルです。出力する種類は次のものに限られます。realtime-frame-eop、lunar-time-budget、lunar-jamming、telecom-timing、leo-navmsg(その encode-decode 解析が kepler16 または kepler-rac のメッセージモデル、つまり放送エフェメリステーブルで実行される場合)、そして export_site_lat_deg と export_site_lon_deg の両方が設定されている場合の moonlight-service-volume です。それ以外の種類(または無効なシナリオ)ではエラーになります。性能指標には run_scenario を使ってください。
sky_geometry方位角に依存するスカイライン(街路の谷間、港、フィヨルド、コンテナターミナル)の下での天空の幾何です。地点、時刻、コンステレーションのプリセット、二行軌道要素(tle、UTC の epoch 付き)、または方位角・仰角や ECEF で与えた衛星から、どの衛星が見え、どの衛星がスカイラインに隠れるか、gnss_lib_py で照合済みの DOP カーネルによる GDOP/PDOP/HDOP/VDOP/TDOP、システムごとに一つの受信機クロック(または共通の一つ)での東・北・上のコファクターと共分散、そして指定した UERE に対する、一シグマと指定した信頼度での水平誤差楕円を返します。request がない場合は、REPRESENTATIVEなスカイラインのプリセットを、その来歴と一度ごとの切り込みとともに記述します(skyline_preset が空なら一覧します)。orbit、integrity(user_site 付き)、gnss-sim、jamming、leo-pvt、leo-pass の種類のシナリオは、run_scenario を通じて同じ [skyline] セクションを受け付けます。エビデンスのティア:MODELLED。定めた誤差モデルのもとでの幾何であり、見通し線のみです。受信機の実際の誤差の予測でも、インテグリティの限界でもありません。プリセットのコンステレーションは代表的な天空であり、ある日付の天空ではありません。tle テキストと epoch(UTC)を与えると、その要素セットがそのエポックに与える天空(SGP4)を返します。これは測定ではなく、どちらであるかは sky_source が示します。助言を付けています:型式承認を受けた航法装置ではありません。MCP 経由のモンテカルロはありません(大量のサンプルのため、CLI、Python、WASM を使ってください)。インラインのみ、最大 4 MiB。
iq_signalsGNSS IQ 層のセットアップを JSON で返します。signals(iq_scene、iq_acquire、iq_track が受け付ける信号名)、enabled(IQ ファイルツールが有効かどうか)、work_dir(ツールが読み書きする唯一のフォルダー。すべてのパス引数はこれに対する相対パス)、max_samples(一回の呼び出しで生成または処理できる複素サンプルの最大数)、そして無効の場合は reason です。IQ サンプルがプロトコルを通ることはありません。ツールは作業ディレクトリ内のファイルパスを受け取り、コンパクトな JSON の要約を返します。IQ 層は干渉やスプーフィングの合成を加えず、何も送信されません。最初にこれを呼び出してください。
iq_info作業ディレクトリ内の IQ 記録を、処理せずに記述します。種別(サイドカー付きの生データ、SigMF、SigMF コレクション)、サンプル形式、サンプルレート、中心周波数、総サンプル数、継続時間、データファイルとそのサイズ、キャプチャ境界と注釈の数を JSON で返します(kshana iq info が出力するものと同じ行)。任意の raw は、サイドカーのない生ファイルを記述します。任意の hash は、各データファイルの SHA-256 を加えます(ファイル全体を読みます)。
iq_scene複数衛星の GNSS IQ シーンを、作業ディレクトリ内のファイルに生成します(kshana iq scene)。指定プロファイルモード:signal + prns(任意で dopplers_hz、cn0_dbhz、data)。放送モード:nav(作業ディレクトリ内の RINEX 航法ファイル)+ rx_pos [lat, lon, alt] が、健全な各 GPS 衛星を実際の放送幾何の位置に配置します。任意の channel は、電離圏、対流圏、シンチレーション、マルチパス、陸上移動のシャドウイング、NLOS を信号レベルで適用します。rate_hz × duration_s はサンプルバジェットに収まる必要があります(iq_signals を参照)。記録(生データ + <out>.json サイドカー、または SigMF のペア)と真値のサイドカーを書き出し、書き出したファイルとそのバイト数、サンプル数とサンプリング、そして iq_acquire を採点する対象となる、衛星ごとの真値の最初のエポック(コード位相、ドップラー、C/N0)を返します。IQ 層は干渉やスプーフィングの合成を加えず、何も送信されません。
iq_acquire作業ディレクトリ内の IQ 記録に対して、一つ以上の PRN の FFT 捕捉を行います(kshana iq acquire)。一回の探索に必要なサンプル(コヒーレント × ノンコヒーレントのコード周期)だけを読み、これはサンプルバジェットに収まる必要があります。任意の frontend の段(バンドパス、ノッチ、ブランキング、エクサイズ、AGC、量子化器)が最初に実行されます。PRN ごとに一つの検出を返します。acquired、doppler_hz、code_phase_chips、正規化したピーク statistic、その検出 threshold、そして peak_ratio です。json_out / csv_out は完全な結果もファイルとして保持し、surface_out(一つの PRN。.csv、.json、.bin)は、ピークとその放物線補間および精密探索によるドップラーの改善を含む、ドップラー × コード位相の相関電力の曲面全体を保持します。
iq_track作業ディレクトリ内の IQ 記録に対して、一つ以上の PRN を捕捉してから追尾します(kshana iq track)。捕捉が各チャネルを初期化し、その後 DLL/PLL(任意で FLL 支援)のループバンクが記録を一度リプレイします。追尾するサンプル(記録全体、またはその最初の max_seconds)はサンプルバジェットに収まる必要があります。ループは design(作業ディレクトリ内の kshana.loop-design/1 TOML ファイル、一つを選ぶには design_name)または組み込み設計から取られ、ループの引数がそれを上書きします。reacquire は、ロックを失った、または偽ロックしたチャネルを再捕捉します。追尾はストリーミングで行うため、メモリは記録とともに増えません。設計の名前とハッシュ、warnings(commensurate_sampling:チップレートの半分の倍数であるサンプルレートでは、コードループのジッターとバイアスが実際を表さなくなります)、そしてチャネルごとに、エポック数、追尾した秒数、最終的なドップラーとコード位相、最終と平均の C/N0(dB-Hz)、位相ロックとコードロックにあったエポックの割合、locked_at_end、最終的なロック状態、検出した偽ロック、再捕捉を返します。エポックごとの出力はファイルにのみ出されます。epochs_out(E/P/L、ディスクリミネーター、ループ状態、C/N0、ロック状態。.csv/.jsonl/.bin)、events_out、json_out / csv_out です。捕捉されなかった PRN は、その統計量としきい値とともに拒否されます。
iq_frontend作業ディレクトリ内の IQ 記録に、受信機のフロントエンドと干渉軽減の DSP を適用し、結果を <out>.json サイドカー付きの新しい生の記録として書き出します(kshana iq frontend)。stages は、bandpass_hz [lo, hi] の FIR、適応型の notch、パルスの blank、周波数領域の excise、agc、bits ビットの量子化器(no_agc でなければ自動 AGC が先行)のうちの任意のものを選び、常にこの順序で実行します。入力全体がサンプルバジェットに収まる必要があります。処理したサンプルと、書き出したファイルとそのバイト数を返します。これは記録を処理するものであり、何も合成しません。
iq_campaign作業ディレクトリにあるラボリプレイのキャンペーンを実行します(kshana iq campaign)。記録(それぞれ、ラボが把握している真値を示す kshana.test-conditions/1 ファイルで記述)、フロントエンドのチェーン、ループ設計の組み合わせを対象とし、各セルを追尾して、明示された条件に対してスコア化します(ロック喪失までの時間、再捕捉時間、明示された J/S に対する C/N0 の劣化と、MODELLED と表記した解析的な参照との並置、偽ロック率、PLL/DLL ジッター、可用性)。インクリメンタルです。一回の呼び出しで、サンプルバジェット(または max_cells)に収まる保留中のセルを実行し、完了したセルはすべて保持され、次の呼び出しで再開します。セル数、失敗、書き出したファイル、そしてすべてのセルが完了した時点での digest を返します。記録されたデータのみを採点し、干渉を合成しません。
iq_campaign_status作業ディレクトリの出力フォルダーから、ラボリプレイのキャンペーンの進捗を、ファイルの読み取りのみで報告します。完了したセルと保留中のセル、計画に含まれる記録、フロントエンド、設計、そしてすべてのセルが完了した時点での digest です。
iq_sweep作業ディレクトリ内の一つの IQ 記録を、複数の追尾ループ設計にわたってリプレイし、各設計の定常状態の結果を報告します(kshana iq sweep)。設計は、kshana.loop-design/1 ファイルのすべての設計(design)か、組み込み設計に対する pll_bws_hz、dll_bws_hz、spacings_chips、coherents の各リストの積です。各 PRN は一度だけ捕捉され、すべての(設計、PRN)チャネルが同じサンプルを追尾するため、各結果は、その設計だけを実行した場合とまったく同じです。設計と PRN ごとに、epochs、phase_jitter_deg、code_jitter_chips(実行の後半にわたる)、phase_lock_frac、code_lock_frac、mean_cn0_dbhz、そして設計のハッシュを返します。json_out / csv_out は表をファイルとして保持します。追尾する区間はサンプルバジェットに収まる必要があり(max_seconds で絞り込めます)、一回の呼び出しで実行される(設計、PRN)チャネルは最大 256 個です。これは記録を処理するものであり、何も合成しません。
iq_monitor作業ディレクトリ内の IQ 記録に対して、干渉とスプーフィングの検出モニターを実行します(kshana iq monitor)。広帯域の power と spectral のモニターを備え、signal + prns を与えると、衛星ごとの C/N0 と信号品質のモニターも実行します。いずれも、最初の baseline_s 秒(または設定ファイル)から学習したベースラインに対して実行します。系列(名前と長さ)、モニターが発したすべてのイベント(開始、終了、モニター、何が変わったか。返信には最大 200 件)、そしてモニターが学習した設定とベースラインを返します。json_out はレポート全体(すべての系列、イベント、スペクトル)を保持し、csv_prefix は <prefix>.series.csv と <prefix>.events.csv を書き出します。区間はサンプルバジェットに収まる必要があります(max_seconds で絞り込めます)。モニターのイベントは、測定した量が学習したベースラインから外れたことを示すものであり、原因や発生源を特定するものではありません。記録されたデータのみを採点し、何も合成しません。エビデンスのティア:MODELLED。
iq_test_conditionsラボの試験条件ファイルを検証します(kshana iq conditions)。kshana.test-conditions/1 ファイル(TOML または JSON テキスト)で、記録に対するラボが把握している真値(想定される衛星、整定時間、明示されたジャミングや干渉のスケジュール)を記述したものです。解決された条件とその hash、またはファイルが無効である理由を返します。インラインのみです。ディスクからは何も読まず、ファイルが指す記録のパスも開きません(キャンペーンは、作業ディレクトリ内でそれらを解決します)。入力は 4 MiB が上限です。
iq_labfit追尾ループのロック喪失モデルを、ラボでの実行にフィットします(kshana iq labfit)。iq-labfit シナリオの TOML が一つ以上の実行を指定し、各実行は受信機ログと、その明示された試験条件からなります。エンジンは各ログを読み込み、ループモデルと経験モデルをフィットし、不確かさをブートストラップし、ホールドアウト誤差を計算します。すべてインラインです。各実行の log は text または base64 を与え(path は拒否されます)、ツールはファイルを読み書きしないため、IQ の作業ディレクトリは不要です。あるいは、シナリオの [input] が、完了した kshana iq campaign の出力フォルダーである campaign = "<out-dir>" を指定すると、ツールはそのスコア済みセルに C/N0 とロックのモデルをフィットします(kshana.labfit-iq/1 レポート。Q は明示され、フィットされることはなく、識別可能な J/S のオフセットがフィットされます。mode = "validation" の場合は [validation] テーブルが必要です)。そのフォルダーは IQ の作業ディレクトリからの相対で解決され、その内側にある必要があります(外側は拒否されます)。読み取りのみで、何も書き込みません。解析された report、残差と予測を CSV テキストで、そして Markdown の要約を返します。入力は 4 MiB が上限です。このフィットは与えられたラボの実行を記述するものであり、レポートが述べる範囲を超えた、他の受信機や条件への予測ではありません。エビデンスのティア:MODELLED。
assess_vessel_stream船舶の NMEA 0183 ストリームの限定された抜粋を、kshana receiver-trust live と同じ方法でスコア化し、エポックごとの信頼状態(calibrating、nominal、degraded、untrusted)と、減点したモニターを伴う 0-100 のスコアを返します(ライブの JSON-lines スキーマ 1.3:各エポックは position、出力が助言であることを示す advisory の記述、衛星の geometry(good、few-satellites や high-pdop などの理由を伴う degraded、または抜粋に GSV も GSA もない場合の unknown)と label(good、fair、poor。幾何が減点するのは poor のときだけ)を持ち、すべての減点には class が付きます。geometry(天空の状態であり、攻撃がなかったという判断ではありません)、environment、または inconsistency(攻撃に似た挙動))。あわせて、要約(状態、幾何、区分ごとの件数、最低スコアと最終スコア、最初の untrusted エポックが現れた時点)と、最後の $PKSHT センテンスを返します。session_toml は船舶([platform] kind = "vessel"、その速度、加速度、旋回率の限界、アンテナ高、方位センサーがバスにあるかどうか)を宣言します。抜粋には校正ウィンドウを含める必要があります。入力は 2 MiB と 20,000 エポックが上限で、返信に含まれる degraded または untrusted のエポック行は最大 200 行です。これは live コマンドの限定された形式であり、ソケットは開かれず、ポートには何も書き込まれません。ゲートとテレメトリのエクスポーター(長時間動作するプロセスとその --listen サーバー)はコマンドラインのみです。バス上のすべてと整合する測位値を出すスプーファーは、このチェックでは見えません。助言のみ:型式承認を受けた航法装置ではありません。運用者が引き続き責任を負います。エビデンスのティア:MODELLED。
jammertest_import公開されている Jammertest の試験カタログと送信計画(NPRA/jammertest-plan、MIT)を、スケジュールされた真値として読み込みます(kshana jammertest import)。一つの試験エリアのスロットは、各ラベルにカタログ ID と年を含む receiver-trust イベントになります。plans は一日につき一つの計画ファイルを持ち、log_start_utc はログの最初のエポック、local_offset_h は計画の UTC からのオフセット(既定は 2、CEST)です。events_toml(receiver-trust のセッションに追記します)、events(試験 ID、種類、ログ開始からの秒数での開始と終了)、そしてスキップした件数を返します。イベントは計画されたスロットであり、実際に電波が出た時刻の記録ではありません。スロットは遅れて始まる、または実行されないことがあり、計画の status フィールドはほとんど空です。計画の連絡先や個人に関するフィールドは読み込みません。入力は一つのテキストにつき 4 MiB が上限です。エビデンスのティア:MODELLED。
jammertest_score受信機ログを Jammertest のスケジュールに対してスコア化します(kshana jammertest score)。スケジュールされた試験ごとに、検出遅延(最初のアラームから計画された開始を引いたもの)、許容差内で検出されたか、遅れたか、見逃されたか、回復までの時間(recover_hold_s のあいだアラームが出なかった区間)を示し、さらにすべてのスロットとそのガード区間の外側での誤警報も示します。session_toml に必要なのは [log] format = "ubx" だけです(または rinex、android、nmea、sbf)。ログは log(テキスト形式)または log_base64(バイナリ)で与えます。カタログと計画の JSON(catalog_json、plans)と、試験エリア(location)が必要です。スコアカードを返します。tests、summary、baseline_contaminated、そして MODELLED のラベルです。スケジュールは計画されたスロットであり、実際に電波が出た時刻の記録ではないため、見逃しは、実行されなかった試験である可能性があります。署名付きエビデンスパックには署名鍵が必要です。コマンドライン(kshana jammertest score --key)を使ってください。入力は一つのテキストにつき 4 MiB が上限です。助言のみ:型式承認を受けた航法装置ではありません。運用者が引き続き責任を負います。エビデンスのティア:MODELLED。
assess_vessel_log船舶の NMEA 0183 ログをバッチ実行として評価します(kshana receiver-trust と [platform] kind = "vessel")。スコアモデル、実行されたモニター、エポックごとの 0-100 のスコアとその減点、衛星の幾何(good、degraded、unknown)と各エポックの label(good、fair、poor)を返します。幾何が減点するのは poor のときだけで、各減点には区分(geometry、environment、inconsistency)が付きます。あわせて geometry_model(しきい値、適用中の上限と下限、来歴)と geometry_summary を返します。session_toml は船舶の限界と、モニターやスコアの設定を示し([log] テーブルは不要)、nmea はログのテキストで、TOML 文字列の中に貼り付ける必要をなくします。入力は 4 MiB が上限です。返信には、epochs を状態ごとの件数と、degraded または untrusted のエポックの最大 200 件に切り詰めたドキュメントが含まれます。別の形式のログ、または採点する [[events]] がある場合は、assess_receiver_log を使ってください。助言のみ:型式承認を受けた航法装置ではありません。運用者が引き続き責任を負います。エビデンスのティア:MODELLED。
generate_training_nmeanmea-scenario TOML(kshana nmea-scenario)から、乗組員訓練用の合成ブリッジ NMEA 0183 を生成します。船舶の航跡と、台本どおりのイベント(ジャミング、位置のドラッグオフ、時刻スプーフィング、リプレイ遅延、回復を伴う)のタイムラインです。チェックサムが有効なセンテンスの集合(GGA、RMC、VTG、GSV、GSA、GNS、ZDA、HDT、VBW。最初の 2000 行)と、教官ログ(何がいつ注入されたか、真の航跡、速度と加速度のピークの最上位の summary を含み、ドラッグオフのイベントにはそのピークのドラッグ速度と加速度が付きます。スキーマは kshana-nmea-training/1)を、JSON とテキストで返します。受信機の可視衛星数の上限は receiver.max_used(既定は 12)です。seed ごとに決定的です。テキストのみ:ここでは RF、IQ、いかなる波形も合成せず、何も送信されず、出力は訓練と試験のためのものであり、船舶の実際の航法システムには決して使用しません(ストリーム内のマーカーセンテンスがその旨を示します)。助言であり、型式承認を受けた航法装置ではありません。TCP や UDP のアドレスへのストリーミングは、コマンドラインのみです。四つの例のシナリオが scenarios/training/ に同梱されています。
create_evidence_pack船舶の NMEA 0183 ログのあるウィンドウについて、署名付きエビデンスパックを作成します(kshana receiver-trust evidence)。含まれるのは、そのウィンドウの生のログのバイト列、すべてのしきい値を含む設定、エポックごとの結果と理由、自己完結した要約ページ、そして各ファイルの SHA-256、完全なログのハッシュ、ハッシュ連鎖を列挙し、Ed25519 で署名したマニフェストです。from_s/to_s は、ログの最初のエポックからの秒数です。ファイルを JSON で(verify_evidence_pack に渡します)、署名者の公開鍵とフィンガープリントを返します。署名シードは返されることも記録されることもありません。signing_key_seed_hex を省略すると、一回限りの鍵が使われて破棄されるため、パックは、自らが名指す鍵に対してインテグリティを証明するだけで、誰が署名したかは証明しません。重要な鍵については、コマンドラインでパックを作成してください(ここで渡したシードは会話を経由します)。入力は 4 MiB、返信は 4 MiB が上限です(ウィンドウを狭めてください)。パックは、定められた設定のもとでエンジンがログから計算した内容の技術的な記録であり、法的見解、いかなる事象についての事実認定、認証ではありません。エビデンスのティア:MODELLED。
create_round_trip_pack署名付きの実験室ラウンドトリップパックを作成します(kshana evidence round-trip、docs/spec/TEST-CONDITIONS.md)。動きを生成したシナリオ、実験室の kshana.test-conditions/1 ドキュメント、受信機ログと、明示されたイベントに対するそのスコアを、ハッシュで紐づけた署名付きエビデンスパックにまとめます。そのパックの config.json には round_trip ブロックが入ります。条件と採点イベントが食い違うパック、または明示されたログの SHA-256 がログのものでないパックは拒否します。信号なし:何も書き込まれず、リプレイされず、スケジュールされません。シナリオの運動が受信機にどう届いたかは運用者の責任であり、明示されたとおりにのみ記録されます。署名シードは返されることも記録されることもありません。省略すると、一回限りの鍵が使われて破棄されます(インテグリティであり、身元ではありません)。入力は 4 MiB、返信は 4 MiB が上限です。技術的な記録であり、法的見解でも認証でもありません。エビデンスのティア:MODELLED。
verify_evidence_pack署名付きエビデンスパックを検証します(kshana evidence verify)。各ファイルの SHA-256 をマニフェストに対して、ハッシュ連鎖、Ed25519 署名を確認します。public_key(署名者の鍵で、署名者から別の経路で入手したもの)を渡すと、署名者が想定どおりの者であることも確認します。full_log を渡すと、手元のログがパックの記録したものであり、スライスがそこから切り出されたことも確認します。レポートを返します。ok、コードとファイルごとの各失敗、すべてのチェック、signer_pinned、注記、そして verdict です。verified(署名者がピン留め済み)、intact-signer-not-pinned(すべてのチェックは通ったが、信頼できる public_key が与えられなかったため、署名が証明するのは、パックが、自らが名指す鍵(誰でも生成できます)に対して無傷であることだけです。そのように伝え、検証済みとは呼ばないでください)、または failed で、利用者に示す message が付きます。require_timestamp は、タイムスタンプトークンを持たないパックを失敗とします。入力は 4 MiB が上限です。検証に成功したという結果が示すのは、記録が変更されておらず、署名したのは誰か(あなたが与えた鍵)です。何がいずれかの事象を引き起こしたか、誰に責任があるか、ログが受信機の実際の受信内容を示しているかどうかは示しません。
build_interference_mapオープンライセンスの航空機(ADS-B NIC/NACp)または船舶(AIS)の位置報告を CSV テキストで与えて、GNSS の干渉マップを作成します(kshana interference-map adsb|ais)。UTC の日ごとに一つの GeoJSON ドキュメント(スキーマ kshana-interference-map/v1)(ファイル名 <source>-<dataset>-<date>.geojson、方式バージョン 2)を返します。公開される各グリッドセルは、degraded、not_degraded、insufficient_sample、withheld_day_confounded、withheld_no_background(ADS-B)、または anomalous/not_anomalous(AIS)のいずれかで、方式、その事前登録済みのしきい値、データセットのライセンスと帰属表示が埋め込まれます。公開の最小値(5)を下回るセルごとの件数はすべて null となり(保留であって、ゼロではありません)、背景を推定できない日は、その判定を保留します。集計のみです。識別子はメモリ内でハッシュされて返されることはなく、航空機または船舶が 5 未満しかないセルは公開されません。dataset は承認済みのプリセット、または custom(licence、licence_url、attribution 付き)です。入力は 4 MiB、返信は 4 MiB が上限です(より多くを扱うには、より粗い cell_deg かコマンドラインを使ってください)。何も取得しません。AIS に陸地ポリゴンが必要な場合は、渡します。劣化したセルは、干渉を原因として特定するものではありません。公開されていないセルは、良好なセルであることの証拠ではありません。これは予報ではありません。エビデンスのティア:MODELLED。
route_exposure経路のうち、一つ以上の干渉マップの劣化したセルを通る割合を要約します(kshana route-exposure)。各マップ(出典ごと、UTC の日ごとに一つで、build_interference_map が返す GeoJSON)について、経路の長さと、その長さのうち、劣化したセル、劣化していないセル、評価するには標本が少なすぎるセル、観測されていないセルにある割合を示します。経路は GeoJSON の LineString、または lat,lon の CSV テキストで、date_from/date_to(YYYY-MM-DD)は日付範囲のマップを保持します。入力は一項目につき 4 MiB が上限です。観測されていないセルは、良好な経路であることの証拠ではありません。劣化したセルは、干渉を原因として特定するものではありません。これは過去の報告を記述したものであり、予報ではありません。エビデンスのティア:MODELLED。
compliance_report公開フレームワークの対応づけを Kshana の結果ドキュメントから埋めます(kshana compliance-report)。六つのレジリエンスのフレームワークと規格(米国 DHS レジリエント PNT フレームワーク v2.0、船舶向けの IMO ガイダンス、航空向けの EASA ガイダンス、NIS2 第 21 条、EN 16803、NIST IR 8323r1)のうち、与えられた実行がどの行の証拠を裏付ける(supports evidence for)か、どの行は裏付けないか、そして各行に残るギャップを示します。各実行を label、result(結果の JSON テキスト)、そして用意があれば scenario(シナリオの TOML。結果が示さない種類を指定します。receiver-trust の結果には不要)として渡します。実行は合計で最大 64 件、4 MiB までです。ディスクからは何も読みません。各行の status は evidenced、partly-evidenced、not-evidenced、out-of-scope のいずれかで、すべての行は、エビデンスがある場合でも自身の gap を保持します。使用できなかった入力は unrecognised に一覧され、何も寄与しません。結果を示すときは、レポートの statement を、そのまま一字一句変えずに添えてください。ステータスは、実行がその行の挙げる機能の証拠を裏付けていることを意味します。フレームワークが満たされているという判断ではなく、いかなる製品が誰かに評価または承認されたことも意味しません。出力を、これより強い言葉で説明しないでください。エビデンスのティア:MODELLED。
compliance_mapping公開されている規格・フレームワークの静的なマッピング(kshana compliance-report --mapping / --sources)を Markdown で返します。フレームワークごとに表が一つあり、各行には言い換えた要求事項、その証拠を裏付ける Kshana の出力、そして出力では埋められないギャップが示されます。sources を true にすると、表が引用する元文書をバージョンと URL 付きで返します。すべてのレポートに付くステートメントが冒頭に置かれ、どの抜粋にも付けたままにしてください。それによれば、行が evidenced(エビデンスあり)と示されているのは、その行が挙げる機能について、実行結果が証拠を裏付けているという意味です。フレームワークが満たされたという判定ではなく、いかなる製品も誰かによって格付けまたは承認されたことを意味しません。実行は不要です。
fit_imu_log静止状態で記録した IMU ログ(kshana imu-fit、docs/MACHINE-INPUTS.md)から、hybrid および fusion シナリオのセンサーパラメーターを当てはめます。これらのシナリオが受け取るのは時系列ではなくノイズパラメーターです。そこで、センサーを静止させて記録したログから、積分した信号の重なりありアラン偏差によってパラメーターを読み取ります。返す JSON は、fit(加速度計バイアス、速度ランダムウォーク PSD q_va、ジャイロバイアス、角度ランダムウォーク PSD q_arw、ログが十分に長い場合はバイアス不安定性の下限、ログのレートと期間、初期のアラン偏差の傾き、当てはめられなかった点や信頼できなかった点についての notes)、toml(出所にログの SHA-256 を明記した [accel_classical] テーブルで、そのままシナリオに貼り付けられます)、および sha256 です。静止していなかったログ、短すぎるログ、サンプリングが不均一なログでは、誤ったパラメーターになるか、拒否されます。どちらかは傾き(白色雑音が支配的な場合は約 -0.5)で分かります。ディスクには何も書き込みません。エビデンスのティア:MODELLED(ログに適用した推定器であり、外部のオラクルはありません)。
list_standards_packs標準パック(kshana standards-pack list)を一覧表示します。DHS Resilient PNT フレームワークの試験プロファイル、IMO MSC.1/Circ.1575、ICAO Doc 9849 Appendix F に対するスコア付きのシナリオセットで、それぞれ実行前に定めた合格基準と、証拠を裏付ける compliance の行が示されます。入力は不要です。パックは、モデル化したシナリオを定めた合格基準に照らして測るものであり、製品を格付けするものではありません。エビデンスのティア:MODELLED。
run_standards_pack標準パックを一つ実行します(kshana standards-pack run <id>)。パック内のすべてのシナリオを、実行前に定めた合格基準に照らして採点します。返すのはレポート(各テストの MET、NOT MET、または受信機ログが必要で採点されない場合の NEEDS INPUT、ならびに各合格基準の測定値と期待値)と、同じ内容の markdown です。パックが証拠を裏付ける行を見るには、レポートの JSON を compliance_report に渡します。MET の合格基準は、モデル化したシナリオが定めた合格基準に到達したことを意味し、NOT MET は記録に残る結果であることを、はっきり伝えてください。出力を、製品やフレームワークが満たされたことを示すものとして説明してはなりません。助言のみ:解析出力であり、型式承認を受けた航法装置ではありません。エビデンスのティア:MODELLED。
lunanet_afs_checkLunaNet Augmented Forward Signal(AFS)を、公開仕様(LNIS Version 5 Applicable Document 1 Volume A(LSIS-AFS V1.0、2025 年1月 29 日)に固定)に照らして確認します(kshana lunanet-afs-check、docs/LUNANET-AFS.md)。モード spec は、この実装を、文書に印刷されたコードテーブル(PRN 1 から 210 までの、すべての AFS-I Gold、AFS-Q Weil、三次コードの最初と最後の 24 チップ、および 二つのルジャンドル系列)と、計算例(SB1 BCH、CRC-24Q)、ならびに事前登録の合格基準 B1 から B10 に照らして確認します。B4 では見逃しが一件報告されます(文書は、三次コードの PRN 147 と 151 に同じ最後の 24 チップを印刷しています)。モード symbols は、ハードデシジョンのシンボル列(0 と 1 のテキスト)について、同期パターン、SB1 の復号、FID、TOI の連続性、フレーム間隔を確認します。サブフレーム 2 から 4(レート 1/2 LDPC、CRC-24Q)は検証されていません。LDPC 行列は別の附属書にあり、実装していないためです。モード generate は、プレースホルダーのサブフレームを含むテストストリームを返します。これはシンボルであって波形ではなく、Kshana は信号を書き出しません。VALIDATED となるのは、その版に印刷されたテーブルとの照合のみで、その文書自身がそれを TBC(未確定)としています。この点を明示し、結果を、いかなる LunaNet ノードやサービスが正しいことを示すものとして説明しないでください。助言のみ。
score_benchmarkkshana-bench の提出物(kshana bench score、bench/SPEC.md、docs/BENCH.md)を採点します。予測ファイル(kshana-bench-predictions/1)を正解ファイル(kshana-bench-truth/1)に照らします。どちらも JSON テキストで、各 4 MiB までです。返す結果ファイル(kshana-bench-result/1)には、仕様バージョン、タスク(a は受信機ログでの検出、b は IQ での検出、c は時刻のホールドオーバー予測、d は分布外での楽観ギャップ)、分割、両方の入力の SHA-256、そのタスクの指標(AUC、誤警報の上限での検出確率、予測ホライズンごとの RMSE、または楽観ギャップ)が含まれます。threshold は、タスク a と b で宣言された警報のしきい値です。ディスクからの読み取りも書き込みも行いません。すべてのスコアは MODELLED であり、ログやコーパスを表すもので、製品を表すものではありません。認証ではなく、スコアによっていかなる組織も推奨されることはありません。エビデンスのティア:MODELLED。
render_leaderboardkshana-bench の結果ファイル(kshana bench leaderboard)を、静的なリーダーボードページとして、返信内の HTML テキストで出力します。results は kshana-bench-result/1 の JSON テキストのリスト(最大 256 件、各 4 MiB まで)で、それぞれ最初に検証されます。別のメジャー仕様バージョンで採点されたファイルは、メジャーバージョンの異なる結果を一つの表に載せることはないため、拒否されます。行が示すのは、このファイルがこの分割でこのスコアを出したということであり、いかなる製品も誰かによって格付けまたは承認されたことを意味しません。何も書き込みません。エビデンスのティア:MODELLED。
trust_telemetryGNSS の信頼ストリームまたは receiver-trust の結果を、セキュリティテレメトリのテキスト(kshana trust-telemetry、docs/TRUST-TELEMETRY.md)として出力します。コマンドラインと同じエンコーダーを使い、形式は prometheus(最終状態の公開形式)、cef または leef(バンドの変化ごと、syslog_all を使う場合はエポックごとに、RFC 5424 の syslog 行を一行。時計は読み取らないため、タイムスタンプはありません)、otlp(OTLP/HTTP の JSON メトリクスペイロード)です。input_kind は jsonl(既定)または result です。解析できないストリーム行はスキップされ、kshana_trust_input_errors_total に数えられます。何も送信せず、提供せず、書き込みません。出力は返信内のテキストです(動作中のエクスポーターはプロセスであり、コマンドラインに残ります)。受信機が報告した位置は、expose_position が true でない限り省かれます。衛星ジオメトリを含む入力(ライブスキーマ 1.3、結果は 0.36 以降)では、ジオメトリのラベル(good、fair、poor。poor 以外は採点しません)とステータス、HDOP、PDOP、VDOP、使用衛星数が加わり、各理由に class ラベル(ジオメトリ、環境、不整合)が付きます。それより古い入力は、従来どおりに出力されます。助言のみ:Kshana は型式承認を受けた航法装置(IEC 61108、IEC 61162)ではなく、運用者が引き続き責任を負います。エビデンスのティア:MODELLED。
export_test_benchシナリオの車両の動きとイベントを、ラボの GNSS シミュレーター向けにエクスポートします(kshana bench-export、docs/TEST-BENCH.md)。出力は、モーション CSV とその JSON 記述(地球固定座標と測地座標の位置、速度、姿勢、UTC)、NMEA 0183 の GGA/RMC センテンス、サンプルグリッドがミリ秒単位で規則的な場合のウェイポイントテキスト、そしてシナリオのイベントを CSV と、receiver-trust シナリオ用の [[events]] TOML にしたものです。対象は gnss-ins(そのナビゲーション状態の途絶がイベントになります)、jamming、gnss-sim で、それ以外の種類は理由を付けて拒否されます。epoch はモーション時刻ゼロの UTC 時刻で、YYYY-MM-DDTHH:MM:SS(既定は 2024-01-01T00:00:00Z)です。ディスクには何も書き込みません。最初のコンテンツ項目は JSON のインデックス(suffix、bytes、sha256 を持つ files、除外したファイルがあれば notes、notice)で、その後にインデックス順で各ファイルのテキストが続きます。同じシナリオと同じエポックからは、バイト単位で同一のファイルが得られます。信号なし:エクスポートされるものは、無線周波数信号やベースバンド信号そのものではなく、それをモデル化も駆動もしません。イベントは名前を付けた区間であり、干渉を発生させる手順ではありません。信号の生成と、許可された場所でのみ実行する責任は、シミュレーターとその運用者にあります。通知はファイルに付けたままにしてください。Kshana は、そうした実行の結果を公開しません。エビデンスのティア:MODELLED。
attach_evidence_timestampRFC 3161 のタイムスタンプトークンを、エビデンスパック(kshana evidence attach-timestamp)にメモリ上で結び付けます。files は create_evidence_pack が返すパックで、token_base64 は、タイムスタンプ局から得た .tsr ファイルのバイト列です。トークンは署名済みマニフェストの中ではなく、その隣に timestamp.tsr として保存されます。トークン付きのパックが引き続き検証に通らなければ、何も添付されません。既存のトークンは、replace が true でない限り保持されます。返すのは更新後の files(トークンの存在を必須にするには、require_timestamp を true にして verify_evidence_pack に渡してください)と、検証メモです。タイムスタンプ局によるトークンへの署名も、局の証明書も確認しません(確認するのはトークンの構造と、そのメッセージインプリントがこのパックの manifest.json のハッシュであるかどうかです)。この点を明示し、利用者には openssl ts -verify を案内してください。入力と返信は 4 MiB までです。タイムスタンプが示すのは、局が述べる時刻にハッシュが存在したことであり、法的な意見ではありません。エビデンスのティア:MODELLED。
リポジトリの packaging/channels.json から生成し、README と突き合わせて確認した一つの表です。各コマンドは README に記載されたものと同じで、v0.40.0 に固定しています。すべてのオペレーティングシステム向けのビルド済みバイナリ、デスクトップアシスタント拡張機能、Cursor と VS Code 用のワンクリックボタン、npx と uvx のランチャー、Homebrew、Scoop、winget、各レジストリ、セルフホストの HTTP モードを扱います。公開時と記された経路は、リリースと同時に利用可能になります。
普段使っている言語や環境で使えるエンジン単体です。
どなたでも、インストール不要です。必要なもの:なし。
エンジンは WebAssembly としてローカルで動作し、何もアップロードされません。
kshana コマンドを使いたいエンジニア向けです。必要なもの:Rust。
v0.40.0 に固定cargo install kshana --version 0.40.0
次に確認するkshana --version
エンジンを組み込む Rust 開発者向けです。必要なもの:Rust。
v0.40.0 に固定cargo add kshana@0.40.0
次に確認するcargo tree --depth 1 | grep kshana
アナリストとノートブック向けです。必要なもの:Python。
v0.40.0 に固定pip install kshana==0.40.0
次に確認するpython -c "import kshana; print(kshana.version())"
Web と Node.js の開発者向けです。必要なもの:Node。
v0.40.0 に固定npm install kshana@0.40.0
次に確認するnpm ls kshana
助言のみ:型式承認を受けた航法装置ではなく、航行の責任は引き続き運用者にあります。サーバーはお使いのコンピューター上で動作し、Ashforde OÜ には何も送信されません。
MCP 対応のアシスタントを使うどなたでも利用できます。必要なもの:Rust 1.88+。
v0.40.0 に固定cargo install kshana-mcp --version 0.40.0
次に確認するcargo install --list | grep kshana-mcp
Rust ツールチェーンを使わない場合向けで、MCP サーバーをコンテナーで動かします。必要なもの:Docker。
v0.40.0 に固定docker run --rm -i ghcr.io/ashfordeou/kshana-mcp:0.40.0
次に確認するdocker image inspect ghcr.io/ashfordeou/kshana-mcp:0.40.0 --format '{{.Id}}'
ターミナルを使わないデスクトップアシスタントのユーザー向けです。必要なもの:なし。
macOS(Apple silicon)macOS(Intel)WindowsLinux(x86-64)Linux(Arm)
kshana-mcp-<target>.mcpb をダブルクリックしてください。
Cursor のユーザー向けです。必要なもの:Node、または Docker。
v0.40.0 に固定kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code と Insiders のユーザー向けです。必要なもの:Node、または Docker。
v0.40.0 に固定kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code にインストール(npx)VS Code にインストール(Docker)VS Code Insiders にインストール(npx)
Node を使うユーザー向けで、どの MCP クライアントでも使えます。必要なもの:Node 18+。
v0.40.0 に固定kshana-mcp@0.40.0
次に確認するnpx -y kshana-mcp@0.40.0 --version
ランチャーです。リリースのバイナリをダウンロードし、SHA256SUMS を検証してから実行します。
Python を使うユーザー向けで、どの MCP クライアントでも使えます。必要なもの:Python 3.9+ と uv または pipx。
v0.40.0 に固定kshana-mcp==0.40.0
次に確認するuvx kshana-mcp==0.40.0 --version
macOS と Linux 向けです。必要なもの:brew。
v0.40.0 に固定formula for v0.40.0
次に確認するkshana-mcp --version
Windows 向けです。必要なもの:Scoop。
v0.40.0 に固定manifest for v0.40.0
次に確認するkshana-mcp --version
Windows 向けです。必要なもの:winget。
v0.40.0 に固定winget install AshfordeOU.KshanaMcp --version 0.40.0
次に確認するkshana-mcp --version
Microsoft が申請をマージすると表示されます。
パッケージマネージャーを使わない場合向けです。必要なもの:なし。
リリースから kshana-mcp-<target> をダウンロードし、SHA256SUMS と照合してください。
レジストリ対応の MCP クライアント向けです。必要なもの:レジストリ対応のクライアント。
io.github.ashfordeOU/kshana-mcp を検索してください。
URL を受け取るクライアント向けです。必要なもの:ご自身のホスト。
v0.40.0 に固定v0.40.0
既定ではループバックのみです。ループバック以外にバインドするには --allow-remote とベアラートークンが必要です。Kshana はエンドポイントを提供しません。
Kshana を他のツールに取り込むプラグインとイメージです。
IntelliJ、PyCharm、CLion のユーザー向けです。必要なもの:JetBrains の IDE。
Settings → Plugins → Marketplace → "Kshana" を検索(プラグイン ID dev.kshana.ide)。シナリオの .toml を右クリックし、Run Kshana Scenario を選びます。
Signal K サーバーを動かしているボートオーナー向けです。必要なもの:Node、Signal K サーバー。
v0.40.0 に固定npm install signalk-kshana-trust@0.40.0
次に確認するnpm ls signalk-kshana-trust
OpenCPN チャートプロッターのユーザー向けです。必要なもの:OpenCPN 5.8+。
リリースからプラグインの tarball をダウンロードしてください。リリースには tarball とそのカタログ用メタデータ XML が含まれます。OpenCPN のカタログへの掲載は、手作業で出すプルリクエストで行います。
Grafana を運用している方向けです。必要なもの:Grafana。
リリースから kshana-grafana-*.json をインポートしてください。
ゲートとbenchの配備向けです。必要なもの:Docker。
v0.40.0 に固定docker pull ghcr.io/ashfordeou/kshana-reference-build:0.40.0
ブラウザーのタブから、継続的インテグレーション(CI)のリグレッションスイートまで。どの入り口も同じエンジンを動かし、同じ JSON の結果、SVG(Scalable Vector Graphics)のグラフ、HTML(HyperText Markup Language)のレポートを書き出します。どれか一つを選んでください。コマンドはすべて実際に動作し、ワンクリックでコピーできます。
同梱のどのシナリオも、お使いのマシン上で WebAssembly として実行します。インストールもアップロードも不要です。調整し、実行を比較し、パラメーターを掃引して、再現可能なレポートをエクスポートできます。
コースのページやレポート向けに、シナリオとビューをあらかじめ選んだ Kshana Studio のみ
studio/index.html?embed=1&scenario=integrity-raim&tab=timeserieskshana <scenario>.toml は result.json、chart.svg、report.html を書き出します
出力はシナリオ、シード、エンジンのバージョンから決定的に定まるため、コミットした result.json はリグレッションテストになります(CI:継続的インテグレーション)。再実行して差分を取ってください
kshana --study:シナリオのスイートを、タイムスタンプ付きの一つの study.json と study.html にまとめます。無料です。有償のカスタムスタディとは別のものです。
kshana::api::run_toml は JSON、SVG、サマリー、CSV(カンマ区切り値)を返します
kshana.run と run_full、および validate_toml と list_kinds
ブラウザーまたは Node.js での run、summary、chart_svg
AI アシスタントが呼び出せる 49 個のツール。いずれも公開 API の薄いラッパーです
Rust ツールチェーンなしで使える MCP サーバー(マルチアーキテクチャ)
コマンドライン、Rust・Python・JavaScript のバインディング、エンジンが読み書きするファイル形式を、並べて示します。ここにあるものはすべて、無料のオープンコアです。
kshana --helpバイナリからkshana <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 | --version実行すると、シナリオの隣に result.json、chart.svg、report.html、report.json、table.csv が書き出されます。--export-sp3、--export-omm、--export-oem は軌道ファイルを書き出します。--animate は実行を動くもの(animation.svg、animation.html、frames:アニメーション SVG、単体で動作する HTML プレーヤー、連番フレームのフォルダー)としても書き出し、--animate-fps と --animate-duration で再生レートと長さを指定します。--export は、シナリオのジオメトリまたは合成した信号を他のツール向けに書き出します。形式は CZML(Cesium Language)、KML(Keyhole Markup Language)、GeoJSON(geographic JSON)、STK(Systems Tool Kit)のエフェメリスファイル、SigMF(Signal Metadata Format)です。--import-route は GeoJSON の線として描いたルートを読み込みます。--eop は finals2000A ファイルから地球姿勢パラメーターを取り込みます。--study は無料のシナリオスイートを実行して study.json と study.html にまとめます。kshana kinds --json はすべての種類をフィールド付きで一覧表示します。kshana example は出発点となるシナリオを出力します。結果は Kshana Interchange Format(KIF)のエンベロープに入れて受け渡せます。MCP サーバーは、軌道のエクスポートをツールとして公開しています。
kshana --study は無料のスイート実行コマンドです。解析を代行してほしい場合は、有償のカスタムスタディになります。
result.json、chart.svg、report.html、そして report.json と同じレポートに加え、表を公開する種類については CSV(カンマ区切り値)の表も書き出します。指定すれば、実行のアニメーション(--animate)と、他のツールが読めるフォーマットでのシナリオ(--export)も書き出します。各プログラムは、同梱の clock-holdover シナリオ(kshana example clock-holdover > clock-holdover.toml で書き出せます)を実行し、同じ一行のサマリーを出力します。完全版はパッケージの README にあります。
cargo add kshana の後use 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 には、run_scenario、validate_scenario、list_scenario_kinds、軌道のエクスポーターもあります。Rust ドキュメント
pip install kshana の後import 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)パッケージには validate_toml と list_kinds もあります。Python ドキュメント
npm install kshana の後import { 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 string同じパッケージがブラウザーでも動作します。Kshana Studio が使っているのはこれです。npm ドキュメント
エンジンが現在扱うフォーマットで、リポジトリの標準のページ(ドキュメント:標準)に基づきます。行を開くと、使い方と、何と照合して確認したかが分かります。
--export-oem、MCP export_oem--export-omm、MCP export_omm--export-sp3、MCP export_sp3space-packet シナリオpvt などのシナリオ入力orbit シナリオ--eopexport_table_csv「Kshana — PNT simulator」プラグイン:任意のシナリオ .toml を右クリックして Run Kshana Scenario を選ぶと、性能指標をツールウィンドウで確認できます。
kshana bench score は、提出ファイルと分割の正解を結果ファイルに変換し、kshana bench leaderboard は結果ファイルを静的なページに出力します。お客様の代わりに実行されるものはなく、何もアップロードされません。