
Tracekit MCP gateway
io.github.Cygnux-Labs由 GitHub 帳號 Cygnux-Labs 發布v1.3.0更新於 Nov 1, 2026
MCP gateway you deploy: a Tracekit signer decides and signs each call; agents send each run's token.
概覽
自架設的 Tracekit 閘道,在代理的每次工具呼叫執行前檢查並簽章,每次執行產出可離線驗證的證據檔。
- 可以做什麼
- 讓代理的工具呼叫經過閘道,由 Tracekit 簽章器在執行前逐筆裁決
- 允許、拒絕或保留呼叫等待人工核准,原則包涵蓋 shell、檔案、SQL、HTTP、雲端命令列、瀏覽器、郵件、訊息、付款、密鑰與 MCP
- 把每次呼叫、裁決與結果簽入單次執行的雜湊鏈,並匯出成一個 .tkb 證據檔
- 以固定的公鑰離線驗證執行紀錄,並在檢視器中查看執行、被阻擋或保留的呼叫、核准與缺口
- 讓工具使用代理本身拿不到的憑證執行,並標記沒有對應呼叫可解釋的流量
- 適用情境
- 當代理操作真實系統(例如 shell、檔案、資料庫、郵件、付款或雲端),且部分呼叫必須在執行前被阻擋或保留給人工確認時適用。也適合需要讓團隊以外的人(客戶、稽核人員、事故檢視者)信任紀錄的情境。若只是除錯原型,一般追蹤工具更合適。
- 執行需求
- 需要自行部署的遠端 streamable HTTP 端點,位於你自己的閘道主機。Authorization 標頭中的 bearer 權杖(或客戶端憑證),以及由代理框架在每次執行時設定的 X-Tracekit-Run 值(register_run 回傳的 run_id.run_token)。還需要一個執行中的 Tracekit 簽章器,最好放在代理無法觸及的位置。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Tracekit MCP gateway,將其新增到工作區。
- 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
[Tracekit: the tamper-evident flight recorder for AI agents]
Agents can edit logs. They can't hide the edit.
Tracekit checks every tool call your agent makes before it runs, signs each call and decision into a hash chain,
and gives you one .tkb file per run that anyone can verify offline.
[PyPI] [Works with 25 agents and frameworks] [CI] [MIT licence]
Built like Certificate Transparency: signed records in an append-only log that independent witnesses cosign
Open file format · verifiers in Python and TypeScript · MIT · runs on your own machines
Try it · Add it to your agent · What it proves · What's in it · Proof · How it works · Pilot it · Contribute · Docs
When an agent does something it shouldn't, you ask three things: what did it do, was it allowed, and can you trust the record? The agent's own log can't answer the third, because the agent can edit it. Here is one run, recorded both ways:
[What happened: a support ticket hides an instruction, the agent deletes 43 of 128 orders, then edits its log and Tracekit's record so the delete reads as a lookup. The agent's own log shows two lookups of order 1042; grep finds no DELETE, and the database holds 85 orders: it looks clean. Tracekit, the same run: the 13:51:59 run_sql call is flagged ACME-F001 deleting rows, and when the run closed verification failed with seq 7: hash does not match the event. Caught at record 7.]The same run, recorded: the database, the signer, the viewer and both edits are real; the model is scripted. Watch it with sound (1:47)
In this demo the signer ran as the agent's own user (dev mode), so an agent that knew how could have read the key and re-signed the log. Run the signer where the agent can't reach it, with a witness, and it can't.
Try it
No API key, and nothing to install with uv. From an empty cache on a Mac it took 5
seconds (10 with pip install tracekit-ai in a fresh venv). The package is tracekit-ai: tracekit on PyPI is an
unrelated project. A scripted agent makes three calls, and you should see:
The delete was denied before it ran, the held call ran after an approval, and the run verified. Then the demo rewrote the denial as allowed in a copy, and verification failed at the record it changed.
Add it to your agent
Three lines:
tracekit.instrument() starts a dev signer (or reuses the running one) and gates and records every tool and model call
of the frameworks it finds. tracekit last exports your latest run, verifies it and says where it is.
tracekit view --dev shows every run. On a clean machine the LangGraph example (a mock model, no API key) installed,
ran and verified in 27 seconds: examples/v2/clean-machine.sh langchain.
Stable: Claude Code, the OpenAI Agents SDK, LangChain / LangGraph, the Claude Agent SDK and MCP. Experimental: Codex CLI, Cursor, Gemini CLI, CrewAI, Browser Use, Pydantic AI, Google ADK, Haystack, LlamaIndex, Microsoft Agent Framework, Strands Agents, the Vercel AI SDK, NVIDIA OpenShell, E2B, microsandbox, agentgateway, Wassette, LiteLLM's MCP gateway, Docker's MCP Gateway and the TypeScript SDK. In NVIDIA OpenShell sandboxes, Tracekit decides and signs each HTTP request OpenShell lets out, and signs OpenShell's own blocks, process events and policy changes into the same run. Setup: coding agents · OpenAI Agents SDK · Claude Agent SDK · LangChain / LangGraph · MCP · Wassette · CrewAI · Browser Use · Pydantic AI · Google ADK · Haystack · LlamaIndex · Microsoft Agent Framework · Strands Agents · NVIDIA OpenShell · LiteLLM · TypeScript · Vercel AI SDK · agentgateway · microsandbox · E2B · Docker MCP Gateway · OpenTelemetry · any other agent
Other ways in: coding agents, without uv, the why demo, the sample bundles, TypeScript
Coding agents: tracekit init --dev --v2 wires Claude Code's hooks to a dev signer; add --agent codex, cursor,
gemini or opencode for the others (experimental). With Claude Code's sandbox on, Tracekit holds each unsandboxed
retry for a person
(Claude Code's sandbox);
with Codex's, see what Tracekit sees and the settings to use
(Codex's sandbox);
with Gemini CLI's tool sandbox, Tracekit holds each sandbox expansion for a person
(Gemini CLI's sandbox).
Running sandbox-runtime's proxy on its own, Tracekit decides each request it forwards (experimental,
sandbox-runtime).
Sandboxed with agentsh? tracekit follow signs each decision agentsh logs, as it writes it (experimental,
agentsh).
Without uv: pip install tracekit-ai, then tracekit demo --server. --why
(experimental) shows a held
email whose cause is found by replay and cited by its signed record:
From a checkout, the shipped sample bundles (v1) check with the verifier alone (pip install --no-deps tracekit-ai is
enough), and python examples/v2/langchain/agent.py --scripted runs a LangGraph agent with a mock model:
TypeScript needs Node 18 or newer: npm install @cygnuxlabs/tracekit, and npx @cygnuxlabs/tracekit up starts a dev
signer without Python on Apple Silicon Macs, Linux and Windows (TypeScript SDK). Python 3.9 to
3.13; the framework integrations need 3.10 or newer.
What it proves
Three guarantees. They're related, but one doesn't give you the others, and each needs something different.
Limits
- Dev mode protects nothing against an agent that runs as you. Dev runs say
isolation: same-user(FAQ). - A verified run proves the record is intact: not intent, not that a reported tool result is true, and not that
every action was captured (FAQ).
tracekit analyze --v2compares what was asked, what the model said and what ran, but what the model said is its own account, and findings are an opinion beside the integrity, never part of it (findings). - Actions outside the capture path leave no record, such as a subprocess a hook never sees and no kernel sensor import covers, or code that skips the adapter (adapters).
- Policy rules match text and tool names. A determined agent can reword a command; the protection is the signer's isolation (policy reference).
- Commitments hide content, not timing, sizes or counts (privacy).
What each deployment guarantees, from dev mode to a signer the agent can't reach: guarantees. Every limit, with what to do about it: limits. How it maps to the EU AI Act, ISO/IEC 42001, the NIST AI RMF and OWASP: compliance.
What's in it
One signer. The core is stable and is hardened first. The rest ships in the same package as experimental: it works and is tested, but may change between releases (what's stable).
Proof
Our own experiments: small, synthetic and written by us. Nothing rounded up. The misses stay in.
[Tamper detection, 60 trials per attack. The signed log alone catches editing, deleting, swapping or inserting a record, re-chaining without the key and a torn last line in 60 of 60 trials, and misses truncating the tail and re-signing with the key (0 of 60). With a witness, all eight are caught in 60 of 60.]The two E1 misses are the design: a log can't see its own tail cut off, and whoever holds the key can re-sign it. Only
a copy of the head held elsewhere, a witness, catches those, so an unwitnessed run verifies as dev. The test sets
were written by us, and no one outside has reviewed the threat models yet. Every experiment, and what isn't
measured: evaluation ·
technical report.
How it works
[1. Your agent, through its SDK or hook, asks the signer to decide each call; it holds a run token, never a key. 2. The signer, out of the agent's reach, allows, denies or asks a person, and signs every call, decision and result into one hash chain per run. 3. Witnesses cosign each checkpoint. 4. Each run exports as run.tkb, which tracekit verify checks offline: VERIFIED, or FAILED at the record that changed.]- The agent never holds a signing key and never assigns sequence numbers.
- Each record is signed and carries the hash of the one before it, so a changed byte fails verification at that record.
- Nothing the agent reports about itself is trusted: not its isolation, its fail mode, gaps, or who approved a call.
- Who can rewrite the log decides what a run is worth, so put the signer where the agent can't reach it. The agent's
code is the same in every mode;
TRACEKIT_SIGNERpoints it at the signer.
The operator who runs the signer could still rewrite its log with its own key; an independent witness and a monitor make that visible. Each mode end to end: deployment. The full model: architecture, laptop and server threat models.
Is it for you?
For debugging a prototype, a tracer such as OpenTelemetry, Langfuse or LangSmith is the right tool. Tracekit doesn't replace one; it's the record you can hand to someone who doesn't trust the agent. How it compares with tracers, guardrail libraries and other tamper-evident logs, and when it's the wrong choice: comparisons.
Pilot it with us
Running an agent that acts on real systems, with someone who has to sign off on it: a customer, an auditor, an insurer? We'll set up Tracekit with you for two weeks, free: one agent, on your machines. At the end you have a verified evidence file for every run and a written review of what the agent did that you didn't expect. Email [email protected] or open a pilot request.
Commands
Nothing to install for whoever checks a run: the
browser verifier, one
page, takes the .tkb and its trust file, sends nothing anywhere, and says VERIFIED, FAILED or UNVERIFIABLE with what
it means and what to do next.
The evidence format
- Specified. Evidence format v2 aims to be precise enough to write an independent verifier, with normative test vectors.
- Built on standards. Records are signed with Ed25519 over RFC 8785 canonical JSON. Each log is an RFC 6962 Merkle tree, the structure Certificate Transparency uses. Checkpoints are C2SP signed notes, and witnesses cosign them per C2SP tlog-cosignature.
- Self-contained. A
.tkbfile is a zip of records, inclusion proofs, checkpoints and the policy snapshots that decided the calls. It holds no verification code. - Old files keep verifying. Formats only grow, each format's verifier is frozen, and an older verifier reports a
newer file
UNVERIFIABLE (needs tracekit >= x), neverFAILED. Verify such a file withuvx --from "tracekit-ai>=x" tracekit verify run.tkb --trust trust.json,npx -y @cygnuxlabs/tracekit@latest verify run.tkb --trust trust.json(Node 20.12 or newer), or the browser verifier, which checks it in your browser and sends nothing. From 1.4.0, an addition an older verifier can leave unread is non-critical: the bundle verifies, and the report names what that verifier didn't interpret.
Verify a v1 bundle in GitHub Actions with uses: Cygnux-Labs/Tracekit@main (bundle: and key: or witness:).
require-anchor defaults to true, so an unanchored bundle fails the step; set require-anchor: "false" to only
report it.
Contribute
Each of these is useful on its own, and none needs to know the whole codebase:
- Write a verifier in another language. The evidence format is specified and has test vectors. A Go or Rust verifier written from the spec alone is the best test that the spec is complete.
- Find a harmful call the packs let through. Add it to
tests/data/policy/deny/with a rule that catches it; E17 runs every case. - Run Tracekit on your own agent and report what broke. Doing that with two open-source agents found real bugs (case study).
- Add a framework. An integration is done when it passes the adapter contract.
- Try to break it. Find a tamper or a bypass that E1 and E8 miss, and report it privately as SECURITY.md describes. Everyone who finds one is named in the hall of fame unless they ask us not to.
To start: make install, then make check
(contributing). Smaller tasks are labelled
good first issue. Everyone taking part follows
the code of conduct.
Docs
License
MIT, Copyright Cygnux Labs. This is 1.5.2, and 1.x is the supported line. Report vulnerabilities privately as SECURITY.md describes.
Cite
The paper: Tracekit-v2-paper.pdf (arXiv:2609.35659).
Agents can edit logs. They can't hide the edit. A star costs nothing and helps other teams find Tracekit.
Website · Evaluation · Limits · Contributing · Issues來源:README.md,提交 93857b0
工具
0版本歷史
1- v1.3.0最新Oct 18, 2026
評分
已滿足適用檢查項的 60%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分