MCPcopy Index your code
hub / github.com/ThirdKeyAI/Symbiont

github.com/ThirdKeyAI/Symbiont @v1.17.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.17.0 ↗ · + Follow
6,441 symbols 19,538 edges 410 files 1,669 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Symbi

English | 中文简体 | Español | Português | 日本語 | Deutsch

Build Crates.io License Docs YouTube

OATS Reference Implementation DOI Typestate Loops DOI ToolClad DOI Empirical Eval


本番環境向けポリシー制御エージェントランタイム。 同じエージェント。安全なランタイム。

A Cedar policy denies a live agent's privileged tool call

ここで見えているもの: 実際のモデル (claude-haiku-4.5) がエージェントフリートの一覧表示を要求します。Cedar の forbid ルールが毎回のリトライでその呼び出しを拒否します — コード変更は不要、ポリシーだけです。コマンド1つで再現する ↓ · ▶ 完全なウォークスルー

Symbiont は、明示的なポリシー、アイデンティティ、監査制御の下で AI エージェントとツールを実行するための Rust ネイティブランタイムです。

多くのエージェントフレームワークはオーケストレーションに注力しています。Symbiont は、エージェントが実際のリスクを伴う実環境で動作する場面に注力しています:信頼されていないツール、機密データ、承認境界、監査要件、再現可能な適用。


なぜ Symbiont か

AI エージェントはデモは簡単ですが、信頼を得るのは難しいものです。

エージェントがツールの呼び出し、ファイルへのアクセス、メッセージの送信、外部サービスの呼び出しを行えるようになると、プロンプトとグルーコードだけでは不十分です。必要なのは:

  • ポリシー適用 — エージェントに許可される操作の制御 — 組み込み DSL と Cedar 認可
  • ツール検証 — 盲目的な信頼に頼らない実行 — SchemaPin による MCP ツールの暗号化検証
  • ツール契約 — ツールの実行方法を規定 — ToolClad による宣言的な引数検証、スコープ強制、インジェクション防止
  • エージェントアイデンティティ — 誰が操作しているかの把握 — AgentPin ドメイン固定 ES256 アイデンティティ
  • サンドボックス化 — リスクの高いワークロードの隔離 — Docker、gVisor (runsc)、または Firecracker microVM をエージェントごとに選択
  • 監査証跡 — 何が起こり、なぜ起こったかの記録 — 暗号化的に改ざん防止されたログ
  • 承認ゲート — 機密アクションへの対応 — ポリシーが要求する場合の実行前の人間によるレビュー

Symbiont はそのレイヤーのために構築されています。

Open Agent Trust Stack (OATS) — リファレンス実装

Symbiont は Open Agent Trust Stack (OATS) のリファレンス実装です — 事後的なインターセプトではなく、構造的な強制を通じて AI エージェントの実行を保護するためのオープン仕様(CC BY 4.0)です(「許可されるものを定義し、それ以外はすべて構造的に表現不能にする」)。OATS 仕様は Symbiont の本番運用経験に根ざしており、Symbiont の設計は OATS のレイヤーを直接トレースしています:

OATS Layer Symbiont mapping
Layer 1 — ORGA Loop(typestate で強制された Observe-Reason-Gate-Act) crates/runtime/src/reasoning/ — typestate で強制されたフェーズ。ポリシーゲートはコンパイル時にスキップ不能です。Wanger 2026 / DOI 10.5281/zenodo.19896446 を参照。
Layer 2 — Tool Contracts ToolClad の宣言的な .clad.toml マニフェスト + crates/runtime/src/toolclad/ 内の agent_summary typestate フェンス。Wanger 2026 / DOI 10.5281/zenodo.19957596 を参照。
Layer 3 — Identity MCP ツール向けの SchemaPin + AgentPin ES256 ドメイン固定エージェントアイデンティティ。
Layer 4 — Policy Engine Cedar ポリシーゲート(crates/runtime/src/reasoning/cedar_gate.rs)+ エージェント間呼び出し向けの CommunicationPolicyGate。両者とも v1.14.0 以降デフォルトでフェイルクローズです。
Layer 5 — Audit Journal 推論ループ内のハッシュチェーン化された Ed25519 署名付き BufferedJournalcrates/runtime/src/logging.rs 内の暗号化されたモデル I/O ログ。

Symbiont は OATS Extended(C1–C7 + E1–E8)に準拠しています。仕様の基礎となる構造的強制ランタイムの実証的比較は Wanger 2026 / DOI 10.5281/zenodo.20043247 を参照してください。


クイックスタート

ポリシーゲートがツールを拒否する様子を見る — セットアップ不要、コマンド1つ

Cedar の forbid が特権ツールをブロックする一方、安全なツールは通過します。公開イメージに対してこれをコピー&ペーストしてください(クローン不要、ビルド不要):

docker run --rm --entrypoint sh ghcr.io/thirdkeyai/symbi:latest -c '
mkdir -p /tmp/p && cat > /tmp/p/policy.cedar <<EOF
forbid(principal, action == Symbi::Action::"tool_call::list_agents",   resource);
permit(principal, action == Symbi::Action::"tool_call::system_health", resource);
EOF
echo "{\"tool_name\":\"list_agents\"}"   | symbi policy evaluate --stdin --policies /tmp/p --json
echo "{\"tool_name\":\"system_health\"}" | symbi policy evaluate --stdin --policies /tmp/p --json'
{"decision":"deny","reason":"deny policies matched: policy_0","tool":"list_agents", ...}
{"decision":"allow","reason":"allow policies matched: policy_1","tool":"system_health", ...}

これは、ランタイムがライブの推論ループに組み込むのと同じ Cedar ゲートです — まさに上のデモで示された拒否そのものです。

CLI をインストール

# Linux / macOS — installs the `symbi` binary to /usr/local/bin
curl -fsSL https://symbiont.dev/install.sh | bash
symbi --help

インストーラーはお使いのプラットフォーム向けにビルド済みのリリースバイナリを取得します。bash -s -- --version v1.15.2 でバージョンを固定したり、--dir でインストール先を変更したりできます。Docker またはソースからのビルドをお好みですか?どちらも以下にあります。

前提条件

  • Docker(推奨)または Rust 1.82+

プロジェクトをスキャフォールドして実行する(Docker、約 60 秒)

# 1. 現在のディレクトリにプロジェクトを作成します。
#    symbiont.toml、agents/、policies/、docker-compose.yml、および
#    新たに生成された SYMBIONT_MASTER_KEY を含む .env を生成します。
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
  init --profile assistant --no-interact --dir /workspace

# 2. ランタイムを起動します。.env を自動的に読み込みます。
docker compose up

これだけです — Runtime API は http://localhost:8080、HTTP Input は http://localhost:8081 で動作します。 ビルド済みエージェントを参照するには symbi init --catalog list(または Docker の同等コマンド)を使用してください。

その他の Docker レシピ

# プロジェクトなしのアドホックランタイム(一時的、マスターキーなし)
docker run --rm -p 8080:8080 -p 8081:8081 ghcr.io/thirdkeyai/symbi:latest up

# MCP サーバーのみ
docker run --rm -p 8080:8080 ghcr.io/thirdkeyai/symbi:latest mcp

# エージェント定義を解析(`.symbi`。レガシーの `.dsl` も受け付けます)
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
  dsl -f /workspace/agent.symbi

ソースからビルド

cargo build --release
./target/release/symbi --help

# ローカルでプロジェクトをスキャフォールドし、ランタイムを起動します
./target/release/symbi init --profile assistant --no-interact
./target/release/symbi up

本番デプロイメントの場合は、信頼されていないツール実行を有効にする前に SECURITY.mdデプロイメントガイドを確認してください。


仕組み

Symbiont はエージェントの意図と実行権限を分離します:

  1. エージェントが提案 — 推論ループ(Observe-Reason-Gate-Act)を通じてアクションを提案
  2. ランタイムが評価 — 各アクションをポリシー、アイデンティティ、信頼チェックに照らして評価
  3. ポリシーが決定 — 許可されたアクションは実行され、拒否されたアクションはブロックまたは承認にルーティング
  4. すべてが記録 — すべての決定に対する改ざん防止監査証跡

モデル出力が実行権限として扱われることはありません。ランタイムが実際に何が起こるかを制御します。

例:信頼されていないツールがポリシーによりブロックされる

エージェントが未検証の MCP ツールを呼び出そうとします。ランタイムは:

  1. SchemaPin 検証ステータスを確認 — ツール署名が存在しないか無効
  2. Cedar ポリシーを評価 — forbid(action == Action::"tool_call") when { !resource.verified }
  3. 実行をブロックし、完全なコンテキストとともに拒否をログに記録
  4. オプションで、手動承認のためにオペレーターにルーティング

コード変更は不要です。ポリシーが実行を制御します。


DSL 例

agent secure_analyst(input: DataSet) -> Result {
    policy access_control {
        allow: read(input) if input.verified == true
        deny: send_email without approval
        audit: all_operations
    }

    with memory = "persistent", requires = "approval" {
        result = analyze(input);
        return result;
    }
}

完全な文法(metadataschedulewebhookchannel ブロックを含む)については DSL ガイドを参照してください。

ファイル拡張子: Symbiont のエージェント定義は正規の拡張子として .symbi を使用します(例:agents/assistant.symbi)。レガシーの .dsl 拡張子は後方互換性のために今後も無期限に解析され続けますが、symbi init でスキャフォールドされる新しいプロジェクトおよびこのリポジトリ内のすべての例は .symbi を使用します。


コア機能

機能 説明
ポリシーエンジン エージェントアクション、ツール呼び出し、リソースアクセスに対するきめ細かな Cedar 認可
ツール検証 実行前の MCP ツールスキーマの SchemaPin 暗号化検証
ツール契約 ToolClad 宣言的契約による引数検証、スコープ強制、Cedar ポリシー生成
エージェントアイデンティティ エージェントおよびスケジュールタスク向けの AgentPin ドメイン固定 ES256 アイデンティティ
推論ループ ポリシーゲートとサーキットブレーカーを備えた型状態強制の Observe-Reason-Gate-Act サイクル
サンドボックス化 Docker、gVisor (runsc)、または Firecracker microVM — DSL の with { sandbox = ... } ブロックでエージェントごとに選択可能
監査ログ すべてのポリシー決定に対する構造化レコード付き改ざん防止ログ
シークレット管理 Vault/OpenBao 統合、AES-256-GCM 暗号化ストレージ、エージェントごとのスコープ
MCP 統合 ガバナンス付きツールアクセスを備えたネイティブ Model Context Protocol サポート

追加機能:ツール/スキルコンテンツの脅威スキャン(40 ルール、10 攻撃カテゴリ)、Cron スケジューリング、永続エージェントメモリ、ハイブリッド RAG 検索(LanceDB/Qdrant)、Webhook 検証、配信ルーティング、OTLP テレメトリ、HTTP セキュリティ強化、Claude Code および Gemini CLI 向けガバナンスプラグイン。詳細は完全なドキュメントを参照してください。

代表的なベンチマークはベンチマークハーネス閾値テストで確認できます。


セキュリティモデル

Symbiont はシンプルな原則に基づいて設計されています:モデル出力は実行権限として信頼されるべきではない。

アクションはランタイム制御を通過します:

  • ゼロトラスト — すべてのエージェント入力はデフォルトで信頼されない
  • ポリシーチェック — すべてのツール呼び出しとリソースアクセスの前に Cedar 認可
  • ツール検証 — SchemaPin によるツールスキーマの暗号化検証
  • サンドボックス境界 — エージェントごとに隔離レベルを選択:Docker(デフォルト)、gVisor(runsc syscall フィルター)、または Firecracker(microVM)
  • オペレーター承認 — 機密アクションに対する人間によるレビューゲート
  • シークレット制御 — Vault/OpenBao バックエンド、暗号化ローカルストレージ、エージェント名前空間
  • 監査ログ — すべての決定の暗号化的改ざん防止レコード

信頼されていないコードやリスクの高いツールを実行する場合、脆弱なローカル実行モデルだけを境界として頼るべきではありません。SECURITY.mdセキュリティモデルドキュメントを参照してください。


ワークスペース

クレート 説明
symbi 統合 CLI バイナリ
symbi-runtime コアエージェントランタイムおよび実行エンジン
symbi-dsl DSL パーサーおよびエバリュエーター
symbi-channel-adapter Slack/Teams/Mattermost アダプター
repl-core / repl-proto / repl-cli インタラクティブ REPL および JSON-RPC サーバー
repl-lsp Language Server Protocol サポート
symbi-shell オーサリング、オーケストレーション、リモートアタッチのためのインタラクティブ TUI(Beta)
symbi-a2ui 管理ダッシュボード(Lit/TypeScript、アルファ版)

ガバナンスプラグイン: symbi-claude-code | symbi-gemini-cli


ドキュメント

本番環境での Symbiont の導入を検討している場合は、セキュリティモデルとはじめにドキュメントから始めてください。


SDK

アプリケーションから Symbiont ランタイムと連携するための公式クライアント SDK:

言語 パッケージ リポジトリ
JavaScript/TypeScript symbiont-sdk-js GitHub
Python symbiont-sdk GitHub

本番環境での推奨: JS および Python の SDK は、アプリケーション統合やプロトタイピングを目的とした HTTP クライアントです。本番環境のエージェントワークロードには、Symbiont の完全な typestate ベースの安全性保証 — 機能認可、ポリシー適用、ライフサイクル不変条件がランタイムではなくコンパイル時に強制される — を活用するため、Rust 実装の上に直接構築することを推奨します。動的言語のクライアントは、リクエストがランタイム境界を越えた後にしかこれらのプロパティを検証できません。


ライセンス

  • Community エディション(Apache 2.0):コアランタイム、DSL、ポリシーエンジン、ツール検証、サンドボックス化、エージェントメモリ、スケジューリング、MCP 統合、RAG、監査ログ、すべての CLI/REPL ツール。
  • Enterprise エディション(商用ライセンス):コンプライアンス監査エクスポート、AI 駆動ツールレビュー、暗号化マルチエージェント協調、監視ダッシュボード、専用サポート。(3 つのサンドボックスバックエンド — Docker、gVisor、Firecracker — はすべて OSS です。)

エンタープライズライセンスについては ThirdKey にお問い合わせください。


Symbi ロゴ

Extension points exported contracts — how you extend this code

ReasoningPolicyGate (Interface)
(no doc) [8 implementers]
crates/runtime/src/reasoning/policy_bridge.rs
Tty (Interface)
(no doc) [5 implementers]
crates/approval-relay/src/cli.rs
ChannelAdapter (Interface)
(no doc) [4 implementers]
crates/channel-adapter/src/traits.rs
NavItem (Interface)
(no doc)
crates/symbi-a2ui/src/components/shell/nav-sidebar.ts
InferenceProvider (Interface)
(no doc) [10 implementers]
crates/runtime/src/reasoning/inference.rs
InboundHandler (Interface)
(no doc) [4 implementers]
crates/channel-adapter/src/traits.rs
Column (Interface)
(no doc)
crates/symbi-a2ui/src/components/shared/data-table.ts
AgentPhase (Interface)
Marker trait for valid phases. [4 implementers]
crates/runtime/src/reasoning/phases.rs

Core symbols most depended-on inside this repo

to_string
called by 3364
crates/runtime/examples/context_example.rs
clone
called by 1377
crates/runtime/src/routing/decision.rs
push
called by 824
crates/runtime/src/reasoning/conversation.rs
get
called by 428
crates/runtime/src/integrations/agentpin/discovery.rs
is_empty
called by 374
crates/runtime/src/session/transcript.rs
len
called by 334
crates/runtime/src/session/transcript.rs
as_str
called by 254
crates/runtime/src/toolclad/decision.rs
path
called by 243
crates/approval-relay/src/audit.rs

Shape

Function 3,003
Method 2,044
Class 971
Enum 331
Interface 92

Languages

Rust96%
TypeScript3%
C++1%
C1%

Modules by API surface

crates/runtime/src/config.rs86 symbols
crates/symbi-shell/src/app.rs83 symbols
crates/runtime/src/scheduler/cron_scheduler.rs81 symbols
crates/runtime/src/context/manager.rs79 symbols
crates/repl-core/src/dsl/parser.rs68 symbols
crates/dsl/src/lib.rs66 symbols
crates/runtime/src/context/types.rs65 symbols
crates/runtime/src/integrations/sandbox_orchestrator.rs63 symbols
src/commands/init.rs62 symbols
crates/repl-core/src/dsl/evaluator.rs61 symbols
crates/repl-core/src/dsl/ast.rs60 symbols
crates/runtime/src/toolclad/executor.rs57 symbols

Datastores touched

symbiont_tool_reviewDatabase · 1 repos
dbDatabase · 1 repos

For agents

$ claude mcp add Symbiont \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact