mcpField
H
Haldir

Haldir

ローカル
github.com/ExposureGuardセキュリティ43 週間前に更新

Haldir について

Haldirは、ツールや認証情報、予算を扱うAIエージェント向けのガバナンスレイヤーです。セッション権限、暗号化されたシークレット保管庫、改ざん検知可能な監査ログ、承認フローに加え、MCP呼び出しにポリシーを適用するプロキシを備えています。

主な機能

  1. 01セッション権限、支出上限、有効期限の設定
  2. 02AES-256-GCMによるシークレット保管
  3. 03検証可能な監査ログへの操作記録
  4. 04MCP呼び出しの中継とポリシー適用
  5. 05人による承認まで操作を保留

活用シーン

  1. 01セッションごとにエージェントの権限と支出を制限
  2. 02認証情報をモデルに見せずに管理
  3. 03エージェントのツール呼び出し履歴を確認・検証
  4. 04高額な支出操作に事前承認を要求

MCP 対応

Haldirは、セッション、権限、シークレット、監査、承認、コンプライアンスを扱うMCPサーバーを提供します。プロキシは上流のMCPサーバーへの呼び出しを仲介し、記録前にポリシーを適用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"haldir": {
"command": "uvx",
"args": [
"haldir"
]
}
}
}
起動コマンドuvx haldir

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypihaldir0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Haldir

AI エージェントがツールを呼び出し、資金を動かし、秘密情報を読み取るときに、権限の範囲を限定し、支出上限を設定し、暗号化された保管庫を使い、改ざんされていないことを証明できる監査ログを残します。

tests PyPI License: MIT GitHub Stars

稼働中の Haldir 監査ログが改ざんされる様子:過去のエントリーが書き換えられ、包含証明が現在の Merkle ルートと一致しなくなり、判定が「改ざんを検出」に切り替わります

この一連の動作をリアルタイムで見せることが、Haldir のすべてです。誰かが監査ログの行を、データベース上で直接、気づかれないように書き換えます。すると、そのエントリーの包含証明は現在の Merkle ルートと一致しなくなり、判定が切り替わります。監視にも差分チェックにも検知されず、算術によって検知されます。ルートはログに実際に含まれる内容のハッシュであり、それより前の Signed Tree Head は、すでにあなたが制御できない場所に固定されているからです。

→ 自分で試す。 haldir serve(以下)を実行して、http://127.0.0.1:8000/demo を開いてください。自分のマシン上のインスタンスを使って、同じ改ざんデモを試せます。パッケージに含まれているため、ダウンロードもアカウント登録も不要です。

利用できる機能

  • スコープ付きセッション — エージェントごとに権限と支出上限を設定でき、問題が起きたらすぐに取り消せます。
  • 暗号化された保管庫 — AES-256-GCM。エージェントが秘密情報を要求しても、モデルには見えません。すべての暗号文には使用した鍵が記録されるため、秘密情報をひとつも再入力せず、ダウンタイムも発生させずに暗号化キーをローテーションできます。
  • 改ざんを検知できる監査ログ — RFC 6962 Merkle ツリーにすべての呼び出しを記録し、署名付きツリーヘッドを使って、履歴を信頼するだけでなく、その真正性を証明できます。
  • 人による承認 — 支出がしきい値に達したら実行を一時停止し、Webhook を受け取れます。
pip install haldir
haldir serve

これにより、このマシン上で本物の Haldir が起動します。SQLite を使用し、Docker も Postgres もアカウントも必要ありません。暗号化キーを生成し、スキーマを適用し、API キーを発行して、CLI の接続先を自身に設定するため、次のコマンドをすぐに実行できます。

$ haldir serve

  Haldir is running  http://127.0.0.1:8000
  data: ~/.haldir

  Your API key (saved to the Haldir CLI config):
    hld_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  Try it:
    haldir overview
    haldir session create --agent my-agent --scopes read

起動後は、CLI、Python SDK、MCP クライアントなど、好きなものを接続してください。または、起動したインスタンスの /docs で API リファレンスを参照できます。Postgres とコンテナを使いたくなったら、haldir init && haldir dev で環境を構築して実行できます。詳しくは SELF_HOSTING.md をご覧ください。

Claude Code、Cursor、LangChain、CrewAI、AutoGen、LlamaIndex、Vercel AI SDK に対応しています。HTTP リクエストを送信できるもの、または MCP を利用できるものであれば使えます。MIT ライセンスのため、セルフホストすることも、haldir.xyz(無料プラン、登録不要)に接続することもできます。

実際の動作を見る

Haldir の実際の見た目をご覧ください。図や仕様書ではなく、実物のスクリーンショットです。

Haldir なしと Haldir ありの比較:監視なしと、スコープを限定したセッション、支出制限、秘匿されたシークレット、不変の監査証跡

Haldir がないと、エージェントは好きな API を呼び出し、好きなだけ支出し、見つけたシークレットにアクセスできます。監視も監査証跡もありません。Haldir があれば、すべてのアクションにスコープが設定され、支出が制限され、不変のログに記録され、シークレットがボールトの外に出ることもありません。

初めて訪れた人が目にする、3 つの要素を順に紹介します。

クイックツアー:ランディングページ、クラウドダッシュボード、監査証跡

  1. ランディングページ — ダークモード、上部に表示されるライブターミナルアニメーション、4 つの製品カード(Gate、Vault、Watch、Proxy)、セルフホストとクラウドの比較、そしてデザインパートナー枠への申し込み案内があります。1 ページで、初めて訪れた人に必要な情報がすべてわかります。

  2. クラウドダッシュボード — サインイン後に表示されます。左側のサイドバーから、アカウント、クォータ、セッション、監査、Webhook、承認、コンプライアンス、設定の各ページに移動できます。アカウント画面には、テナント、プラン、リアルタイムの件数、プレフィックス別の API キーが表示されます(キーは発行後に全体が再表示されることはなく、失効させる際にデータベースのシェルを開く必要もありません)。

  3. 監査証跡 — これが最大の目玉です。セッション、エージェント、ツールで絞り込めます。任意の行をクリックすると、MCP 呼び出しの詳細をすべて確認できます。呼び出されたツール、アクセスした上流 API、所要時間、送信された引数、返された内容がわかります。この機能によって製品の価値がひと目でわかります。すべてのエージェントが、いつ、何をしたのかを正確に確認できます。

重要な部分にラベルを付けたダッシュボードはこちらです。

注釈付きクラウドダッシュボード:サイドバー、統計カード、セッションテーブル、監査テーブル

左側のサイドバーから、どこへでも移動できます。番号付きのマーカーは、実際に使う部分を示しています。テナントとプラン、リアルタイムの件数、プレフィックス別の API キーです。失効ボタンもすぐそばにあるので、エージェントのアクセスを終了するためにデータベースのシェルを開く必要はありません。

実際に試してみる

これらはすべてパッケージに含まれており、haldir serve で提供されるため、アカウントもデプロイも不要で、お使いのマシンで動作します。

→ 改ざんデモ(/demo/tamper)— 上の GIF にあるデモです。実際のログ行を書き換えて、包含証明が Merkle ルートと一致しなくなる様子をご覧ください。シミュレーションではありません。API に同梱されているものと同じ Merkle コードを使っています。

→ プレイグラウンド(/demo)— 4 つのステップで通常の流れを体験できます(キーを発行し、スコープを限定したセッションを開始し、権限を確認し、監査証跡に書き込む)。その後、3 つの方法で動作を破ろうとします。上限を超えて支出する、処理中にセッションを失効させる、失効後に操作する、という内容です。ステップ 03 で付与されていないスコープを選び、拒否と承認の両方を確認してみてください。

→ ギャラリー(/gallery)— このページのすべてのスクリーンショットをまとめて見られます。読むより見るほうがよい場合にどうぞ。

インストール不要ですぐに実行できるものをお探しですか? Python もリポジトリのクローンも不要な、単一ファイルのデモバイナリと、パッケージに同梱された 3 つのプローブ用フィクスチャがあります。実行方法、表示される内容、各プローブが検出するものは、DEMO.md に記載されています。

API のその他の情報

完全なリファレンスは、実行中のインスタンスの /docs および /openapi.json にあります。以下では、Python のクイックスタート、パフォーマンスの数値、コンプライアンス対応表を紹介します。

haldir.xyz ではホステッド版を利用できます。無料プランがあり、登録も不要です。現在利用できる方法は haldir serve です。クラウドを使わない場合にも、こちらをご利用ください。


実行方法は2通り

どちらの方法でも、同じ製品を利用できます。

セルフホストクラウド(haldir.xyz)
価格永久無料無料プラン+有料プラン
ご自身で運用するものAPI+Postgresなし
おすすめの用途規制対象、エアギャップ環境、「データを自分で管理する必要がある」「とにかく動かしたい」

クラウドプランは無料で利用を開始でき、サインアップも不要です。現在、デザインパートナーを5社募集しています。30日間、すべての機能を利用でき、創業者に直接連絡できます:[email protected]。

5分でセルフホスト
git clone https://github.com/ExposureGuard/haldir.git
cd haldir
cp .env.example .env
python3 -c 'import base64, os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())'
# paste the output into .env as HALDIR_ENCRYPTION_KEY, then:
docker compose up -d
curl http://localhost:8000/healthz

セルフホストの詳細なガイド:SELF_HOSTING.md

クラウド(セットアップ不要)
pip install haldir

以上です。https://haldir.xyz を指定するだけで、無料プランならサインアップも不要です。


CLI

一度インストールすれば、ターミナルからプラットフォーム全体を操作できます。

$ haldir overview

  Haldir tenant overview
  acct_xyz123  ·  tier free  ·  2026-09-30T18:42:11+00:00

  Status     ● ok
  API calls    4,217 / 10,000  ████████░░░░░░░░░░░░   42.2%
  Spend      $ 47.30 this month
  Sessions         3 active  ·  1/1 agents
  Vault            8 secrets  ·  62 accesses this month
  Audit        1,847 entries  ·  0 flagged (7d)  ·  chain ✓
  Webhooks         2 registered  ·  541 deliveries (24h)  ·  99.82% success
  Approvals        1 pending
pip install haldir
haldir login                           # one-time; stashes API key
haldir overview --watch                # top-style live dashboard
haldir status                          # green/yellow/red component pills
haldir ready                           # exits 0/1, perfect for CI
haldir audit trail --agent my-bot      # the last N entries
haldir audit export --format=jsonl --out audit-2026-04.jsonl
haldir audit verify                    # hash chain integrity check
haldir webhooks deliveries             # last 20 retry attempts
haldir migrate up                      # apply pending schema migrations

haldir --help で全コマンドを確認できます。詳細なリファレンスは CLI.md をご覧ください。各コマンドの機能、使用できるフラグ、--json に対応しているコマンド(すべてのコマンドが対応しているわけではありません。対応状況はリファレンスに記載されています)を説明しています。


Haldirを選ぶ理由

AI エージェントは、監視されることなく API を呼び出し、費用を使い、認証情報にアクセスしています。Haldir は、そこに欠けているレイヤーを提供します。

Haldirがない場合Haldirがある場合
エージェントが無制限にアクセスできる権限を設定したスコープ付きセッション
シークレットが平文の環境変数に保存されるAES-256-GCM で暗号化された Vault
支出上限がないセッションごとの予算を適用
実行内容の記録がない改ざんを検知できる不変の監査ログ
人による監視がないWebhook を使った承認ワークフロー
エージェントがツールと直接通信するプロキシが通信を傍受して制御

右側にある機能はすべて、ツールの前段に置かれる単一のプロセスで実現します。エージェントは既存のツール呼び出しをそのまま使用し、まず Haldir が応答します。

Haldirのアーキテクチャ:エージェント → プロキシ →(Gate/Vault/Watch/Policy)→ 上流API


クイックスタート(Python)

from haldir import HaldirClient

# The key and URL that `haldir serve` printed above.
h = HaldirClient(api_key="hld_xxx", base_url="http://127.0.0.1:8000")

# Create a governed agent session
session = h.create_session("my-agent", scopes=["read", "spend:50"])

# Store secrets agents never see directly
h.store_secret("stripe_key", "sk_live_xxx")

# Retrieve with scope enforcement
key = h.get_secret("stripe_key", session_id=session["session_id"])

# Authorize payments against budget
h.authorize_payment(session["session_id"], 29.99)

# Every action is logged
h.log_action(session["session_id"], tool="stripe", action="charge", cost_usd=29.99)

# Revoke when done
h.revoke_session(session["session_id"])

内部では、キーの発行、セッションの開始、権限の確認、監査チェーンへの書き込みという4つの HTTP 呼び出しを行います。

Haldirのクイックスタート:インストール、スコープ付きセッションの作成、権限の確認、ハッシュチェーン型監査ログへのアクションの記録


製品

Gate — エージェントの ID と認証

権限、支出上限、TTL を設定したスコープ付きセッションです。セッションがなければアクセスできません。

curl -X POST https://haldir.xyz/v1/sessions \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": "my-bot", "scopes": ["read", "browse", "spend:50"], "ttl": 3600}'
Vault — 暗号化されたシークレットと支払い

AES で暗号化されたストレージです。エージェントからのアクセス要求に対し、Vault がセッションのスコープを確認します。セッションごとの予算に基づいて支払いを承認します。

curl -X POST https://haldir.xyz/v1/secrets \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "api_key", "value": "sk_live_xxx", "scope_required": "read"}'
Watch — 監査ログとコンプライアンス

あらゆるアクションの不変ログです。異常を検知し、コストを追跡し、コンプライアンス用のエクスポートを作成します。

curl https://haldir.xyz/v1/audit?agent_id=my-bot \
  -H "Authorization: Bearer hld_xxx"
Proxy — 制御レイヤー

エージェントと MCP サーバーの間に配置します。すべてのツール呼び出しを傍受し、承認して記録します。許可リスト、拒否リスト、支出上限、レート制限、時間帯などのポリシー適用に対応しています。

# Register an upstream MCP server
curl -X POST https://haldir.xyz/v1/proxy/upstreams \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "myserver", "url": "https://my-mcp-server.com/mcp"}'

# Call through the proxy — governance enforced
curl -X POST https://haldir.xyz/v1/proxy/call \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"tool": "scan_domain", "arguments": {"domain": "example.com"}, "session_id": "ses_xxx"}'
Approvals — 人間が介在する承認

人による確認のためにエージェントの実行を一時停止します。Webhook 通知に対応し、ダッシュボードまたは API から承認または拒否できます。

# Require approval for spend over $100
curl -X POST https://haldir.xyz/v1/approvals/rules \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"type": "spend_over", "threshold": 100}'

MCP サーバー

Haldir は、Claude、Cursor、Windsurf、および MCP 互換の AI で利用できる、19 個のツールを備えた MCP サーバーです。

{
  "mcpServers": {
    "haldir": {
      "command": "haldir-mcp",
      "env": {
        "HALDIR_API_KEY": "hld_xxx"
      }
    }
  }
}

MCP ツール(上記のプロセスで 19 個すべてが登録されます):

ガバナンス改ざん検知承認とコンプライアンス
haldir_create_sessionhaldir_verify_audit_chainhaldir_request_approval
haldir_get_sessionhaldir_get_tree_headhaldir_get_approval_status
haldir_check_permissionhaldir_get_inclusion_proofhaldir_compliance_score
haldir_revoke_sessionhaldir_get_consistency_proofhaldir_build_evidence_pack
haldir_store_secrethaldir_log_audit_actionhaldir_authorize_payment
haldir_get_secrethaldir_query_audit_trail
haldir_list_secretshaldir_get_spend

ツールカタログは 1 つです。stdio サーバー(haldir-mcp、または haldir mcp serve)は 19 個すべてを登録し、ホスト型の POST /mcp エンドポイントは、同じ 名前でそのうち 10 個のサブセットを実装しています。どちらの接続方式でも名前の意味は同じなので、一方を対象に書かれたクライアントは、もう一方でも動作します。

MCP HTTP エンドポイント: POST https://haldir.xyz/mcp


パフォーマンス

Haldir は、ボトルネックにならずに、すべてのエージェントのツール呼び出しのホットパスに組み込めるほど高速です。

単一マシンでの HTTP スループット(gunicorn 4 ワーカー、同時クライアント数 32、チューニング済み SQLite バックエンド。すべてのリクエストが認証、検証、冪等性、メトリクス、構造化ログを含むミドルウェアスタック全体を通過):

エンドポイントRPSp50p95p99
GET /healthz1,63819.1 ms32.5 ms41.6 ms
GET /v1/status1,38222.2 ms30.8 ms45.4 ms
GET /v1/sessions/:id90329.2 ms95.5 ms172.1 ms
POST /v1/sessions (作成)1,14227.7 ms35.2 ms39.9 ms
POST /v1/audit (ハッシュチェーン)1,09228.7 ms37.6 ms52.6 ms

ハードウェア:第 12 世代 Intel Core i3-1215U(8 コア、8 GB RAM)。SQLite は WAL + synchronous=NORMAL + 256 MiB mmap + メモリ内一時ストアで構成されています。チューニングなしの場合と比べ、セッション検索の p99 は 52 % 低下しました。Postgres のデプロイでは(HALDIR_PG_POOL_MIN/MAX でプールを設定可能)、p99 はさらに平坦化されます。DATABASE_URL=postgresql://... で有効にできます。

プリミティブのコスト(純粋な Python、I/O なし):

プリミティブp50備考
Vault.store_secret(AES-256-GCM 暗号化 + AAD)< 10 µsメモリ内、DB 書き込みなし
Vault.get_secret(AES-256-GCM 復号 + AAD)< 10 µsメモリ内
AuditEntry.compute_hash(ペイロードに対する SHA-256)< 10 µs
REST 経由の Gate.check_permission~50-120 msネットワーク + DB ラウンドトリップ、Cloudflare 経由
REST 経由の Watch.log_action~50-150 msチェーン検索 + DB 書き込みを含む
ガバナンス対象ツールの完全なエンベロープ(チェック + ログ)~100-250 ms

エージェントが LLM の応答を待つ時間は通常 500~3000 ms、上流 API 呼び出しを待つ時間は 100~1000 ms なので、Haldir のオーバーヘッドは誤差の範囲内です。ローカルで再現するには:

# Concurrent HTTP throughput (launches a local gunicorn, ~60s total)
python bench/bench_http.py --duration 10 --concurrency 32 --workers 4

# Primitive cost only (no API key needed)
python bench/bench_primitives.py --local

# End-to-end against the hosted service
export HALDIR_API_KEY=hld_...
python bench/bench_primitives.py

コンプライアンス

1 つのエンドポイントで、SOC2 の信頼サービス基準に基づく 8 つのセクションを網羅した、監査人向けの管理策証明パックを生成します。

haldir compliance evidence --since 2026-01-01 --out evidence-q1-2026.md
#セクションSOC2
1ID(テナント、サブスクリプション、期間)—
2アクセス制御(API キー+キーごとのスコープ)CC6.1
3暗号化(AES-256-GCM、AAD バインディング)CC6.7
4監査証跡(エントリー数、ハッシュチェーン)CC7.2
5支出ガバナンス(セッションごとの上限)CC5.2
6人による承認(リクエスト/判断のライフサイクル)CC8.1
7アウトバウンドアラート(Webhook 配信率)CC7.3
8ドキュメント署名(SHA-256 自己ハッシュ)—

このパックは自ら署名します。セクション 1〜7 の正規化された JSON の SHA-256 を使用します。アーカイブされたパックを受け取った監査人は、/v1/compliance/evidence/manifest を再度呼び出し、ダイジェストが一致することを確認できます。これは、発行後にドキュメントが変更されていないことの証明です。

証拠保管庫へのアップロード用 JSON と、「監査人に見せる」場面で使う Markdown を、どちらも同じ /v1/compliance/evidence エンドポイントから取得できます。


保持と削除

監査データは、デフォルトでは永久に保持されます。ポリシー上それ以外が求められる場合は、保持期間を設定してその期間に合わせて削除できます。削除の証明も維持されます。

haldir retention set 90      # keep 90 days (0 = forever)
haldir retention show        # what a prune would remove, before running it
haldir retention prune --yes

監査ログはハッシュチェーンになっているため、古いエントリーを単純に削除すると、残ったチェーンが存在しないハッシュを指すことになり、正常に機能していた監査証跡が検証に失敗するようになります。そこで、何も削除する前にログの Signed Tree Head を取得し、最後に削除したエントリーのハッシュを境界をまたぐリンクとして記録します。

その結果、削除が秘密裏に行われることはありません。haldir audit verify は引き続き成功し、削除された内容と、それを確定する署名付き Merkle ルートを報告します。そのため、監査人には「この時点より前のエントリーは保持ポリシーに従って削除されました。削除時に生成されたルートはこちらです」と正直に説明できます。このコミットメントを生成できない場合、何も削除されません。


API リファレンス

詳細なドキュメントは haldir.xyz/docs をご覧ください。OpenAPI 3.1 の完全な仕様は haldir.xyz/openapi.json にあります。

主なエンドポイント(全機能については仕様をご覧ください):

エンドポイントメソッド説明
/v1/keysPOSTAPI キーを作成する
/v1/sessionsPOSTエージェントセッションを作成する
/v1/sessions/:idGET/DELセッションを取得/取り消す
/v1/sessions/:id/checkPOST権限を確認する
/v1/secretsPOST/GET/DELシークレットを保存/一覧表示/削除する
/v1/payments/authorizePOST支払いを承認する
/v1/auditPOST/GETアクションを記録/照会する
/v1/audit/spendGET支出の概要
/v1/audit/retentionGET/PUT保持期間を読み取る/設定する
/v1/audit/retention/prunePOST保持期間に合わせて削除する(confirm が必要)
/v1/audit/retention/checkpointsGET削除履歴と署名済みコミットメント
/v1/approvals/rulesPOST承認ルールを追加する
/v1/approvals/requestPOST承認をリクエストする
/v1/approvals/:id/approvePOST承認する
/v1/approvals/:id/denyPOST拒否する
/v1/webhooksPOST/GETWebhook を登録/一覧表示する
/v1/proxy/upstreamsPOSTアップストリーム MCP サーバーを登録する
/v1/proxy/callPOSTプロキシ経由で呼び出す
/v1/usageGET使用状況の統計
/v1/metricsGETプラットフォームのメトリクス

エージェントの検出

Haldir は主要なすべてのプロトコルから検出できます。

URLプロトコル
haldir.xyz/openapi.jsonOpenAPI 3.1
haldir.xyz/llms.txtLLM 対応ドキュメント
haldir.xyz/.well-known/ai-plugin.jsonChatGPT プラグイン
haldir.xyz/.well-known/mcp/server-card.jsonMCP 検出
haldir.xyz/mcpMCP JSON-RPC
smithery.ai/server/haldir/haldirSmithery レジストリ
pypi.org/project/haldirPyPI

デザインパートナーを募集しています

公開中: haldir.xyz · API ドキュメント · OpenAPI 仕様 · Smithery

デザインパートナーを5社募集しています。30日間無料で、すべての機能を利用でき、創業者に直接連絡できます。AI エージェントを本番環境にデプロイしている場合は、[email protected] までメールでご連絡ください。


ライセンス

MIT


リンク

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。