
Deedglass
io.github.deedglass由 GitHub 帳號 deedglass 發布v0.15.0更新於 Oct 29, 2026
Deedglass lets rules decide each AI agent tool call, checks what really changed and seals a record.
概覽
Deedglass 介於 AI 代理與其改動的系統之間:由規則決定每次工具呼叫,核查實際改了什麼,並把結果封存為可離線驗證的簽章紀錄。
- 可以做什麼
- 以允許、拒絕或需核准的規則管控代理工具呼叫,並以代理拿不到的憑證執行
- 比對目標系統的實際變更與代理自述,依 Claimed、Checked、Proven 三級核查
- 把每次結果封存為可離線驗證的簽章紀錄,並為被改動的資料列規劃復原
- 包裝或代理其他 MCP 伺服器,讓其呼叫經過同一道關卡
- 以唯讀方式掃描本機 MCP 設定與資料庫目錄,為代理可能造成的變更評分
- 透過讀取 Postgres 變更日誌觀察工作階段,並輸出復原用的 SQL
- 適用情境
- 適合代理會寫入 Postgres、FHIR 健康紀錄或其他系統,且需要真實變更證據而非只憑代理日誌的團隊。也適合希望寫入先經人工核准的安全團隊,以及想掃描或加固現有代理設定的開發者。
- 執行需求
- 以 npm 套件形式透過 stdio 在本機執行,需要 Node 18 或更新版本,支援 macOS、Linux 與 Windows。需要 Deedglass 伺服器與 deedglass init 產生的代理金鑰,透過 DEEDGLASS_API_KEY 提供,並設定 DEEDGLASS_SERVER。完整快速上手需 Docker 與約 2 GiB 可用磁碟,會啟動兩個 Postgres 容器;Proven 級核查要求 Postgres 開啟邏輯解碼。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Deedglass,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Deedglass (Deed Glass)
Check what your AI agents actually changed.
An agent said it updated 1 row. Postgres changed 301.
Safety for AI agents that work on databases and health records. Rules decide each AI agent tool call;
Deedglass checks what really changed and seals a record. Open source, self-hosted, every feature free.
[CI] [Release] [npm] [Licence: Apache-2.0, with ee/ under FSL-1.1-ALv2] [Go reference] [Attack suite]
Start in one command
An app opens in your browser. It runs on your own computer, signed in, with no account, no sign-up and no Docker or database to set up, and nothing is sent to us. Choose who will use it (a clinic, hospital IT, or people building with AI), then connect Claude Desktop, Cursor, VS Code, a record system or a database. You need Node 18 or newer. Read Start here for a short tour, or try it without installing anything at deedglass.com/play.
For developers, three commands:
Without Docker, start plays the same scene inside the binary, every line labelled live or
replay, in under 30 s. More: Quickstart ·
Docs · Policy Generator · Healthcare ·
Benchmarks · Security · deedglass.com
Found it useful? A star helps other people find Deedglass. To hear about new releases, use Watch › Custom › Releases.
What it does
Deedglass sits between AI agents and the systems they change. Rules decide each tool call, a check compares what the system really changed with what the agent reported (Claimed, Checked or Proven; Matches, Doesn't match or Can't check), and each result is sealed as a signed record anyone can check offline. It can undo the rows an action changed.
A real run of make demo-hero (commit 97a524c, 2026-10-14), each line shown at the time it printed.
Source: docs/assets/demo-hero.cast.json, recorded by scripts/demo/capture.mjs and drawn by scripts/demo/cast2svg.mjs (make demo-svg).
Install
The install script downloads the release archive for your platform, checks its sha256 against the
release's checksums.txt (and the signature, when cosign is installed), and copies deedglass into
~/.local/bin; read it first: scripts/install.sh. It downloads from a copy
of the release on deedglass.com and falls back to GitHub: about 7 s on one network in India, where the
GitHub-only install took 81-119 s. A public container image is coming; until it's
published, build the image locally as above. Checksums, signatures and SBOMs:
docs/INSTALL.md.
Who it's for
- Developers with agents on databases. Claude Code, Cursor or your own agent writes to Postgres.
Your rules decide each call first, Postgres's change log shows what really committed, and the
rows one action changed can be undone after a person countersigns. MySQL and other databases can
be checked from a Debezium change feed (
docs/WITNESS_DEBEZIUM.md). - Health-tech teams and hospitals on FHIR. The FHIR connector (beta) puts a FHIR R4 server
behind Deedglass with SMART Backend Services, reads each write back at the version the server
reported, and checks Proven on HAPI FHIR JPA 8.x and Medplum 5.x running on Postgres. See
deedglass.com/healthcare and the
FHIR benchmark.
To see it on synthetic data first, with no Docker and no server, run
npx deedglass health pilot(the 15-minute hospital pilot). - Security teams. Lockdown makes every agent write wait for a person, needs two people for
high-risk writes and for turning lockdown off, and keeps each agent to one connector
(
docs/LOCKDOWN.md). Records are signed and anyone can check them offline withdeedglass verify.
Project status
- Pre-1.0. Every release is in
CHANGELOG.mdand on the releases page. The deed format is a versioned public spec (spec/), so old records keep verifying. - One maintainer. Deedglass is built by Arjun Prabhakaran in India
(
GOVERNANCE.md). Replies are best effort (SUPPORT.md). - Free and self-hosted. Every feature is free while we grow, including
ee/, and it runs on your machines with your own Postgres. Nothing checks a licence and nothing is sent to deedglass.com (Security). - Not yet: no SOC 2 report, no outside penetration test and no SSO. Known limits are in
docs/LIMITATIONS.mdandKNOWN_ISSUES.md.
How it works
Every tool call passes through Deedglass with the agent's key. Your rules (policies) decide allow,
deny or require_approval; Deedglass runs the call with credentials the agent never holds; the
check compares what happened with what was asked; and the outcome is sealed as a record in the org's
chain.
How sure each check is
Each record claims one level and one result: Matches, Doesn't match or Can't check. When
Deedglass can't tell whether a tool ran, the result is Can't check, never Matches. The API keeps
the short names (L0/L1/L2, VERIFIED/MISMATCH/UNVERIFIABLE); the
glossary maps them.
The 301-row scene
What an agent reports is not always what the system stored, and a log the agent writes itself can't
show the difference. An agent was asked to mark order 42 as shipped. It ran one UPDATE and its tool reported 1 row. A
legacy trigger shipped 300 more orders in the same transaction. This is the real output of the
Quickstart's last step on 2026-10-14 (shortened where you see …):
The agent's log says 1 row. Deedglass read Postgres's own change log for that transaction, found 301, sealed the difference as a record, and planned an undo from those rows that runs only after a person countersigns.
Quickstart
Docker running with about 2 GiB of free disk, Node 18 or newer, and macOS or Linux, then (from the
tested Quickstart). On Windows, npx deedglass runs the
native Windows binary, no WSL needed; deedglass init uses Docker on macOS and Linux, so on Windows
start with npx deedglass app, which needs no Docker:
deedglass init starts two Postgres 18.6 containers in Docker (Deedglass's own database and a demo
database), runs deedglass serve on 127.0.0.1:8080, creates an org, an agent and the
postgres-check policy (reads and writes run, every write is checked at Proven, DROP and
TRUNCATE never run; use postgres-safe in production, where writes wait for a person), and ends
with a blocked DROP TABLE and an UPDATE checked at Proven. deedglass doctor runs seventeen
read-only checks, each with its fix. deedglass init --trigger turns on the demo database's legacy
trigger, sends the same one-row UPDATE, and ends on the 301-row mismatch and the undo preview shown
above. Its last line is the undo run command; the undo waits for a person, and undo run prints
the approve link.
Port 8080 or 55432 taken? npx -y deedglass init --yes --listen 127.0.0.1:8090 --pg-port 55440
(--listen is where deedglass serve listens; --pg-port is Deedglass's own Postgres, and the
demo database takes the port 10 above it). Every later command run in that directory finds the
ports in .deedglass/stack.json. npx -y deedglass init --purge removes the containers, the
volumes and the files in .deedglass/ when you're done.
Protect every agent in one command: npx deedglass protect adds the shell guard to Claude Code,
Cursor, Codex CLI, Gemini CLI and GitHub Copilot CLI, so a command such as railway volume delete,
supabase db reset --linked or terraform destroy waits for your yes (Codex and Gemini CLI deny it
instead). It backs up each file first and --undo puts them back: a second check, not a sandbox
(docs/protect.md).
Then put your own Postgres behind it (Supabase, Neon or any Postgres 16 to 18): npx -y deedglass connect "$DATABASE_URL" runs read-only checks and prints a plan; --apply sets it up
(guide).
Four ways in
When a scan finds a trigger or a cascade on a table your agent can write, it says so and points to the 301 scene. Observe mode is below.
Observe mode: nothing to rewire
Turn it on with witness.observe.enabled: true in the connector's config. Observe mode reads only
Postgres's change log, through the role and replication slot that deedglass connector postgres init
creates, so it works beside any gate you already use, or none.
It shows every row committed on the watched tables while the session was open and seals the session
as a record. It can't tell which program wrote a row, so a session gets no Matches or Doesn't match
verdict; row images are kept 30 days; a TRUNCATE can't be undone from the record. Undo SQL is free,
and so is a one-step undo through Deedglass: every feature is free while we grow. Details: docs/OBSERVE.md.
Add it to your agent client
[Add to Cursor] Install in VS Code · LM Studio · Goose · Claude Desktop · Every client
No link holds a key. Run npx deedglass init first; each client asks Deedglass for the key it wrote.
Claude Code plugin (the MCP server, the /deedglass:scan, /deedglass:wrap and
/deedglass:watch commands, and skills for reading a scan and for giving an agent Postgres access
safely), from this repo's own marketplace:
Every format, with its source: docs/INSTALL_CLIENTS.md.
SDKs and clients
- TypeScript:
@deedglass/sdk, with adapters for the AI SDK, the OpenAI Agents SDK, LangChain and the Claude Agent SDK. - Python:
deedglass, with LangChain and Claude Agent SDK adapters. It isn't on PyPI yet; install it from this repo or from a release's wheel (docs/SDK_PYTHON.md). - Go:
github.com/deedglass/deedglass/pkg/deedglass. - MCP:
deedglass mcp wrapgoverns any stdio MCP server;deedglass mcp servegoverns remote ones for Claude Desktop, Claude Code, Cursor, VS Code and Windsurf.
Connectors
Postgres (Proven), REST, GitHub, Slack, Stripe (test mode only), Gmail drafts, Notion and remote MCP
servers. Credentials live in an encrypted vault; every outbound call goes through one egress door.
See docs/CONNECTORS.md.
Benchmarks
Each benchmark publishes what Deedglass misses next to what it catches.
Every scenario, with the misses named: corpus/BENCHMARK.md,
corpus/fhir/BENCHMARK.md and deedglass.com/benchmark.
Speed:
How they were measured, and the misses: docs/BENCHMARKS.md.
What it doesn't do
- Proven checks cover Postgres only, and need
wal_level=logicalandREPLICA IDENTITY FULLon watched tables. - A hijacked agent with a valid key and an in-policy action is allowed. Policies, budgets and approvals narrow this; they don't close it.
- Deedglass trusts the Postgres server, its superusers, the host it runs on and its seal key. It can't protect you from a compromised host.
- Records hold digests, not payloads. One set of seal keys signs every org on an instance.
- It doesn't replace a least-privilege database role. Use both: the role limits what the agent can do; Deedglass checks what it did with that.
The whole list, with workarounds: docs/LIMITATIONS.md and KNOWN_ISSUES.md.
Alternatives
You may not need Deedglass, or you may want it next to one of these. Each has a longer page, with sources and the date each was checked, at deedglass.com/compare.
Security
The attack suite runs 82 cases against a real server and real Postgres on every release candidate:
82 matched, 0 differ (attack/results/latest.json, docs/ATTACK_SUITE.md).
Another 23 library- and CLI-level cases (groups Y and T: crypto agility, the A2A proxy, the Debezium
witness, the shell guard, timestamps) run with go test ./attack on every pull request.
Report a vulnerability privately: SECURITY.md.
Every feature is free while we grow, so nothing checks a licence and nothing is sent to deedglass.com: the scan reads files on your machine and, with --postgres-dsn-env, connects only to the database you name. The deedglass licence commands, kept for a later paid option, are the only ones that call Dodo Payments or deedglass.com, and only when you run them; DEEDGLASS_NO_NETWORK=1 stops those calls. deedglass version --check and the --latest option of deedglass policy install and policy packs contact GitHub when you use them. Head timestamps are off by default; with TSAs or a transparency service listed in deedglass.yaml, deedglass deeds timestamp and each export contact only those.
How the licence path works if a later build asks for a key:
docs/LICENSING.md.
Docs and links
- Docs: docs.deedglass.com · Quickstart · how it works ·
docs/ - Agent clients: Claude Code · Cursor, VS Code and Windsurf · Claude Desktop · your own Postgres
- Frameworks: Vercel AI SDK · Claude Agent SDK · OpenAI Agents SDK · LangChain · Mastra · Pydantic AI · Google ADK · CrewAI · LlamaIndex
- Healthcare: deedglass.com/healthcare · FHIR connector · PHI mode · Medplum example · FHIR benchmark · Hospital pilot · IT review pack
- GitHub Action: Deedglass Scan on the GitHub Marketplace
- Security:
SECURITY.md· lockdown · attack suite · limitations · verifying records - Contributing:
CONTRIBUTING.md· good first issues · Discussions
Contributing
Read CONTRIBUTING.md: make dev, make ci, the tests a change needs, and DCO
sign-off (git commit -s). Questions go to Discussions (SUPPORT.md); how decisions
are made is in GOVERNANCE.md.
If Deedglass showed you something your logs didn't, a GitHub star helps other people find it.
License
The core, the SDKs and the CLI are Apache-2.0. The features in ee/ are FSL-1.1-ALv2 (free to use while we grow), and each release of them becomes Apache-2.0 two years after it ships. The release binary, the @deedglass/cli-* npm packages and the container image include ee/, so their licence is Apache-2.0 AND FSL-1.1-ALv2.
FSL-1.1-ALv2 lets you read, run and change ee/ for anything except offering a competing product
(ee/LICENSE); everything Deedglass does for safety is free and outside ee/
(docs/LICENSING.md). The rest is LICENSE; third-party notices
are in NOTICE. Forks are welcome under a new name: TRADEMARKS.md.
The record spec (spec/: the deed format and the export bundle) and the intent-vs-effect
corpus (corpus/) are published under CC-BY-4.0, so anyone can implement, copy or
adapt them with credit.
In plain words (a summary, not legal advice; the licence files govern):
來源:README.md,提交 9490163
工具
0版本歷史
13- v0.15.0最新Oct 29, 2026
- v0.12.0Oct 26, 2026
- v0.10.0Oct 26, 2026
- v0.9.0Oct 25, 2026
- v0.8.0Oct 25, 2026
- v0.7.0Oct 21, 2026
- v0.6.0Oct 20, 2026
- v0.5.0Oct 20, 2026
- v0.4.0Oct 19, 2026
- v0.3.0Oct 19, 2026
- v0.2.1Oct 18, 2026
- v0.1.1Oct 18, 2026
- v0.1.0Oct 17, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分