Cruxible Core について
Cruxible Coreは、AIエージェント向けのガバナンス付き状態エンジンです。ドメイン知識をレビュー可能で、バージョン管理・監査・テストができる状態として表現します。実行時ルールで書き込みと範囲限定の操作を制御し、クエリや変更、実行にはレシートを付与します。
主な機能
- 01YAMLによるドメインモデルとルールの宣言
- 02証拠に基づく提案とレビュー
- 03レシート付きの正確なクエリ
- 04制限付きでレビュー可能なProcedure
- 05結果、スナップショット、監査履歴の記録
活用シーン
- 01複数のエージェントでレビュー済みの状態を共有
- 02サプライチェーンの判断と後続操作を統制
- 03意思決定の成功条件と実際の結果を追跡
MCP 対応
Cruxibleは、CLIやPythonクライアントと同じデーモン、認証情報、権限階層を共有するMCPサーバーを提供します。エージェントはMCP設定から接続し、統制された状態にアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx cruxible-coreCRUXIBLE_MODEPermission mode: admin (default), graph_write, or read_onlyCRUXIBLE_ALLOWED_ROOTSComma-separated absolute paths restricting which directories cruxible_init can accessローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cruxible
cruxible.ai · クイックスタート · ドキュメント · キット · スキル
Cruxibleは、AIエージェント向けのガバナンス機能を備えた状態エンジンです。 Cruxを生成します。Cruxとは、コードのようなライフサイクルを持つ、ドメイン知識の実行可能な成果物です。型付けされ、レビューされ、バージョン管理と監査が可能で、結果に照らしてテストされます。
課題。 コードは型付けされ、レビューされ、バージョン管理されます。決定論的に実行され、テストで数秒以内に検証できます。一方、エージェントが生み出す判断、観察、再利用可能なアクション、決定は散文として残ります。散文は実行できず、提案から信頼できる状態へ進むためのガバナンスされた道筋もなく、同じことが繰り返される範囲にも制限がありません。現実の決定が確定するのは数週間から数か月後で、そのころには追跡するものがなくなっていることもあります。また、散文は共有基盤にはなりません。多数のエージェントを運用する組織では、それぞれのエージェントが独自に文書を解釈するのではなく、すべてのエージェントが同じ最新の主張、ルール、レビュー済みの行動方法に基づいて動く必要があります。
仕組み。 ドメインオントロジーとそのルールをYAMLで宣言します。再現可能なパイプラインによって、信頼できるソースデータが型付き状態に変換されます。エージェントまたは人間が判断を下すとき、Cruxibleは、主張が有効になる前に証拠とレビューを必須にできます。エージェントが有効な行動方法を学んだ場合、それも提案できます。Procedureは主張と同じレビューサイクルを経て、宣言された入力、前提条件、制限の範囲内でのみ実行されます。決定を受け入れる前に、何をもって成功とするかを明示するよう求めることもできます。結果の契約は定められた時期に到来し、現実が示した内容を記録します。クエリとアクションは同じライブ状態に対して実行され、無効な変更は拒否されます。エンジン内ではLLMは実行されません。
利用する理由。 すべてのエージェントが同じライブの主張に基づいて動作し、同じレビュー済みで範囲が定められたProcedureを呼び出せます。無効な書き込みやアクションは拒否され、矛盾は解決されるまで可視化され、決定は実際に起きたことと照らして確認できます。また、計算結果、変更、アクションの実行には、その内容を説明するレシートが付与されます。スナップショットは、比較、分岐、移行のために、特定のリビジョンにおける正確な設定、ロック、グラフ状態、Procedureの定義を記録します。バックアップは復旧に必要な監査ストア全体を保持します。この成果物全体は、個々のセッションやモデルが終わった後も存続します。
小さな例を見てみましょう。サプライヤーの在庫情報とインシデントフィードから、固定されたソースに基づいてエンティティを構築します。あるエージェントがインシデントはサプライヤーに影響すると結論づけますが、その関係は判断を要するものとして宣言されています。
entity_types:
Incident:
id: incident_id
properties:
title: string indexed
Supplier:
id: supplier_id
properties:
name: string indexed
relationships:
- incident_impacts_supplier: Incident -> Supplier
write_policy: proposal_only # judgment call: enters only through review
named_queries:
incident_impacted_suppliers:
mode: traversal
entry_point: Incident
returns: Supplier
traverse:
- relationship: incident_impacts_supplier
direction: outgoing
これでポリシーがランタイムの一部になります。直接の書き込みは拒否され、レビューによって判断が承認され、クエリによってその影響が計算されます。
$ cruxible relationship add incident_impacts_supplier \
Incident INC-TW-RAIL-2026-07 Supplier S-CN-DG-HARNESS
- Error: DirectWriteRefusedError: Direct write to relationship
- 'incident_impacts_supplier' is refused (write_policy=proposal_only).
- Use 'group propose' to stage a governed proposal. (receipt: RCP-…)
$ cruxible propose --workflow propose_incident_impacts_supplier
$ cruxible group resolve --group <GRP-id> --action approve \
--rationale "Confirmed against supplier geography"
$ cruxible query run incident_impacted_suppliers \
--param incident_id=INC-TW-RAIL-2026-07 --json
+ { "items": [ { "entity_type": "Supplier", "entity_id": "S-CN-DG-HARNESS" } ],
+ "receipt_id": "RCP-2f61a90c84d3" }
ソースの事実は決定論的な取り込みを通じて取り込まれ、推論されたエッジはレビューを通じて加わりました。クエリはその影響をたどれるようになり、ガードやゲートはそれに作用できるようになりました。また、後から得られた観測によって、履歴を暗黙に書き換えることなく、その内容に異議を唱えられます。
学習したアクション、測定された結果、訂正までの流れを見る
ライフサイクルの全体像を簡潔に示します。
INGEST pinned feeds -> Incident, Supplier, Product, and Shipment state
CLAIM incident_impacts_supplier: pending -> live (evidence + reviewer)
QUERY incident_impacted_suppliers -> [S-CN-DG-HARNESS]
PROCEDURE hold_exposed_shipments v1: pending -> live (config + lock pinned)
DECISION hold exposed shipments; success = zero exposed shipments released
RUN bounded provider calls complete -> receipt RCP-run-...
OUTCOME pinned query at check time -> satisfied -> receipt RCP-outcome-...
OBSERVATION new evidence says the supplier was outside the incident boundary
ATTESTATION contradict incident_impacts_supplier (claim remains live)
REVIEW attestation upheld; separate adjudication rejects the claim
QUERY incident_impacted_suppliers -> []
SNAPSHOT exact config + lock + graph state + Procedure definitions captured
Procedure は受け入れ後は不変であり、オペレーターがエクスポートした機能だけを、レビュー済みの事前条件と予算の範囲内で呼び出せます。結果のコントラクトは、判断が有効になる前に宣言され、成功の測定方法を固定します。アテステーションは追記専用の観測です。これを解決しても主張が暗黙に変わることはないため、その後の却下は別個の、レシート付きの判断となります。ライブクエリの結果が変わった後も、以前の主張、観測、推論は引き続き利用できます。
Cruxible 自体も同じ境界を採用しています。このリポジトリでは、承認済みのレビューが状態に記録されるまで、main へのプッシュを拒否します(方法はこちら)。
pip install cruxible—
クイックスタート では、インストールから最初のクエリまでを説明します。以下のはじめにでは、モデル呼び出しや API キーなしで、シード済みのデモ環境を約 3 分で実行できます。
Crux の内部
モデル — 世界と、それを統制するルールを宣言します
- エンティティタイプ、関係、列挙型、コントラクト、クエリ、ガード、ゲートは、1 つの Terraform のような設定ファイル にまとめられています
- キットは、ポリシー、ワークフロー、プロバイダーとともに再利用可能なモデルをパッケージ化します。 オーバーレイキット を組み合わせれば、コピーせずにドメインモデルと運用モデルを構成できます
- 作成スキル は、ソースシステムやアーティファクトからオントロジーを作成する際に役立ちます。オペレーターは、ランタイムが適用するコントラクトをレビューします (状態のモデル化)
確定 — 証拠と判断をライブの運用状態に変換します
- ソースはコンテンツハッシュ付きのアーティファクトとして保持されます。主張ではコーパスをグラフにコピーせず、ソース内の正確な位置を引用します
- 決定論的な事実は、プレビューとロック固定を行ったワークフローで構築できます。判断は、証拠に裏付けられた提案として取り込まれます
- タイプごとの
write_policyによって、直接書き込み、提案のみ、または新規作成のみの受け入れ方法を選択できます。ガードは単一の要所で、証拠、遷移、同時書き込みを適用します (概念) - 判断に関する呼び出しは、対応する証拠を含むレビューグループ に登録されます。レビューにより、根拠を記録したうえで、作成者が明示された状態が生成されます
- 各認証情報には、累積する 4 段階の権限レベルがあります。ガードは、レシートに基づいて、レビュー担当者と作成者が異なることを必須にできます (認証とエージェントの役割)
計算 — 同じライブ状態から正確な回答を導き出します
- 名前付きのトラバーサルにより、影響範囲、依存関係、適格性など、繰り返し必要となる回答をモデルの外部で計算します
- クエリのレシートには、使用した状態のリビジョンとグラフパスが示されます。切り詰めやページネーションは、結果が不完全なまま暗黙に返されるのではなく、明示されます
- コンパクトな出力プロファイル、範囲を限定した近傍、グラフ構造の結果、ローカルの読み取り作業セットにより、エージェントのコンテキストを質問に見合った規模に保てます
実行 — 任意のコード実行を許可せずに、学習した手順を実行します
- 手順は、オペレーターが明示的にエクスポートした機能を組み合わせた、エージェントが提案できる構成です。前提条件と実行予算が宣言されています ([概念](https://github.com/cruxible-ai/cruxible/blob/main/docs/concepts.md#procedures)) - 独立した承認により、不変の手順がレビュー済みの設定とロックに固定されます。古くなった固定はフェイルクローズし、改訂版は手順を変更せずに置き換えます - すべての実行には上限があり、レシートが記録されます。ガードは状態への書き込みを保護し、ゲートはライブ状態が許可するまでマージやデプロイなどの外部アクションを保留します観察 — 暗黙の自己変更なしに、アクションと根拠を結び付けます
- アテステーションは、正確な主張のライブステータスを変更せずに、日付付きの支持、反証、または不確実性を追記します。レビュー担当者が食い違いを解決します
- 成果契約では、判断が受け入れられる前に成功基準と固定された測定方法を宣言し、確認時期が来たら現実が示した結果を記録します
- 訂正、却下、置き換えは、明示的に管理されたイベントとして残ります。成果は次の改訂に反映されますが、状態を自動的に書き換えることはありません (概念)
運用 — 1つのデーモン、多様なインターフェース、所有権を持つ状態
- 同じデーモン、認証情報、ティアを使うMCP サーバー、CLI、Python クライアント。エージェントのセットアップは1つの MCP 設定ブロックだけです
- スナップショット、バックアップ、状態の 公開、および 検査用 UI を SQLite ファイル上で利用でき、1つのアーティファクトとして持ち運べます (分離デプロイ)
はじめに
pip install cruxible
オーサリングスキルと
状態のモデリングを使って独自の Crux を構築するか、デモを実行してください。シード済みのサプライチェーン環境を約3分で試せます。モデル呼び出しも API キーも必要ありません。サンドボックスへの書き込みは、組み込みの operator
ID に帰属します。
# shell 1 — local sandbox daemon
CRUXIBLE_SERVER_STATE_DIR="$HOME/.cruxible/sandbox" cruxible server start
# shell 2 — kit bundles are fetched from the release and digest-verified
# (agent-operation is the optional agent-ops layer; domain-only works too)
cruxible --server-url http://127.0.0.1:8100 init --kit agent-operation --kit supply-chain-blast-radius
cruxible context connect --server-url http://127.0.0.1:8100 --instance-id <instance-id>
# deterministic ingest: preview, then commit
cruxible run --workflow build_seed_state && cruxible apply --workflow build_seed_state --from-last-preview
cruxible run --workflow ingest_incidents && cruxible apply --workflow ingest_incidents --from-last-preview
# the incident feed can only PROPOSE impact edges; the judgment is yours, on the record
cruxible propose --workflow propose_incident_impacts_supplier
cruxible group list --status pending_review
cruxible group resolve --group <GRP-id> --action approve \
--rationale "Confirmed against supplier geography" --expected-pending-version 1
# receipted answers through the edges you just admitted
cruxible query run open_incident_impacts --json
cruxible query run incident_impacted_suppliers --param incident_id=INC-TW-RAIL-2026-07 --json
エージェントが参加すると、ID 機能が有効になります。CRUXIBLE_SERVER_AUTH=true を指定して再起動し、ブートストラップ認証情報を取得して、各エージェントに専用のトークンを発行します。すべての書き込みの帰属先が記録されます。詳細、権限ティア、セキュリティ強化については、
クイックスタート ·
ランタイム認証とエージェントの役割をご覧ください。
ルールは実行される
Cruxible は、ルールに従うようモデルに求めません。ルールはコードとして実行されるからです。設定で宣言されたルールは、あらゆる変更のたびに書き込みのチョークポイントで実行され、このチョークポイントを迂回するコードパスはありません。
| プロンプトによる指示 | 強制されるルール |
|---|---|
| 「エージェントは、未修正のままではエクスポージャーをクローズできないと理解している」 | 修正の申告とその証拠がリンクされるまで、書き込みのチョークポイントが状態遷移を拒否します |
| 「モデルは、これらのソースが申告を裏付けていると言っている」 | すべての参照先が、コンテンツハッシュで検証されたソースチャンクを指していない限り、書き込みは拒否されます |
| 「エージェントには、自ら提案した申告を承認しないよう伝えてある」 | ガードは、実行者と作成時のレシートに記録された実行者を比較し、作成と同時の承認も含めて拒否します |
| 「エージェントは再利用可能なアクションシーケンスを学習した」 | Procedure が呼び出せるのはエクスポートされたプロバイダーのみであり、宣言された前提条件と予算の範囲内に限られます。独立した承認によってレビュー済みの設定とロックに固定され、実行のたびにレシートが残ります |
ガードは内向き(稼働中の状態の書き込み境界)に作用し、ゲートは外向き(状態が一致するまで外部アクションを保留)に作用します。
git pre-push に組み込まれた、宣言型ゲート
gates:
merge-review:
kind: git-pre-push
entity_type: ReviewRequest
match_property: change_head
condition: {status: approved}
adapter: {branch_pattern: refs/heads/main}
このリポジトリもそのゲートのもとで動作しています。レビュー記録が状態上で修正されるまで、私たち自身の 0.2.2 リリースのプッシュも拒否されました。修正したのは状態であり、フックではありません。
全体のウォークスルー
詳細解説では、統制された真実を端から端まで一つ構築します。レビュー済みの単一の判断によって、クエリが再帰的な部品表をたどり、型付きの関係を 5 段階下流までたどって、エクスポージャーのあるすべての出荷品を特定します。その結果には、explain で説明できるレシートが付属します。
このスクリーンショットは、インスペクション UIのレビュー画面です。提案された各エッジには、それに一致した証拠が付属し、来歴レールからワークフロー、レシート、トレースをたどれます。
Cruxible が適する場面
Cruxible は、ソースシステム、ドキュメント、検索を置き換えるものではありません。これらのレイヤーは、エージェントが証拠を見つけて解釈するのに役立ちます。Cruxible は、システムの他の部分が一貫してクエリし、強制し、またはそれを通じてアクションを実行する必要のある、より小さな一連のコミットメントを保持します。
| レイヤー | 役割 |
|---|---|
| ソースシステム、アーティファクト、検索 | 証拠を保持し、見つけられるようにします |
| エージェントと人間 | 証拠を解釈し、申告や Procedure を提案し、判断をレビューします |
| Cruxible | 申告のライフサイクルを管理し、厳密な読み取りと範囲を限定したアクションを実行し、ポリシーを強制して、レシートと結果を添付します |
情報が読むためだけに役立つのであれば、アーティファクトまたは検索レイヤーに置いたままにします。複数のセッションにわたってエージェントがその情報を最新情報として信頼し、その影響をたどり、強制し、またはそれを通じてアクションを実行する必要がある場合は、その知識を Crux にコンパイルします。
キット
キットは、Crux 用の再利用可能なテンプレートです。オントロジーと、そのガバナンス、クエリ、ワークフロー、プロバイダーをひとつにまとめた、バージョン管理可能で合成可能な単位です。各キットの ガイドでは、最初から最後まで実行する手順を紹介しています。
| キット | 種類 | モデル化する内容 |
|---|---|---|
| agent-operation | エージェントの運用状態 | 作業項目、レビュー依頼、判断、リスク、未解決の質問、状態メモ、アクター、ライフサイクル、依存関係のコンテキスト。 |
| project-domain | ドメインオーバーレイ状態 | agent-operation のベースに重ねて構成されるロードマップ項目、マイルストーン、リリース系列、製品領域。Cruxible 自身が実行されるプロジェクトの状態です。 |
| agent-release | ドメインオーバーレイ状態 | エージェントシステム、バージョン、評価スイートと実行、およびガバナンスされた認定・昇格ゲート。 |
| kev-reference | ドメイン参照状態 | 公開されている既知の悪用済み脆弱性の参照データ。公開済みの状態リリース(state create-overlay)として使用します。オフラインでビルドする場合や、独自のものを公開する場合に限り、キット自体を初期化してください。 |
| kev-triage | ドメインオーバーレイ状態 | ローカル資産の露出、サービスへの影響、制御、インシデント、検出結果、修復、ガバナンスされた脆弱性のトリアージ。 |
| supply-chain-blast-radius | ドメイン状態 | サプライヤー、コンポーネント、組み立て品、製品、出荷、インシデントの影響範囲。 |
| case-law-monitoring | ドメイン状態 | 事案を中心とする判例モニタリングと法的権威への影響。 |
ドキュメント
- クイックスタート — インストールから最初のクエリまで
- 概念 — アーキテクチャと基本要素
- 詳細ガイド — ガバナンスされたドメインを最初から最後まで解説
- 状態のモデリング — オントロジーの設計
- 設定リファレンス — YAML 設定スキーマ
- CLI リファレンス · MCP ツール · AI エージェントガイド
- キットガイド — KEV、サプライチェーン、判例法、エージェント運用。デプロイ、認証、バックアップ、公開に関するガイドもすべて
docs/にあります。データから状態を作成するためのエージェントスキルもご覧ください。
テクノロジー
Cruxible は、検証にPydantic、メモリ内のグラフ操作にNetworkX、データ操作にPolars、ローカルの永続状態にSQLite、デーモンにFastAPI、MCP ツールにFastMCPを使用しています。
貢献
貢献を歓迎します。詳細は CONTRIBUTING.mdをご覧ください。 ガバナンスされたエージェント状態に取り組んでいる方は、リポジトリにスターを付けるか、ユースケースを添えてイシューを作成してください。
ライセンス
Apache 2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。