Help us shape the future of Go! Take the 2026 Go Developer Survey

deedglass

module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 20, 2026 License: Apache-2.0

README

Deedglass

An agent said it updated 1 row. Postgres changed 301.

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.

CI Release npm Go reference Attack suite

Try it in your browser · Quickstart · Docs · Security · deedglass.com

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 …):

$ npx -y deedglass init --trigger
…
✕ UPDATE order 42         Proven · Doesn't match · Postgres changed 301 rows in public.orders. The agent reported 1.
  expected   UPDATE 1 row in public.orders where id = 42 · sets status
  observed   UPDATE 301 rows in public.orders · 300 outside id = 42
…
✓ Trigger off             orders_ship_open_batch dropped
✓ Undo preview            Undo available · 301 rows in public.orders · 301 updates
    policy   undo-needs-approval · a person countersigns first

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.

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, drawn by scripts/demo/cast2svg.mjs.

Four ways in

Command What it needs What leaves your machine
In your browser deedglass.com/play A browser tab. Postgres runs in the page; it opens on the "said 1, changed 301" scene. Nothing
In your terminal npx deedglass play Node, and deedglass 0.1.1 or newer from npm. No Docker. The rules decide each call live and the records are sealed and checked on your machine; Postgres's lines are replayed from a recorded real run, and labelled as such. Nothing
Scan your setup npx deedglass scan Node. Reads your MCP configs and, if you name one, a database catalog, read-only. Grades what your agents could change, A to F. Nothing, apart from read-only catalog queries to a database you name
Observe mode deedglass observe run --connector pg-demo -- ./agent.sh A Postgres connector with observe on. Nothing to rewire: it reads Postgres's change log beside whatever gate you already use. Nothing

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.

Quickstart

Docker running with about 2 GiB of free disk, Node 18 or newer, and macOS or Linux (WSL 2 on Windows), then (from the tested Quickstart):

mkdir acme-agents && cd acme-agents
npx -y deedglass init --yes
npx -y deedglass doctor
npx -y deedglass init --trigger

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-safe policy, and ends with a blocked DROP TABLE and an UPDATE checked at Proven. deedglass doctor runs sixteen 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.

Observe mode: nothing to rewire

deedglass observe run --connector pg-demo -- ./agent.sh   # open a watched session, run the agent, close it
deedglass observe show obs_01k… --undo-sql                # the undo as SQL you review and run (free)
deedglass observe run --connector dev --undo-sql ~/deedglass-undo -- claude   # watch a Claude Code session, shell included

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; a one-step undo through Deedglass is Pro. Details: docs/OBSERVE.md.

How it works

flowchart LR
  A["AI agents<br/>Claude · OpenAI · Cursor · any MCP client"] -->|tool call + agent key| G
  subgraph D["Deedglass · one binary + Postgres"]
    I[Identity] --> P[Policies] --> G[Rules]
    G --> W[Check] --> S[Records] --> L[Ledger] --> N[Insights]
  end
  G -->|credentials from the vault| T["Tools<br/>Postgres · GitHub · Slack · Stripe · MCP servers"]
  T -->|what actually happened| W
  H[People] -->|approve · stop| G

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

Level What it checks What it can't see
Claimed The tool's own answer, against a schema and your postconditions Whether the answer is true
Checked A read-back from the target (GitHub, Slack, Stripe, Notion, REST, Postgres rows) Side effects the read-back doesn't cover
Proven Postgres's change log (logical decoding): every row the transaction committed DDL, sequences, unlogged tables and anything outside that database's WAL

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.

What it doesn't do

  • Proven checks cover Postgres only, and need wal_level=logical and REPLICA IDENTITY FULL on 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.

If you need Use this Where Deedglass fits
An agent that only reads A Postgres role with SELECT and nothing else. It can't change data whatever the agent sends, and there's nothing to install. You don't need it. It's for agents that must write. (compare)
A place for an agent to try changes A database branch: a Neon branch is a copy-on-write clone of your data; Supabase branches start without production data by default. For the writes that must reach production: rules first, then the check and the record. (compare)
Routing, isolation and credentials for many MCP servers An MCP gateway, such as Docker's, which runs each server in an isolated container and injects credentials. Behind the gateway, for the servers that write to Postgres. (compare)
Traces of each step, and evaluations Langfuse or LangSmith. Next to them: a trace is the agent's side of the story; the check reads what Postgres committed. (compare)
Rules at the wire for Postgres, Kubernetes and HTTP Claw Patrol, which gates each action against rules over the parsed traffic. It also decides first; it adds the check of what Postgres committed, records anyone can check offline, and undo. (compare)
Scanning what an agent sends out and what its tools return Pipelock, an agent firewall that scans MCP traffic in both directions. It adds the check of what Postgres committed after each call, and undo for the rows. (compare)

Install

How Command
npx (no install) npx -y deedglass help
Install script (macOS, Linux) curl -fsSL https://raw.githubusercontent.com/deedglass/deedglass/main/scripts/install.sh | sh
Binaries archives for macOS, Linux and Windows on the latest release, with checksums.txt
Go go install github.com/deedglass/deedglass/cmd/deedglass@latest (the CLI, without the Console)
Docker build the image from a checkout: make web-build docker (tags deedglass:dev; Node 24 builds the Console)

The install script downloads the release archive for your platform, checks its sha256 against the release's checksums.txt, and copies deedglass into ~/.local/bin; read it first: scripts/install.sh. A public container image is coming; until it's published, build the image locally as above. Checksums, signatures and SBOMs: docs/INSTALL.md.

Add it to your agent client

Add to Cursor Install in VS Code · LM Studio · Goose · Claude Desktop · Every client

claude mcp add deedglass -- npx -y deedglass mcp serve

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:

/plugin marketplace add deedglass/deedglass
/plugin install deedglass@deedglass

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: pip install deedglass, with LangChain and Claude Agent SDK adapters.
  • Go: github.com/deedglass/deedglass/pkg/deedglass.
  • MCP: deedglass mcp wrap governs any stdio MCP server; deedglass mcp serve governs 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.

Numbers

What Measured Target
Gate · allow, no witness p50 5.81 ms · p99 19.4 ms p50 < 5 ms · p99 < 25 ms (p50 missed)
Policy · 50 rules p99 148 µs p99 < 1 ms
Witness · L2 at 100 writes/s p50 118 ms · p99 317 ms p50 < 1 s
Verify · 100,000 deeds 1.53 s · 80.9 MiB < 5 s · < 256 MiB
Stop · across 2 instances max 23.5 ms over 20 trials < 2 s

How they were measured, and the misses: docs/BENCHMARKS.md.

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). Report a vulnerability privately: SECURITY.md.

Free features send nothing to deedglass.com: the free scan reads files on your machine and, with --postgres-dsn-env, connects only to the database you name. A Pro licence is checked with Dodo Payments and deedglass.com: deedglass serve asks at start and then daily, and Pro commands ask when you run them; a request goes out when the last successful check is a day old, and at once when the clock runs more than 5 minutes behind the last check or the latest time seen, or when licence.clock is missing, unreadable or altered. deedglass licence activate, refresh and deactivate always call out. DEEDGLASS_NO_NETWORK=1 stops every licence call, and only those: 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. With the network off, Pro runs on its cached token for up to 14 days after the last successful check. What each request carries: docs/LICENSING.md.

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 Pro features in ee/ are FSL-1.1-ALv2, 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.

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.

Directories

Path Synopsis
Package api holds the Deedglass OpenAPI 3.1.1 document (openapi.yaml), written by hand and embedded in the binary.
Package api holds the Deedglass OpenAPI 3.1.1 document (openapi.yaml), written by hand and embedded in the binary.
Package attack holds the V0 attack suite (spec §13): integration tests run on testcontainers against PostgreSQL 16.15, 17.11 and 18.6, one per case in attack_meta.json.
Package attack holds the V0 attack suite (spec §13): integration tests run on testcontainers against PostgreSQL 16.15, 17.11 and 18.6, one per case in attack_meta.json.
cmd/attack-report command
Command attack-report prints the last attack run and regenerates docs/ATTACK_SUITE.md from attack/attack_meta.json and attack/results/latest.json (S18).
Command attack-report prints the last attack run and regenerates docs/ATTACK_SUITE.md from attack/attack_meta.json and attack/results/latest.json (S18).
harness
Package harness runs Deedglass's V7 attack cases (S18) against a real `deedglass serve` process, a real Postgres and loopback upstreams, and checks the universal invariants after every case: the deed chains are intact, the target is unchanged when nothing should have run, every action is terminal, no secret appears anywhere, and forbidden listeners saw no traffic.
Package harness runs Deedglass's V7 attack cases (S18) against a real `deedglass serve` process, a real Postgres and loopback upstreams, and checks the universal invariants after every case: the deed chains are intact, the target is unchanged when nothing should have run, every action is terminal, no secret appears anywhere, and forbidden listeners saw no traffic.
bench
cmd/dgbench command
Command dgbench runs Deedglass's benchmark suites and reports them (S35).
Command dgbench runs Deedglass's benchmark suites and reports them (S35).
internal/load
Package load is Deedglass's open-loop load generator and its reporting (S35 §3.1): a fixed arrival rate, latency measured from each request's intended send time (so a stalled server shows in the tail instead of slowing the generator down), warm-up discarded, several runs, and a log-linear histogram whose percentiles are within 1% of the exact ones.
Package load is Deedglass's open-loop load generator and its reporting (S35 §3.1): a fixed arrival rate, latency measured from each request's intended send time (so a stalled server shows in the tail instead of slowing the generator down), warm-up discarded, several runs, and a log-linear histogram whose percentiles are within 1% of the exact ones.
cmd
deedglass command
Command deedglass is Deedglass in one binary: the server (deedglass serve), the CLI, and the MCP bridge (deedglass mcp serve and mcp wrap).
Command deedglass is Deedglass in one binary: the server (deedglass serve), the CLI, and the MCP bridge (deedglass mcp serve and mcp wrap).
deedglass/internal/ui
Package ui is the deedglass CLI's visual language (brand §13.3): symbols, colour and alignment.
Package ui is the deedglass CLI's visual language (brand §13.3): symbols, colour and alignment.
mcpbgen command
Command mcpbgen writes the Claude Desktop bundles (S47 §3.6) from built binaries:
Command mcpbgen writes the Claude Desktop bundles (S47 §3.6) from built binaries:
packgen command
Command packgen writes internal/packs/snapshot/index.json from the pack directories next to it (S47 §3.8): every pack compiles, passes its cases and carries at least 12.
Command packgen writes internal/packs/snapshot/index.json from the pack directories next to it (S47 §3.8): every pack compiles, passes its cases and carries at least 12.
playgen command
Command playgen writes the data files of the browser playground on deedglass.com/play (S47).
Command playgen writes the data files of the browser playground on deedglass.com/play (S47).
deploy
postgres
Package postgres embeds the control-plane roles script, so deedglass init creates the roles with the same SQL as deploy/docker-compose.yml.
Package postgres embeds the control-plane roles script, so deedglass init creates the roles with the same SQL as deploy/docker-compose.yml.
ee
examples
demo/policies
Package demopolicies embeds the Acme demo policy, so deedglass dev seed --demo loads exactly the file the demo's cases test (S15).
Package demopolicies embeds the Acme demo policy, so deedglass dev seed --demo loads exactly the file the demo's cases test (S15).
demo/snippet command
Command snippet prints the Acme demo's MCP client config (make demo-snippet CLIENT=…).
Command snippet prints the Acme demo's MCP client config (make demo-snippet CLIENT=…).
demo/sql
Package sql holds the Acme demo's SQL (S15, S17, S21), embedded so deedglass init loads the same schema and seed into its local demo database as make demo-up does into the demo's orders-db.
Package sql holds the Acme demo's SQL (S15, S17, S21), embedded so deedglass init loads the same schema and seed into its local demo database as make demo-up does into the demo's orders-db.
mock-orders command
Command mock-orders is a small orders API for the REST connector demo (S16) and S19's lying-mock witness demo.
Command mock-orders is a small orders API for the REST connector demo (S16) and S19's lying-mock witness demo.
policies
Package policies holds Deedglass's starter policies (S12 §3.9) and their test cases, embedded so onboarding (default-deny), dev seed and the tests read the same bytes as the files on disk.
Package policies holds Deedglass's starter policies (S12 §3.9) and their test cases, embedded so onboarding (default-deny), dev seed and the tests read the same bytes as the files on disk.
sim
Package simfiles embeds the default scenario for deedglass dev simulate (S27) and the three versions of its policy, so the CLI, the generator and the tests read the same bytes as the files on disk.
Package simfiles embeds the default scenario for deedglass dev simulate (S27) and the three versions of its policy, so the CLI, the generator and the tests read the same bytes as the files on disk.
slack
Package slack holds the example Slack app manifest that `deedglass slack manifest` prints.
Package slack holds the example Slack app manifest that `deedglass slack manifest` prints.
internal
a2a
Package a2a puts the Gate in front of a remote agent reached over the Agent2Agent (A2A) protocol (TY-07, ADR-113): deedglass a2a proxy.
Package a2a puts the Gate in front of a remote agent reached over the Agent2Agent (A2A) protocol (TY-07, ADR-113): deedglass a2a proxy.
a2a/a2atest
Package a2atest is a fake A2A v1.0 peer for tests: a JSON-RPC endpoint at /rpc and an Agent Card at /.well-known/agent-card.json, on httptest (loopback, no network).
Package a2atest is a fake A2A v1.0 peer for tests: a JSON-RPC endpoint at /rpc and an Agent Card at /.well-known/agent-card.json, on httptest (loopback, no network).
agentscript
Package agentscript is the scripted agent behind `deedglass dev agent-script` (S37 §3.3): a YAML file of scenes, each a list of steps (a tool call through the Gate as an agent, an allow-listed demo make target, a deedglass subcommand as argv, an approval, or a one-byte change to a file under .tmp/demo/), each with the outcome it expects from the real product.
Package agentscript is the scripted agent behind `deedglass dev agent-script` (S37 §3.3): a YAML file of scenes, each a list of steps (a tool call through the Gate as an agent, an allow-listed demo make target, a deedglass subcommand as argv, an approval, or a one-byte change to a file under .tmp/demo/), each with the outcome it expects from the real product.
approve
Package approve handles human approval: requests, one-time approval links, expiry, four-eyes rules and resuming the action once decided (contract §5).
Package approve handles human approval: requests, one-time approval links, expiry, four-eyes rules and resuming the action once decided (contract §5).
approve/sections
Package sections holds approval context sections other than undo (S40): email_preview, what a person reads before countersigning an email.
Package sections holds approval context sections other than undo (S40): email_preview, what a person reads before countersigning an email.
archtest
Package archtest holds the import-layering test (ADR-013).
Package archtest holds the import-layering test (ADR-013).
buildinfo
Package buildinfo reports what this binary is: its version, the commit it was built from, and the API versions it serves (contract §8, dated versions).
Package buildinfo reports what this binary is: its version, the commit it was built from, and the API versions it serves (contract §8, dated versions).
bundle
Package bundle holds Operation Bundles (spec §6): a vendor-authored, content-addressed manifest (bundle_hash = "sha256:" + hex(SHA-256(JCS(manifest)))) that fixes the intent schema, the entry function and the SHA-256 of its exact prosrc, the expected schema, the write set and the marker count, plus the registry of rules compiled into the verifier (map[bundle_hash]Rule, starting with rules/transfer_v1.go).
Package bundle holds Operation Bundles (spec §6): a vendor-authored, content-addressed manifest (bundle_hash = "sha256:" + hex(SHA-256(JCS(manifest)))) that fixes the intent schema, the entry function and the SHA-256 of its exact prosrc, the expected schema, the write set and the marker count, plus the registry of rules compiled into the verifier (map[bundle_hash]Rule, starting with rules/transfer_v1.go).
caught
Package caught finds the moments worth a person's attention in what Deedglass already recorded (S50 §3.7): "Deedglass caught this".
Package caught finds the moments worth a person's attention in what Deedglass already recorded (S50 §3.7): "Deedglass caught this".
cli/mark
Package mark draws the Deedglass mark in a terminal (brand §5 and §13.3; S05X): the Split Orb in half-block pixels beside a short welcome (Banner), the one-line inline mark ◖│◗ that heads init, doctor and help (Inline), and the optional "Sealed" closing moment (Sealed).
Package mark draws the Deedglass mark in a terminal (brand §5 and §13.3; S05X): the Split Orb in half-block pixels beside a short welcome (Banner), the one-line inline mark ◖│◗ that heads init, doctor and help (Inline), and the optional "Sealed" closing moment (Sealed).
cli/mark/gen command
Command gen writes orb_gen.go, the Split Orb's pixel grid, from the brand geometry (internal/cli/mark/internal/orbgen).
Command gen writes orb_gen.go, the Split Orb's pixel grid, from the brand geometry (internal/cli/mark/internal/orbgen).
cli/mark/internal/orbgen
Package orbgen computes the Split Orb's pixel grid for the terminal mark (brand §5, §13.3; S05X §3.1) and writes it as Go source.
Package orbgen computes the Split Orb's pixel grid for the terminal mark (brand §5, §13.3; S05X §3.1) and writes it as Go source.
config
Package config loads Deedglass settings into one typed struct: the process environment, then .env (dev only), then deedglass.yaml, then .deedglass/dev-secrets.json (dev only), then defaults.
Package config loads Deedglass settings into one typed struct: the process environment, then .env (dev only), then deedglass.yaml, then .deedglass/dev-secrets.json (dev only), then defaults.
config/cmd/genconfigdoc command
Command genconfigdoc writes the settings table in internal/config/keys.go as JSON for the docs site's configuration page (S33 §3.4):
Command genconfigdoc writes the settings table in internal/config/keys.go as JSON for the docs site's configuration page (S33 §3.4):
connector
Package connector is the connector framework (S16, contract §2): the Connector interface every type implements (rest today; postgres in S17; github, slack, stripe, gmail and notion in S29–S30; fake in dev), the per-org Registry the Gate resolves tools through, the typed error taxonomy, the naming rules and the JSON Schema subset tool arguments are checked against.
Package connector is the connector framework (S16, contract §2): the Connector interface every type implements (rest today; postgres in S17; github, slack, stripe, gmail and notion in S29–S30; fake in dev), the per-org Registry the Gate resolves tools through, the typed error taxonomy, the naming rules and the JSON Schema subset tool arguments are checked against.
connector/catalogdocs
Package catalogdocs renders the generated part of docs/connectors/<type>.md from the connector catalog (S30 §3.4): the tools table, credentials, setup and limits, between the markers <!-- deedglass:generated start --> and <!-- deedglass:generated end -->.
Package catalogdocs renders the generated part of docs/connectors/<type>.md from the connector catalog (S30 §3.4): the tools table, credentials, setup and limits, between the markers <!-- deedglass:generated start --> and <!-- deedglass:generated end -->.
connector/cmd/gendocs command
gendocs rewrites the generated section of docs/connectors/<type>.md from the connector catalog (S30).
gendocs rewrites the generated section of docs/connectors/<type>.md from the connector catalog (S30).
connector/egress
Package egress is Deedglass's one door to the network (S16 §3.2).
Package egress is Deedglass's one door to the network (S16 §3.2).
connector/fake
Package fake is the dev and test connector: four tools with real JSON Schemas and configurable latency, cost and outcome, so the Gate's every path runs without a real system (S13 §3.9).
Package fake is the dev and test connector: four tools with real JSON Schemas and configurable latency, cost and outcome, so the Gate's every path runs without a real system (S13 §3.9).
connector/fhir
Package fhir is the native FHIR R4 connector (ADR-105).
Package fhir is the native FHIR R4 connector (ADR-105).
connector/fhir/fhirtest
Package fhirtest is a small in-memory FHIR R4 server for tests (HC-P02): the connector's unit tests and the attack suite's group I point a fhir connector at it.
Package fhirtest is a small in-memory FHIR R4 server for tests (HC-P02): the connector's unit tests and the attack suite's group I point a fhir connector at it.
connector/fhir/pgmap
Package pgmap reads a Postgres-backed FHIR server's own tables out of the decoder's frames (ADR-105 §7, ADR-108): each committed transaction becomes the resource versions it wrote.
Package pgmap reads a Postgres-backed FHIR server's own tables out of the decoder's frames (ADR-105 §7, ADR-108): each committed transaction becomes the resource versions it wrote.
connector/github
Package github is the GitHub connector (S29 §3.2): fourteen tools over GitHub's REST API, with a fine-grained token or a GitHub App installation token from the vault.
Package github is the GitHub connector (S29 §3.2): fourteen tools over GitHub's REST API, with a fine-grained token or a GitHub App installation token from the vault.
connector/gmail
Package gmail is the Gmail connector (S30 §3.2), drafts only.
Package gmail is the Gmail connector (S30 §3.2), drafts only.
connector/googleauth
Package googleauth is Google's OAuth for installed apps, shared by the Gmail connector (S30) and the ops build's outbound-mail connector (S40): a PKCE S256 sign-in through a loopback redirect on 127.0.0.1, and the token endpoint (code exchange and refresh).
Package googleauth is Google's OAuth for installed apps, shared by the Gmail connector (S30) and the ops build's outbound-mail connector (S40): a PKCE S256 sign-in through a loopback redirect on 127.0.0.1, and the token endpoint (code exchange and refresh).
connector/notion
Package notion is the Notion connector (S30 §3.3, built in S31's carry-over): three tools over Notion's REST API with an internal integration token from the vault.
Package notion is the Notion connector (S30 §3.3, built in S31's carry-over): three tools over Notion's REST API with an internal integration token from the vault.
connector/postgres
Package postgres is the Postgres connector (S17, docs/POSTGRES.md): it runs agent SQL in a transaction Deedglass controls, as the least-privilege role deedglass_agent, and leaves the evidence the witness needs (S20–S21): a ledger row and a logical marker in the same transaction as the change.
Package postgres is the Postgres connector (S17, docs/POSTGRES.md): it runs agent SQL in a transaction Deedglass controls, as the least-privilege role deedglass_agent, and leaves the evidence the witness needs (S20–S21): a ledger row and a logical marker in the same transaction as the change.
connector/postgres/pgtest
Package pgtest gives integration tests a throwaway customer database set up for the Postgres connector: the Acme schema (customers, orders, refunds, order_items, products, a bulk table), public.ship_order owned by a non-superuser role, and init applied with fresh passwords.
Package pgtest gives integration tests a throwaway customer database set up for the Postgres connector: the Acme schema (customers, orders, refunds, order_items, products, a bulk table), public.ship_order owned by a non-superuser role, and init applied with fresh passwords.
connector/postgres/setup
Package setup prepares a customer database for the Postgres connector (S17, contract §4): the embedded static SQL (schema deedglass, the ledger, deedglass.begin_action), a catalog-driven planner that diffs the database against a connector's config and emits ordered, reviewable SQL, the readiness checks behind `deedglass connector postgres check`, provider detection, and client-side SCRAM-SHA-256 verifiers (so a generated password never reaches Postgres or its logs).
Package setup prepares a customer database for the Postgres connector (S17, contract §4): the embedded static SQL (schema deedglass, the ledger, deedglass.begin_action), a catalog-driven planner that diffs the database against a connector's config and emits ordered, reviewable SQL, the readiness checks behind `deedglass connector postgres check`, provider detection, and client-side SCRAM-SHA-256 verifiers (so a generated password never reaches Postgres or its logs).
connector/rest
Package rest is the REST connector (S16 §3.4): any JSON API becomes governed tools from a declarative config.
Package rest is the REST connector (S16 §3.4): any JSON API becomes governed tools from a declarative config.
connector/saas
Package saas is the shared HTTP plumbing of the SaaS connector types (S29: github and slack; S30: stripe, gmail and notion).
Package saas is the shared HTTP plumbing of the SaaS connector types (S29: github and slack; S30: stripe, gmail and notion).
connector/saas/saastest
Package saastest serves recorded HTTP exchanges for SaaS connector tests (S29).
Package saastest serves recorded HTTP exchanges for SaaS connector tests (S29).
connector/schema
Package schema validates tool arguments against the JSON Schema subset native connectors use (S16 §4 step 8): type, properties, required, enum, pattern (RE2), minimum, maximum, maxLength, items and additionalProperties: false.
Package schema validates tool arguments against the JSON Schema subset native connectors use (S16 §4 step 8): type, properties, required, enum, pattern (RE2), minimum, maximum, maxLength, items and additionalProperties: false.
connector/slack
Package slack is the Slack connector (S29 §3.3): four tools over a bot token (list_channels, read_channel, post_message, add_reaction), channel allow-lists compared by id, L1 read-backs through message metadata that carries the action id, request.slack enrich facts, and the approvals API the Slack notifier and the interaction handler call (VerifyInteraction, PostApproval, UpdateApproval, LookupUser, OpenView, Respond).
Package slack is the Slack connector (S29 §3.3): four tools over a bot token (list_channels, read_channel, post_message, add_reaction), channel allow-lists compared by id, L1 read-backs through message metadata that carries the action id, request.slack enrich facts, and the approvals API the Slack notifier and the interaction handler call (VerifyInteraction, PostApproval, UpdateApproval, LookupUser, OpenView, Respond).
connector/stripe
Package stripe is the Stripe connector (S30 §3.1), sandbox only.
Package stripe is the Stripe connector (S30 §3.1), sandbox only.
connectorapi
Package connectorapi mounts S16's connector routes (contract §9): connector CRUD, write-only credentials, the connection test and the connector types.
Package connectorapi mounts S16's connector routes (contract §9): connector CRUD, write-only credentials, the connection test and the connector types.
console
Package console serves the Console, the embedded web app (web/ build output, ADR-020, ADR-053), and its live event stream over SSE (ADR-054).
Package console serves the Console, the embedded web app (web/ build output, ADR-020, ADR-053), and its live event stream over SSE (ADR-054).
corpus
Package corpus runs the intent-vs-effect corpus (TY-13, corpus/ at the repo root): scenarios in which what an agent reports, what Postgres commits and what Deedglass says can differ.
Package corpus runs the intent-vs-effect corpus (TY-13, corpus/ at the repo root): scenarios in which what an agent reports, what Postgres commits and what Deedglass says can differ.
corpus/bench
Package bench scores gateways and checkers against the intent-vs-effect corpus (corpus/ at the repo root, corpus/BENCHMARK.md).
Package bench scores gateways and checkers against the intent-vs-effect corpus (corpus/ at the repo root, corpus/BENCHMARK.md).
corpus/cmd/corpus command
Command corpus runs the intent-vs-effect corpus (corpus/) against a throwaway Postgres and compares what committed with each scenario's expected.json.
Command corpus runs the intent-vs-effect corpus (corpus/) against a throwaway Postgres and compares what committed with each scenario's expected.json.
decoder
Package decoder reads Postgres logical replication (pgoutput v1) for the Witness (S20): one runner per witnessed connector peeks its slot, checks every message's layout (SafeParse), assembles whole transactions into frames with exact before and after images, classifies each frame against S17's ledger row and marker (ADR-003), persists frames and the checkpoint in one transaction, and only then advances the slot (ADR-002, ADR-045).
Package decoder reads Postgres logical replication (pgoutput v1) for the Witness (S20): one runner per witnessed connector peeks its slot, checks every message's layout (SafeParse), assembles whole transactions into frames with exact before and after images, classifies each frame against S17's ledger row and marker (ADR-003), persists frames and the checkpoint in one transaction, and only then advances the slot (ADR-002, ADR-045).
deed
Package deed builds, seals and verifies deeds: the signed record of one action, one admin change, or a later witness verdict (contract §7, docs/DEED_SPEC.md).
Package deed builds, seals and verifies deeds: the signed record of one action, one admin change, or a later witness verdict (contract §7, docs/DEED_SPEC.md).
deed/archive
Package archive writes and reads export bundle v1 (docs/BUNDLE_FORMAT.md, contract §7): a deterministic gzip-compressed tar holding exactly README.txt, keys.json, deeds.jsonl, manifest.json and an optional manifest.seal.json, at the root, in that order.
Package archive writes and reads export bundle v1 (docs/BUNDLE_FORMAT.md, contract §7): a deterministic gzip-compressed tar holding exactly README.txt, keys.json, deeds.jsonl, manifest.json and an optional manifest.seal.json, at the root, in that order.
deed/cmd/gencopy command
Command gencopy writes the deed verification copy and key lists out of Go, so the CLI and the browser verifier never drift (S05 §3.8):
Command gencopy writes the deed verification copy and key lists out of Go, so the CLI and the browser verifier never drift (S05 §3.8):
deed/deedtest
Package deedtest holds the fixed test-vector keys, deterministic ids and times, an in-memory deed.ChainStore, a chain generator and tamper helpers, for tests, golden vectors and benchmarks.
Package deedtest holds the fixed test-vector keys, deterministic ids and times, an in-memory deed.ChainStore, a chain generator and tamper helpers, for tests, golden vectors and benchmarks.
deed/deedtest/cmd/genchain command
Command genchain writes a test chain for benchmarks: n deeds of one org, sealed by the published test keys (key a for seq 1–10, key b after; with -keys 1, key a only for n ≤ 10).
Command genchain writes a test chain for benchmarks: n deeds of one org, sealed by the published test keys (key a for seq 1–10, key b after; with -keys 1, key a only for n ≤ 10).
deed/deedtest/cmd/genrelease command
Command genrelease writes the release bundle for TY-11, the 2046 test: a small export bundle sealed by the deed and bundle code of one release, byte-identical every time it runs.
Command genrelease writes the release bundle for TY-11, the 2046 test: a small export bundle sealed by the deed and bundle code of one release, byte-identical every time it runs.
deed/stamp
Package stamp anchors the head of a sealed-record chain to independent timestamps (TY-03, ADR-112), so a reader can tell that a chain was not cut short or rewritten after a given time.
Package stamp anchors the head of a sealed-record chain to independent timestamps (TY-03, ADR-112), so a reader can tell that a chain was not cut short or rewritten after a given time.
deed/stamp/fetch
Package fetch asks the TSAs and the transparency service an operator configured for evidence about a chain head (TY-03, ADR-112).
Package fetch asks the TSAs and the transparency service an operator configured for evidence about a chain head (TY-03, ADR-112).
deed/stamp/stamptest
Package stamptest runs a fake RFC 3161 TSA and a fake transparency service on loopback, for tests (TY-03).
Package stamptest runs a fake RFC 3161 TSA and a fake transparency service on loopback, for tests (TY-03).
doctor
Package doctor is `deedglass doctor` (S32 §3.10): sixteen read-only checks, each with the observed value and, when it isn't OK, the exact fix.
Package doctor is `deedglass doctor` (S32 §3.10): sixteen read-only checks, each with the observed value and, when it isn't OK, the exact fix.
embedgz
Package embedgz keeps embedded text files gzip-compressed in the binary (the image size budget, ADR-032 as amended by DL-031): a directory's files are committed beside a deterministic files.tar.gz that go:embed carries, and FS turns it back into a read-only fs.FS at first use.
Package embedgz keeps embedded text files gzip-compressed in the binary (the image size budget, ADR-032 as amended by DL-031): a directory's files are committed beside a deterministic files.tar.gz that go:embed carries, and FS turns it back into a read-only fs.FS at first use.
embedgz/cmd/embedgz command
Command embedgz rewrites the gzip archives the binary embeds from the files beside them (make embed-gz).
Command embedgz rewrites the gzip archives the binary embeds from the files beside them (make embed-gz).
fhirexport
Package fhirexport turns sealed Deedglass records into FHIR R4 resources (HC-P10, DL-109): one AuditEvent per FHIR interaction, shaped to the IHE Basic Audit Log Patterns (BALP 1.1.x) profiles, and one Provenance per successful write, shaped to the HL7 AI Transparency on FHIR ballot's AI Provenance profile.
Package fhirexport turns sealed Deedglass records into FHIR R4 resources (HC-P10, DL-109): one AuditEvent per FHIR interaction, shaped to the IHE Basic Audit Log Patterns (BALP 1.1.x) profiles, and one Provenance per successful write, shaped to the HL7 AI Transparency on FHIR ballot's AI Provenance profile.
gate
Package gate is the action pipeline: every tool call passes through the Gate, which authenticates it, evaluates policy, waits for approval when needed, runs it through a connector, hands the result to the Witness and seals a deed (contract §5).
Package gate is the action pipeline: every tool call passes through the Gate, which authenticates it, evaluates policy, waits for approval when needed, runs it through a connector, hands the result to the Witness and seals a deed (contract §5).
gate/lifecycle
Package lifecycle is the action state machine of contract §5: the 15 states and the 22 edges, nothing else.
Package lifecycle is the action state machine of contract §5: the 15 states and the 22 edges, nothing else.
httpx
Package httpx is the HTTP layer: the server, middleware, the route table, the error envelope, idempotency and dated API versions (contract §8, §9).
Package httpx is the HTTP layer: the server, middleware, the route table, the error envelope, idempotency and dated API versions (contract §8, §9).
httpx/cmd/gendocs command
Command gendocs writes the API error catalog in internal/httpx/errors.go as JSON for the docs site (S33 §3.4), so every page under docs.deedglass.com/errors/ comes from the one catalog:
Command gendocs writes the API error catalog in internal/httpx/errors.go as JSON for the docs site (S33 §3.4), so every page under docs.deedglass.com/errors/ comes from the one catalog:
httpx/cmd/gensdkerrors command
Command gensdkerrors writes the API error catalog out of internal/httpx/errors.go for the SDKs (S32 §3.4), so the Go server, the TypeScript SDK and the Python SDK never disagree on a code:
Command gensdkerrors writes the API error catalog out of internal/httpx/errors.go for the SDKs (S32 §3.4), so the Go server, the TypeScript SDK and the Python SDK never disagree on a code:
identity
Package identity holds orgs, users, memberships, sessions, magic links, agents, API keys, signed intents and on-behalf-of references (contract §3, §8).
Package identity holds orgs, users, memberships, sessions, magic links, agents, API keys, signed intents and on-behalf-of references (contract §3, §8).
ids
Package ids makes and parses Deedglass ids: a short prefix, an underscore and a lowercase ULID, for example agt_01j9zr3m5k8q2w7x4t6v0b1c9d (contract §3, ADR-014).
Package ids makes and parses Deedglass ids: a short prefix, an underscore and a lowercase ULID, for example agt_01j9zr3m5k8q2w7x4t6v0b1c9d (contract §3, ADR-014).
installlinks
Package installlinks builds every one-click install link and command for Deedglass's MCP server (S47 §3.6) from one server object, so the README buttons, deedglass.com/install, the registry server.json, the Claude Code plugin and the listing kits can never drift apart.
Package installlinks builds every one-click install link and command for Deedglass's MCP server (S47 §3.6) from one server object, so the README buttons, deedglass.com/install, the registry server.json, the Claude Code plugin and the listing kits can never drift apart.
installlinks/cmd/geninstall command
Command geninstall writes the generated install-link files (S47 §3.6):
Command geninstall writes the generated install-link files (S47 §3.6):
intent
Package intent implements the signed intent format deedglass.transfer/1 (spec §5, amended by plan §3.0 #6): a closed-schema JSON object whose exact RFC 8785 (JCS) bytes are signed with pure Ed25519, with amounts carried as strings, the Operation Bundle hash inside the signed content, and intent_hash = SHA-256(bytes) as its identifier.
Package intent implements the signed intent format deedglass.transfer/1 (spec §5, amended by plan §3.0 #6): a closed-schema JSON object whose exact RFC 8785 (JCS) bytes are signed with pure Ed25519, with amounts carried as strings, the Operation Bundle hash inside the signed content, and intent_hash = SHA-256(bytes) as its identifier.
jsonleaf
Package jsonleaf keeps a JSON document as keyed digests of its leaves (ADR-108): a map from each leaf's JSON Pointer to an HMAC-SHA-256 of the pointer and the leaf's canonical value.
Package jsonleaf keeps a JSON document as keyed digests of its leaves (ADR-108): a map from each leaf's JSON Pointer to an HMAC-SHA-256 of the pointer and the leaf's canonical value.
keys
Package keys manages V0 Ed25519 keys (spec §12, amended by plan §3.0 #7): file-based principal and verifier key pairs (0600 files; KMS/HSM signing is V1), the key id kid = lowercase hex of the first 16 bytes of SHA-256 of the raw 32-byte public key, and the verifier's own trusted key registry, which it never takes from the database copy.
Package keys manages V0 Ed25519 keys (spec §12, amended by plan §3.0 #7): file-based principal and verifier key pairs (0600 files; KMS/HSM signing is V1), the key id kid = lowercase hex of the first 16 bytes of SHA-256 of the raw 32-byte public key, and the verifier's own trusted key registry, which it never takes from the database copy.
learn
Package learn powers Insights: replaying past actions against a policy version, usage statistics, anomalies and suggested policy changes, with optional LLM phrasing.
Package learn powers Insights: replaying past actions against a policy version, usage statistics, anomalies and suggested policy changes, with optional LLM phrasing.
learn/sim
Package sim plans a believable, seeded stretch of agent traffic for `deedglass dev simulate` (S27).
Package sim plans a believable, seeded stretch of agent traffic for `deedglass dev simulate` (S27).
ledger
Package ledger is Deedglass's own history: every action, every state change, every deed and every admin decision in an org, plus the deed chain check, exports and retention (contract §4, §5; S06).
Package ledger is Deedglass's own history: every action, every state change, every deed and every admin decision in an org, plus the deed chain check, exports and retention (contract §4, §5; S06).
ledger/fake
Package fake makes realistic actions for demos and tests (`deedglass dev fake-action`, S06): a deterministic plan from a seed, and a runner that walks every action through the real write path (ledger.CreateAction, Transition, SealAction, SealAmendment), so every screen, demo and clip shows real sealed deeds.
Package fake makes realistic actions for demos and tests (`deedglass dev fake-action`, S06): a deterministic plan from a seed, and a runner that walks every action through the real write path (ledger.CreateAction, Transition, SealAction, SealAmendment), so every screen, demo and clip shows real sealed deeds.
licence
Package licence verifies Deedglass Pro licences on the buyer's machine (S48, DL-039, contract §13.4).
Package licence verifies Deedglass Pro licences on the buyer's machine (S48, DL-039, contract §13.4).
lint
Package lint holds Deedglass's static guards G1 to G5 (S18, security pass 1) and G6 to G10 (S34, security pass 2).
Package lint holds Deedglass's static guards G1 to G5 (S18, security pass 1) and G6 to G10 (S34, security pass 2).
mailer
Package mailer sends sign-in and invite emails through one interface: a log mailer in dev, Resend in prod, and None when prod has no Resend key (contract §2).
Package mailer sends sign-in and invite emails through one interface: a log mailer in dev, Resend in prod, and None when prod has no Resend key (contract §2).
mcp
Package mcp puts the Gate in front of MCP servers: a stdio wrapper (deedglass mcp wrap, S14), a Streamable HTTP gateway at /mcp/{connector} and the native tools (deedglass mcp serve, S15) (ADR-018, ADR-036).
Package mcp puts the Gate in front of MCP servers: a stdio wrapper (deedglass mcp wrap, S14), a Streamable HTTP gateway at /mcp/{connector} and the native tools (deedglass mcp serve, S15) (ADR-018, ADR-036).
mcp/bridge
Package bridge is `deedglass mcp serve` (S15): a thin stdio ⇄ Streamable HTTP bridge, so a stdio-only MCP client (Claude Desktop's local servers) can use the Gate's HTTP endpoints.
Package bridge is `deedglass mcp serve` (S15): a thin stdio ⇄ Streamable HTTP bridge, so a stdio-only MCP client (Claude Desktop's local servers) can use the Gate's HTTP endpoints.
mcp/front
Package front is the sessionless, dual-era MCP server core behind POST /mcp/{connector} and POST /mcp/native, and behind deedglass mcp serve through them (S15, ADR-037).
Package front is the sessionless, dual-era MCP server core behind POST /mcp/{connector} and POST /mcp/native, and behind deedglass mcp serve through them (S15, ADR-037).
mcp/gateclient
Package gateclient is the MCP surfaces' typed client for the Gate (S14): submit a proxy-mode action, report its result, resolve tool visibility, read an action and whoami.
Package gateclient is the MCP surfaces' typed client for the Gate (S14): submit a proxy-mode action, report its result, resolve tool visibility, read an action and whoami.
mcp/httpgw
Package httpgw is the Streamable HTTP transport of the MCP gateway (S15): POST /mcp/{connector} and POST /mcp/native.
Package httpgw is the Streamable HTTP transport of the MCP gateway (S15): POST /mcp/{connector} and POST /mcp/native.
mcp/jsonrpc
Package jsonrpc is the MCP stdio framing the wrapper relays (S14): one JSON-RPC 2.0 message per line, UTF-8, no embedded newlines.
Package jsonrpc is the MCP stdio framing the wrapper relays (S14): one JSON-RPC 2.0 message per line, UTF-8, no embedded newlines.
mcp/mcptest
Package mcptest is a fake stdio MCP server for tests (S14): the test binary re-executes itself with FAKE_MCP_MODE set (legacy, modern or stubborn) and calls FakeServer from TestMain.
Package mcptest is a fake stdio MCP server for tests (S14): the test binary re-executes itself with FAKE_MCP_MODE set (legacy, modern or stubborn) and calls FakeServer from TestMain.
mcp/present
Package present shapes the Gate's MCP-facing sentences (internal/gate/present.go) into MCP results (S14): a text content block, isError, the com.deedglass/* _meta keys, and resultType for 2026-07-28-era requests only.
Package present shapes the Gate's MCP-facing sentences (internal/gate/present.go) into MCP results (S14): a text content block, isError, the com.deedglass/* _meta keys, and resultType for 2026-07-28-era requests only.
mcp/snippet
Package snippet writes MCP client config that runs a server through `deedglass mcp wrap` (S14): Claude Desktop, Claude Code, Cursor, VS Code and Windsurf.
Package snippet writes MCP client config that runs a server through `deedglass mcp wrap` (S14): Claude Desktop, Claude Code, Cursor, VS Code and Windsurf.
mcp/toolscan
Package toolscan flags MCP tool definitions whose text is aimed at the model rather than at the person reading it (S34, attack case Q01): phrases that tell a model to drop its instructions or hide something from the user, instruction tags such as <IMPORTANT>, and characters people can't see (Unicode tag characters, bidirectional overrides, zero-width characters).
Package toolscan flags MCP tool definitions whose text is aimed at the model rather than at the person reading it (S34, attack case Q01): phrases that tell a model to drop its instructions or hide something from the user, instruction tags such as <IMPORTANT>, and characters people can't see (Unicode tag characters, bidirectional overrides, zero-width characters).
mcp/upstream
Package upstream is the MCP gateway's client side (S15): one official-SDK client session per configured remote MCP server (mcp.upstreams in deedglass.yaml), era-negotiating (server/discover first, initialize as the fallback).
Package upstream is the MCP gateway's client side (S15): one official-SDK client session per configured remote MCP server (mcp.upstreams in deedglass.yaml), era-negotiating (server/discover first, initialize as the fallback).
mcp/wrap
Package wrap is `deedglass mcp wrap` (S14): a JSON-RPC relay between an MCP client and a stdio MCP server that sends every tools/call to the Gate in proxy mode first, and forwards it only when the Gate answers authorized.
Package wrap is `deedglass mcp wrap` (S14): a JSON-RPC relay between an MCP client and a stdio MCP server that sends every tools/call to the Gate in proxy mode first, and forwards it only when the Gate answers authorized.
mcpb
Package mcpb builds Deedglass's Claude Desktop bundles (.mcpb, S47 §3.6): a zip with manifest.json (MCPB manifest spec 0.3, checked 2026-10-12 at github.com/anthropics/mcpb MANIFEST.md), the platform's deedglass binary under server/, and the icon.
Package mcpb builds Deedglass's Claude Desktop bundles (.mcpb, S47 §3.6): a zip with manifest.json (MCPB manifest spec 0.3, checked 2026-10-12 at github.com/anthropics/mcpb MANIFEST.md), the platform's deedglass binary under server/, and the icon.
money
Package money formats integer minor units for people (S30): "$120.00", "¥5,000", "KWD 1.250".
Package money formats integer minor units for people (S30): "$120.00", "¥5,000", "KWD 1.250".
notify
Package notify delivers events to people and systems: email, Slack and signed webhooks (contract §8).
Package notify delivers events to people and systems: email, Slack and signed webhooks (contract §8).
notify/slack
Package slack is approvals in Slack (S29): the approval card (a pure function from ApprovalView to Block Kit JSON), the notifier that posts it and edits it in place until the deed is sealed, and POST /v1/slack/interact, where a signed Approve or Deny click becomes S22's Decide.
Package slack is approvals in Slack (S29): the approval card (a pure function from ApprovalView to Block Kit JSON), the notifier that posts it and edits it in place until the deed is sealed, and POST /v1/slack/interact, where a signed Approve or Deny click becomes S22's Decide.
notify/slack/slackstore
Package slackstore is approvals in Slack over Postgres (S29): every call is one short org transaction with row-level security, except the routing lookup, which is the one cross-org SECURITY DEFINER routing function behind store.PreAuth.
Package slackstore is approvals in Slack over Postgres (S29): every call is one short org transaction with row-level security, except the routing lookup, which is the one cross-org SECURITY DEFINER routing function behind store.PreAuth.
notify/webhook
Package webhook delivers Deedglass events to customer endpoints (S22 §3.9): endpoints with a vault-held signing secret, the outbox the Ledger fills in the same transaction as every event, a delivery worker that signs each POST (pkg/deedglass/webhook), retries on a fixed schedule and disables an endpoint that has failed for 72 hours.
Package webhook delivers Deedglass events to customer endpoints (S22 §3.9): endpoints with a vault-held signing secret, the outbox the Ledger fills in the same transaction as every event, a delivery worker that signs each POST (pkg/deedglass/webhook), retries on a fixed schedule and disables an endpoint that has failed for 72 hours.
observe
Package observe is S50's observe mode (ADR-094): watched sessions over a Postgres connector's change log.
Package observe is S50's observe mode (ADR-094): watched sessions over a Postgres connector's change log.
observeapi
Package observeapi is observe mode's HTTP routes (S50 §3.4): open, close, list and read watched sessions, leave a transaction out of an undo, preview the undo (free, with the SQL a person runs themselves) and run it in one step (Pro).
Package observeapi is observe mode's HTTP routes (S50 §3.4): open, close, list and read watched sessions, leave a transaction out of an undo, preview the undo (free, with the SQL a person runs themselves) and run it in one step (Pro).
packs
Package packs reads, checks and signs Deedglass policy packs (S47 §3.8): a signed index of packs, each a policy, its test cases, pack.yaml and a README.
Package packs reads, checks and signs Deedglass policy packs (S47 §3.8): a signed index of packs, each a policy, its test cases, pack.yaml and a README.
phi
Package phi is PHI mode's projection (HC-P09): it turns a stored request, result or witness detail into a copy that keeps only the paths a caller names and replaces everything else by a digest.
Package phi is PHI mode's projection (HC-P09): it turns a stored request, result or witness detail into a copy that keeps only the paths a caller names and replaces everything else by a digest.
phimode
Package phimode is PHI mode's serve job (HC-P09): in an org with settings.phi_mode on, once an action is sealed and no read-back or L2 job still needs it, its stored request, result, error message and witness detail are replaced by ids and digests (internal/phi), and its policy input is cleared.
Package phimode is PHI mode's serve job (HC-P09): in an org with settings.phi_mode on, once an action is sealed and no read-back or L2 job still needs it, its stored request, result, error message and witness detail are replaced by ids and digests (internal/phi), and its policy input is cleared.
play
Package play is `deedglass play`: the 301 scene in a terminal, offline, with no Docker.
Package play is `deedglass play`: the 301 scene in a terminal, offline, with no Docker.
policy
Package policy compiles policies written in YAML into CEL programs (S10), evaluates actions against them with budgets and usage counters (S11), and will back stored versions (S12).
Package policy compiles policies written in YAML into CEL programs (S10), evaluates actions against them with budgets and usage counters (S11), and will back stored versions (S12).
policy/celexport
Package celexport writes a compiled policy's rules as plain CEL strings (S47).
Package celexport writes a compiled policy's rules as plain CEL strings (S47).
policy/usagetest
Package usagetest is the contract suite every policy.UsageStore passes: the in-memory store in internal/policy and the Postgres store in internal/store/policystore run the same sub-tests.
Package usagetest is the contract suite every policy.UsageStore passes: the in-memory store in internal/policy and the Postgres store in internal/store/policystore run the same sub-tests.
policyapi
Package policyapi mounts S12's policy routes (contract §9): policies and immutable versions, activation and deactivation sealed as deeds, the active set, and the lint, dry-run and test endpoints.
Package policyapi mounts S12's policy routes (contract §9): policies and immutable versions, activation and deactivation sealed as deeds, the active set, and the lint, dry-run and test endpoints.
recordexport
Package recordexport writes sealed Deedglass records in other formats (TY-06, DL-109): the OpenTelemetry GenAI semantic conventions (OTLP/JSON), OCSF 1.9 API Activity events, a W3C PROV-JSON document, and FHIR R4 AuditEvent and Provenance (internal/fhirexport).
Package recordexport writes sealed Deedglass records in other formats (TY-06, DL-109): the OpenTelemetry GenAI semantic conventions (OTLP/JSON), OCSF 1.9 API Activity events, a W3C PROV-JSON document, and FHIR R4 AuditEvent and Provenance (internal/fhirexport).
scan
Package scan is `deedglass scan` (S32 §3.13): a local, offline, read-only report of what an agent setup can change.
Package scan is `deedglass scan` (S32 §3.13): a local, offline, read-only report of what an agent setup can change.
securitypack
Package securitypack answers the question a security reviewer asks a team that ships agents: how do you control what your AI agents do? (S51).
Package securitypack answers the question a security reviewer asks a team that ships agents: how do you control what your AI agents do? (S51).
securitypack/pgsource
Package pgsource collects a security pack's facts from Deedglass's own database (S51 §3.2): one REPEATABLE READ READ ONLY org transaction for the rows (a consistent snapshot), each collector in its own savepoint so one that fails is Can't tell without taking the others down, plus the Ledger's chain check and seal keys.
Package pgsource collects a security pack's facts from Deedglass's own database (S51 §3.2): one REPEATABLE READ READ ONLY org transaction for the rows (a consistent snapshot), each collector in its own savepoint so one that fails is Can't tell without taking the others down, plus the Ledger's chain check and seal keys.
securitypackapi
Package securitypackapi is the security review pack's HTTP routes (S51 §3.4): the free readiness view (GET /v1/security_pack/readiness) and the Pro pack build (POST /v1/security_pack), which answers with the folder as a tar stream.
Package securitypackapi is the security review pack's HTTP routes (S51 §3.4): the free readiness view (GET /v1/security_pack/readiness) and the Pro pack build (POST /v1/security_pack), which answers with the folder as a tar stream.
setup
Package setup is `deedglass init` (S32 §3.9): each step is a function that returns a StepResult; the CLI only renders.
Package setup is `deedglass init` (S32 §3.9): each step is a function that returns a StepResult; the CLI only renders.
shellguard
Package shellguard reads a shell command line before an agent runs it and names the parts that would destroy database data: ORM resets and rollbacks, dropdb, and SQL with DROP, TRUNCATE or an UPDATE or DELETE that touches every row (ADR-104).
Package shellguard reads a shell command line before an agent runs it and names the parts that would destroy database data: ORM resets and rollbacks, dropdb, and SQL with DROP, TRUNCATE or an UPDATE or DELETE that touches every row (ADR-104).
sqlguard
Package sqlguard tokenizes and classifies SQL in pure Go, so policies can read what a statement would do (read, write, DDL, server code, several statements) before the Gate runs it.
Package sqlguard tokenizes and classifies SQL in pure Go, so policies can read what a statement would do (read, write, DDL, server code, several statements) before the Gate runs it.
store
Package store owns the control-plane Postgres: the pgx pool, the embedded forward-only migrations, org-scoped transactions under row-level security, and the repositories every other package uses (contract §4, ADR-019).
Package store owns the control-plane Postgres: the pgx pool, the embedded forward-only migrations, org-scoped transactions under row-level security, and the repositories every other package uses (contract §4, ADR-019).
store/learnstore
Package learnstore holds the Postgres adapters of Insights (S27, internal/learn): the replay input scanner, replay jobs and their claim, the shadow and stats aggregates, anomaly episodes and their history, Insights settings and learn_runs.
Package learnstore holds the Postgres adapters of Insights (S27, internal/learn): the replay input scanner, replay jobs and their claim, the shadow and stats aggregates, anomaly episodes and their history, Insights settings and learn_runs.
store/migrate
Package migrate is Deedglass's embedded, forward-only, checksummed migration runner (ADR-019).
Package migrate is Deedglass's embedded, forward-only, checksummed migration runner (ADR-019).
store/migrations
Package migrations holds the control-plane schema as embedded, forward-only SQL files (ADR-019).
Package migrations holds the control-plane schema as embedded, forward-only SQL files (ADR-019).
store/policystore
Package policystore keeps the policy engine's state in the control-plane Postgres.
Package policystore keeps the policy engine's state in the control-plane Postgres.
undoapi
Package undoapi is the impure half of S23's undo: it loads the original action's evidence from the Ledger, reads the customer database's catalog and rows through the Postgres connector, plans and checks with internal/witness/undo (pure), and runs the undo as a Gate action: the HTTP routes (preview, run), the executor the Gate calls for <connector>.undo, the internal resolver that only the console principal reaches, and the approval context section "undo".
Package undoapi is the impure half of S23's undo: it loads the original action's evidence from the Ledger, reads the customer database's catalog and rows through the Postgres connector, plans and checks with internal/witness/undo (pure), and runs the undo as a Gate action: the HTTP routes (preview, run), the executor the Gate calls for <connector>.undo, the internal resolver that only the console principal reaches, and the approval context section "undo".
vault
Package vault keeps connector credentials (S16, contract §2 and §4): AES-256-GCM envelope encryption with one data key per credential version, a key ring for rotation, and redaction of credential values everywhere else.
Package vault keeps connector credentials (S16, contract §2 and §4): AES-256-GCM envelope encryption with one data key per credential version, a key ring for rotation, and redaction of credential values everywhere else.
vault/keyring
Package keyring parses DEEDGLASS_VAULT_KEY: a ring of 1–4 comma-separated base64 keys of exactly 32 bytes.
Package keyring parses DEEDGLASS_VAULT_KEY: a ring of 1–4 comma-separated base64 keys of exactly 32 bytes.
weekly
Package weekly is "What your agents did this week" (S52 §3.1, ADR-101): the summary of one org's week or month, built from its own records.
Package weekly is "What your agents did this week" (S52 §3.1, ADR-101): the summary of one org's week or month, built from its own records.
weekly/pgsource
Package pgsource reads a weekly summary's facts from Deedglass's own database (S52 §3.1): one REPEATABLE READ READ ONLY org transaction (RLS on) for the rows, plus the Ledger's chain check.
Package pgsource reads a weekly summary's facts from Deedglass's own database (S52 §3.1): one REPEATABLE READ READ ONLY org transaction (RLS on) for the rows, plus the Ledger's chain check.
weeklyapi
Package weeklyapi is the weekly summary's routes (S52 §3.1): GET /v1/weekly (the Console's This week card and the API's summary), POST /v1/weekly/email (a person turns their Monday email on or off), and the one-click page the email links to (GET and POST /weekly/off).
Package weeklyapi is the weekly summary's routes (S52 §3.1): GET /v1/weekly (the Console's This week card and the API's summary), POST /v1/weekly/email (a person turns their Monday email on or off), and the one-click page the email links to (GET and POST /weekly/off).
witness
Package witness decides what actually happened (contract §6): it compares what a tool reported with what the target shows, and returns a verdict with a level and a method.
Package witness decides what actually happened (contract §6): it compares what a tool reported with what the target shows, and returns a verdict with a level and a method.
witness/l2
Package l2 is the Witness's L2 level (S21): it compares what a Postgres statement should have touched (the footprint) with what Postgres's change log shows the transaction committed (the frame the decoder bound to the action), and turns the difference into reasons and a diff.
Package l2 is the Witness's L2 level (S21): it compares what a Postgres statement should have touched (the footprint) with what Postgres's change log shows the transaction committed (the frame the decoder bound to the action), and turns the difference into reasons and a diff.
witness/undo
Package undo plans the undo of a Postgres write (S23): it reads what Postgres committed for the original action (the decoder's row images, never what the agent said), collapses the transaction to its net effect per row, and turns that into a plan of single-row steps, the guards that must hold before any step runs, and a digest that pins both.
Package undo plans the undo of a Postgres write (S23): it reads what Postgres committed for the original action (the decoder's row images, never what the agent said), collapses the transaction to its net effect per row, and turns that into a plan of single-row steps, the guards that must hold before any step runs, and a digest that pins both.
pkg
deedglass
Package deedglass is the Go client for a Deedglass server.
Package deedglass is the Go client for a Deedglass server.
deedglass/webhook
Package webhook signs and verifies Deedglass webhook deliveries.
Package webhook signs and verifies Deedglass webhook deliveries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL