Koschei について
Koschei は、副作用を明示的に制御して汎用ソフトウェアを開発するための、ケイパビリティセキュアなプログラミング言語とツールチェーンです。対応するケイパビリティトークンがない場合、ディスク、ネットワーク、環境、プロセスへのアクセスをコンパイラーが拒否します。
主な機能
- 01明示的なケイパビリティによるアクセス制御
- 02未許可の副作用をコンパイル時に拒否
- 03ケイパビリティマニフェストとCI拒否ゲート
- 04インタープリターとネイティブビルドコマンド
- 05診断と補完に対応するVS Code LSP
活用シーン
- 01依存関係の更新でネットワークアクセスが増えていないか確認
- 02関数の接続先を特定のネットワークオリジンに制限
- 03実行前にプログラムのケイパビリティを確認
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 今日に更新
このツールにパラメーターはありません。
詳細
Koschei (.ks)
製品の方向性
Koschei Lang は、サイバーセキュリティを重視した汎用ソフトウェア開発のための、独立したプログラミング言語およびライブラリエコシステムです。独自のセマンティクス、コンパイラー、標準ライブラリ、ランタイムが製品を定義します。Web3 と AI の統合は、この言語の応用です。自己完結型の配布と、セキュリティで Rust を上回ることは、実証された根拠を必要とする開発目標です。
Koschei Lang は Koschei Sentinel および Koschei Web3 Hub とは別に販売・ライセンスされます。 相互運用には明示的な SDK、アダプター、バージョン管理された契約を使用できますが、それによって価格設定、利用権、ランタイムの権限が共有されることはありません。単独製品憲章と製品の方向性をご覧ください。
ソース公開であり、オープンソースではありません。 Koschei Lang は、個人的かつ非商用の目的であれば、無料でダウンロード、使用、変更できます。商用利用には永続的な商用ライセンスが必要です(
LICENSING.mdをご覧ください)。ツールチェーンの再配布は許可されていません。LICENSEをご覧ください。インストールせずに試す: koschei.dev/play
ケイパビリティセキュアなプログラミング言語です。インポートしたパッケージは、トークンを渡さない限り、ディスク、ネットワーク、環境にアクセスできません。
サプライチェーン攻撃のほとんどは、依存関係がプロセスの持つすべての権限を引き継ぐことで成立します。パッケージをインストールすると、許可を求めることなく ~/.ssh や .env を読み取ったり、ソケットを開いたりできます。Koschei はこの暗黙の権限を取り除きます。副作用へのアクセスは、渡さなければならない値であり、与えられていない権限にアクセスしようとするプログラムはコンパイラーによって拒否されます。
Türkçe:README.tr.md
クイックスタート
Python 3.12 以降が必要です。Go 1.24+ は任意で、ks build にのみ必要です。
git clone https://github.com/bugsbuny243/koschei-lang
cd koschei-lang
./install.sh # installs into ~/.koschei and links ~/.local/bin/ks
ks check examples/supply_chain/main.ks
examples/supply_chain/analytics.ks にある、意図的に悪意のあるパッケージは、秘密情報を含むファイルを読み取り、その内容を呼び出し元に返そうとします。期待される結果は、コンパイル時の拒否です。
fn track(event: String) -> String or Error {
let secret = disk.read("/etc/app/secrets.env") or return Error("unreadable")
return secret
}
期待される出力:
KOSCHEI ERROR: KS2401 [line 6, column 18]: Required capability is unavailable
in this scope — A disk, network, environment, or process operation was
attempted without the corresponding capability token.
Hint: run 'ks --lang en explain KS2401' for details.
終了コードは 1 です。プログラムは実行されませんでした。ファイルは開かれませんでした。何もどこにも送信されませんでした。
これは、実行時サンドボックスが呼び出しを捕捉する仕組みではありません。track の中には disk が存在しないため、攻撃はコンパイル時に失敗します。
配布とインストール
Koschei は PyPI で公開されています:
pip install koschei-lang
ks version
クローンから ./install.sh を実行すると、Koschei は専用の仮想環境にインストールされます。pip install . を実行すると、自分で管理する環境にインストールされます。
商用ライセンスの保有者は、Polar のストアからパッケージ化されたリリースをダウンロードすることもできます。
最初のプログラム:
ks new hello-koschei
cd hello-koschei
ks run .
ks new は、koschei.toml と src/main.ks を含む、依存関係がゼロのプロジェクトを作成します。コマンドには、ソースファイル、プロジェクトディレクトリ、または koschei.toml のパスを指定できます。
核となる考え方
- 暗黙の権限はありません。 ディスク、ネットワーク、環境、プロセスへのアクセスには、明示的な能力値が必要です。能力値を渡されていない関数は、その作用を実行できません。
- 能力は制限できても、拡張はできません。
caps.diskは委譲のみ可能なルートトークンです。caps.disk.allow(path)は制限されたトークンを生成し、権限を再拡張できません(KS2403)。また、ルートトークンは直接 I/O を実行できません(KS2402)。 nullはありません。 値が存在しない可能性がある場合は、Option<T>(Some/None)を使います。- エラーは値です。
Result<T, E>と、3 つの形式(or return、or default、or { block })で使う単一のorキーワードがあります。処理されないエラー値があると、コンパイルエラーになります(KS1401)。 - 値には上限があります。 String は最大 16 MiB の UTF-8 を保持し、List は最大 1,048,576 個の項目を保持します。上限を超える操作は、
ks runとks buildのどちらでも同じ箇所でKS3502Error 値を生成します(Value Budget v1)。 - プログラム入力も能力の一つです。
caps.input.allow(65536)は、標準入力からargs()とバイト数に上限のあるread_text()を使えるようにします。ks run app.ks a bと、コンパイル済みの./app a bは、同じテキストと同じ Error 値を返します(Program Input v1)。 - 時間と乱数も能力です。
caps.clock.allow(1000)は、その分解能より細かくない時計の値を読み取ります。caps.random.allow(64)は、オペレーティングシステムの安全なソースから最大 64 バイトを取得します(Clock and Random v1)。 - テスト済みのドキュメントで学べます。 言語ガイドでは、すべての例が CI で実行されます。エラーコードとコアライブラリのリファレンスはツールチェーンから生成されます。
examples/appsには、完成したプログラムが 3 つあります。 - デフォルトでは不変です。 再束縛には
let mutが必要です。 - すべての診断には説明があります。 エラーコードは 33 種類あり、二言語のカタログが用意されています。
ks explain KS2401は、原因と修正方法を出力します。
例
fn fetch_data(net: NetCaps, url: String) -> String or Error {
let response = net.get(url) or return Error("request failed")
return response.text()
}
fn main(caps: SystemCaps) {
let api_net = caps.net.allow("https://api.example.com")
let response = fetch_data(api_net, "https://api.example.com/v1")
println(response)
}
fetch_data がアクセスできるオリジンは、ちょうど 1 つです。ディスクに触れたり、環境変数を読み取ったり、プロセスを開始したりすることはできません。監査の結果そうしないと判明したからではなく、それを可能にするトークンを持っていないからです。
能力マニフェスト
権限はソース内で明示されているため、機械的に要約できます。ks caps は、モジュールグラフ全体にわたって、プログラムがアクセスできるすべてのものを報告します。
ks caps examples/app.ks
ks caps --json src/main.ks
ks caps --deny net src/main.ks # exits 2 if the program can reach the network
純粋なプログラムではマニフェストは空です。これはコードレビューでの主張ではなく、確認可能な事実です。
KOSCHEI CAPABILITY MANIFEST: examples/app.ks
This program carries no side-effect capability.
No disk, network, environment, or process access — pure computation.
--deny ゲートは CI 向けに設計されています。依存関係の更新によってアクセス範囲がひそかに拡大した場合、ビルドは失敗します。
言語機能
現在実装済みの機能:型付きパラメーターを持つ関数、型推論されるジェネリック関数、ジェネリック構造体と列挙型、let/let mut、構造体、List<T>、不変のMap<String, V>(get/set/keys/contains)、for-in、条件にBoolのみを受け付けるif/else/while、網羅性が検証されるmatchを備えた列挙型、本物のOption<T>/Result<T, E>、完全な式の補間("{items.length()}")、日常的に使える標準ライブラリ(Stringのtrim/split/join、Listのsort/filter/contains)、そしてimport riskによってインポート元のファイルと同じ場所にあるrisk.ksをバインドするモジュールシステムです。マニフェストも、ビルドスクリプトも、設定も必要ありません。
コアライブラリはKoschei自体で記述されています。import textとimport listは、ツールチェーンに同梱されたライブラリモジュール(text.starts_with、text.replace、text.lines、list.first、list.reverse、list.slice、…)をバインドし、独自のコードと同じパイプラインで検査・実行されます。import secureを追加すると、監査済みのホスト実装によるドメイン分離されたSHA3-256ダイジェストを利用できます。また、最初のライブラリユニバースモジュールもKoscheiで記述されています。マーベルのガーディアンであるcaptain_marvel、hela、strange、wandaです。ks runはライブラリを実行し、ks buildは同じソースからコンパイルします。関数一覧はコアライブラリ v1を参照してください。
ツールチェーン
ks check src/main.ks # types, modules, capability rules
ks run src/main.ks # interpreter
ks build src/main.ks -o app # current native build path
ks fmt --write src/ # canonical formatting
ks caps src/main.ks # capability manifest
ks explain KS2401 # diagnostics, --lang tr for Turkish
ks check --json src/main.ks # stable code/message/line/column for editors
ks mir src/main.ks # sealed checked backend contract
ks lsp # zero-dependency language server
ks-mcp --allow-read ./data # MCP server: agents run Koschei under a policy (docs/MCP_SERVER.md)
ks tokens / ks ast
Koscheiの長期的な標準アーキテクチャは、一時的なブートストラップ/ツール層の実装言語ではなく、Koscheiのセマンティクスと検証済みの実行契約によって定義されます。外部アダプターは、権威を持たない相互運用の仕組みです。
エディターサポート
editors/vscodeには、依存関係ゼロの公式LSP拡張機能が含まれています。.ksの構文強調表示、リアルタイム診断、フォーマット、ホバー、定義への移動、ドキュメントシンボル、補完に対応しています。サーバーはks lspから利用でき(互換性エイリアスとしてks-lspも維持されています)。
テスト
python -m unittest discover -s tests -v
CIスイートには、コンパイラ/ランタイムのテスト、ネイティブ版とインタープリター版の同等性チェック、リポジトリ内ドキュメントのサンプル、コミット済みのゴールデン出力、ケイパビリティセキュリティの回帰テスト、欺瞞レイヤーへの攻撃シミュレーションが含まれています。
ステータス
Koscheiは1.0より前の段階にあり、活発に開発されています。最初の本番リリースまでに、構文、ランタイム契約、ライセンス、配布方法、セキュリティアーキテクチャが変更される可能性があります。まだ本番環境では使用しないでください。
現在、ネイティブパスで適用されているセキュリティ境界には、ケイパビリティの拒否、権限の制限、パストラバーサル/シンボリックリンクによる脱出の防止、読み取り専用の適用、リダイレクト先オリジンの適用、呼び出し深度の制限、保護されたソースオブジェクトの不透明な同一性、エポック単位のエイリアスローテーション、おとりのソースビュー、エポックに紐づく読み取り許可が含まれます。セキュリティに関する主張は、今後もテストと証拠に基づいて裏付ける必要があります。このプロジェクトは、いかなるソフトウェアシステムも数学的に侵害不可能だとは主張しません。
保護ソース/欺瞞アーキテクチャは、段階的な攻撃ウェーブを通じて強化されています。標準のソースIDは物理的なソースロケーターと分離されており、おとりビューは設計上、デプロイできません。
ライセンスと配布
Koschei Langは、個人の非商用利用に限り無料です。商用利用には商用ライセンスが必要です。料金は一度限りで、有効期限はなく、購入から12か月以内にリリースされたすべてのバージョンが対象です。個人:49 USD、チーム(開発者10名まで):249 USD、エンタープライズ:999 USD。Koscheiで作成したプログラムと、ks buildが生成するバイナリは、それぞれの作者に帰属します。LICENSING.mdを参照してください。
ユーザーはPolarのストア(polar.sh)からKoscheiをダウンロードします。python tools/polar_bundle_v1.pyでダウンロード用ファイルdist/polar/koschei-lang-<version>.zipをビルドします。このファイルには、koscheiパッケージ、インストーラー、ライセンス、顧客向けREADME(distribution/polar/)、言語ガイド、リファレンス、およびその実行対象となるサンプルが含まれます。
貢献
GitHub の issue でバグ報告を歓迎します。脆弱性は、SECURITY.md の説明に従って非公開で報告してください。現時点ではコードの貢献は受け付けていません。所有権と商用ライセンスを明確に保つため、まず貢献者向けの条件を整える必要があります。
ライセンス
Koschei Lang License 1.0 — 個人利用は無料です。商用利用には永続的な商用ライセンスが必要です。LICENSE を参照してください(トルコ語版:LICENSE.tr.md)。以前 MIT License のもとで公開されたリビジョンには、引き続き MIT License が適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。