umbra
docs
Name every command, then prove it.
umbra sits between semi-trusted automation and the host system. What you did not declare does not get through. Policy lives in a KDL guardfile rather than in code, enforced across two surfaces: subprocess execution and outbound HTTP.
If you are still deciding whether any of that is your problem, the case for umbra is the better place to start. These pages assume you already decided.
Synced from umbra cb89700, 2026-08-31. A copy, so the repository is the source of truth if the two disagree.
Getting started
Guides
Reference
- Policy Auth, deny, restrict, tiering.
- Op resolution Verbs, wildcards, unrecognised shapes.
- Request semantics How a mounted leaf assembles and fires.
- Complex actions Composite verbs and their five invariants.
- Describe model Generated visibility for a generated surface.
- Descriptors The spec-driven source without a CLI tree.
- Inline operations Descriptors stated directly in KDL.
- Body projection `map`, `set`, and pinned values.
- MCP Apps host The frames a rendered widget sends back, under the guardfile.
- Serving the granted surface The same grants projected into what a server advertises.
- Value providers `env`, `file`, `literal`, and minted tokens.
Concepts
- Architecture The two guarded surfaces and the shared core.
- Spec-driven verbs The three-layer engine behind the HTTP surface.
- Exec-dialect verbs The same grammar aimed at wrapped binaries.
- MCP-dialect verbs The same grammar aimed at upstream MCP servers.
- What an MCP call costs Measured per-call latency, and the daemon it did not warrant.
Contributing