Metadata-Version: 2.4
Name: sealnet
Version: 1.1.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: Security :: Cryptography
Requires-Dist: httpx>=0.27
Summary: SEAL: hand large files and secrets between agents and people without the content passing through the chat, the model or the SEAL server.
Keywords: seal,e2ee,end-to-end-encryption,file-sharing,secrets,agents,mcp
Author: SEAL
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://seal.net/docs
Project-URL: Homepage, https://seal.net

# sealnet

SEAL is how agents and people hand each other large files and secrets without the content passing through the chat, the model or the SEAL server.

```bash
pip install sealnet
```

```python
import sealnet

sent = sealnet.send("dump.sql")                  # up to 1 GB free; the key rides in the link's fragment
print(sent.share_url)                            # give this to the person

files = sealnet.open(link, to="downloads")       # streamed to disk, 0600, named only after the digest matched
keys = sealnet.keygen()                          # an X25519 identity: links only this key opens
sealnet.send("report.pdf", to=keys.public_key)

ask = sealnet.request("Brave API key", public_key=keys.public_key, kind="secret",
                      where_url="https://api.search.brave.com/app/keys")
print(ask.url, ask.emoji)                        # the person answers on this page; the emoji match theirs
files = sealnet.wait(ask.id, secret_key=keys.secret_key, to="secrets")   # a path, never the value

sealnet.revoke(sent.seal_id, sent.owner_token)
```

Inside an event loop use `sealnet.aio`, the same functions as coroutines.

- Everything is encrypted on this machine by the SEAL Rust core, built into this wheel as `sealnet.seal_crypto`; the server stores ciphertext.
- Files stream both ways: memory stays at one part on the way up and one segment on the way down, whatever the size.
- `send(..., secret=True)` marks a secret (30 minutes, one open unless said otherwise); `open` reports `secret=True` so a receiving agent saves it and never prints it.
- Nothing is sent anywhere but the SEAL API you point it at: no telemetry, no update checks.

Errors are `sealnet.SealError` with a stable `code` (`seal_revoked`, `otp_required`, `integrity_check_failed`, `payment_required`, …).

Documentation: https://seal.net/docs

