Watchlight AI Enclave
Run an agent in a box it cannot talk its way out of, and get the evidence your security review asks for — checkable offline, by someone who doesn't trust you.
You hand an agent a repo and a task. It can edit files, call tools, and reach the network. Two questions follow immediately, and neither is answerable after the fact by reading logs the agent could have written:
- What did it actually try to reach?
- What was it allowed to do, and who decided?
Enclave runs the agent in an isolated sandbox whose only route out is a recording egress guard, and seals what happened into a hash-chained evidence bundle you can hand to someone who doesn't trust you.
pip install watchlight-enclave
wl-enclave init # writes enclave.yaml, scaffolds a policy
wl-enclave keygen # one key, once; runs seal signed bundles
wl-enclave run --purpose "Fix PR #412" # runs the agent in a sandbox
wl-enclave verify runs/<id>/bundle # checks the evidence, offline
wl-enclave hosts --since 2026-11-03 # what did it actually reach?
That last one is the question a security review opens with, and the answer comes out of verified bundles rather than out of the agent's own logs:
$ wl-enclave hosts --since 2026-11-03
wl-enclave: runs 14 verified
wl-enclave: coverage http_connect only; icmp, raw_tcp, udp had no route and are not recorded
HOST PORT VERDICT TRIES SENT RECV LAST IP
pastebin.com 443 deny 20 - - -
example.com 443 allow 20 34.4 kB 128.2 kB 172.66.147.243
wl-enclave: 2 host/verdict pair(s) over 40 attempt(s)
If a run's bundle doesn't verify, its hosts are left out of that table and the count above it says so. A short host list is the one way this command could mislead you, so it refuses to be quietly short.
One rule drives the whole design: a bundle must never be able to understate
what happened. A bundle that quietly drops records while still looking
complete is worse than one that admits a gap. The first gets a reviewer to sign
off; the second gets them to ask a question. That's why verify gives four
answers instead of two: failed, uncontained, incomplete, ok. Only ok
exits 0.
verify needs no account, no network and no Watchlight.
Requirements
Python 3.10+, and a container runtime (Docker or Colima) for run. verify
needs neither.
Documentation
Everything lives in the repository: the quickstart, what a bundle proves, the trust boundaries, the control vocabulary, egress coverage, and how to write a driver for a new sandbox.
Documentation: https://docs.watchlight.ai/enclave
Source: https://github.com/watchlight-ai-beacon/watchlight-enclave
- Quickstart
- What a bundle proves, and what it does not
- Changelog — including the three contracts this project versions separately
- Security policy
Status
Early development, pre-1.0. The CLI, the enclave.yaml schema and how strictly
verify reads a bundle can each change in a minor release, and the changelog
always says which of the three moved. 1.0 waits on the manifest reaching its
final shape.
One limit worth knowing up front. A signature means this bundle is the one
that key sealed, and nobody has touched it since. It does not mean this
bundle is everything that happened. Whoever holds the key can cut the chain
short and re-seal it, which is why the format already carries a cosignatures
slot for a witness it doesn't have yet. The repository is blunt about this one
and the rest of the known gaps.
License
Apache-2.0. The CLI, the evidence format and its offline verifier are all open. Two compiled dependencies — the Cedar decision engine and the MCP policy enforcement runtime — ship under the Watchlight Developer Edition license, free to use including in production and commercially.
Metadata
Release files for watchlight-enclave 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| watchlight_enclave-0.2.1.tar.gz | 159.7 kB | With provenance | Details for watchlight_enclave-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| watchlight_enclave-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for watchlight_enclave-0.2.1-py3-none-any.whl |
Total release size: 239.1 kB
Release files / watchlight_enclave-0.2.1.tar.gz
| Download URL | watchlight_enclave-0.2.1.tar.gz |
|---|---|
| Size | 159.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4184e5f8da7a8ff8b62c82188011c3fc805af0e173df6f8f4c73ae7bd3c5e5ff
|
|
BLAKE2b-256 checksum How to use checksums |
aae4180cc112bda982fbfea249cfa70541eefc231f10e694e3f05034b6c2a9e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logRelease files / watchlight_enclave-0.2.1-py3-none-any.whl
| Download URL | watchlight_enclave-0.2.1-py3-none-any.whl |
|---|---|
| Size | 79.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4763c727d856ad6be38c6f7ea9d6fff205cef6fb5ccd665bf21198cd4609c3ff
|
|
BLAKE2b-256 checksum How to use checksums |
59f80b06e761ccd98e6e7dbed5879f02bddc881c578467b5e52b88e235dcb0f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logSecurity for watchlight-enclave 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for watchlight_enclave-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.