agent-packet
Conservatively filtered task packets for Hermes, OpenClaw, and other AI agents.
Agents should not get raw home directories, .env files, or API keys when you hand work to an untrusted/sandboxed worker. agent-packet builds a portable, inspectable packet:
- allowlisted files only
- private paths denied (
private/,.env, keys, credentials) - files with secret-like strings blocked by default (optional explicit redaction)
- secret-like path components,
.env*files, key files, and URL userinfo blocked - external SHA-256 sidecar + tar.gz archive (no self-referential manifest hash)
- receiver validates the archive structure and listed file hashes before materializing
No network required. MIT. Python 3.10+.
Install
uv tool install agent-packet
Or with pipx:
pipx install agent-packet
For contributors working from this repository:
uv tool install ./packages/agent-packet
pip install -e "./packages/agent-packet[dev]"
Quick start (Hermes → OpenClaw)
# On the trusted Mac / Hermes side
agent-packet build \
--task "Review this module and propose 3 safe local improvements. Do not request secrets." \
--root ~/my-project \
--include src \
--include README.md \
--out /tmp/oc-packet
# Inspect what would leave the machine
agent-packet inspect /tmp/oc-packet/packet.tar.gz --json | head
# On the worker / OpenClaw side
agent-packet materialize /tmp/oc-packet/packet.tar.gz --dest /tmp/oc-work \
--expect-sha256 "$EXPECTED_PACKET_SHA256"
cat /tmp/oc-work/payload/TASK.md
When a file must be shared with a credential-shaped value removed, opt in explicitly:
agent-packet build --task "Review config" --root ./project --include config.py \
--redact-secrets --out /tmp/oc-packet
agent-packet materialize /tmp/oc-packet/packet.tar.gz --dest /tmp/oc-work \
--expect-sha256 "$EXPECTED_PACKET_SHA256"
Redaction is a leakage-reduction aid, not a semantics-preserving code transform. Review redacted files before asking a worker to build or execute them.
materialize refuses an existing destination, archive links, traversal, duplicate
members, links/special files, unexpected files, oversized compressed or
decompressed archives, and unsupported/oversized PAX metadata. It hashes one
private snapshot and parses those same bytes, so replacing the source path between
the two steps cannot change the materialized payload. Destination parents are
canonicalized before staging and again before the final rename. The manifest never
records the producer's absolute source path or names of omitted include paths.
build requires at least one explicit --include; root aliases such as
--include . are refused. Selecting the entire root requires the visibly
intentional --include-all flag. materialize requires an
expected digest by default; obtain it independently from the archive transport.
--accept-untrusted-archive retains structural and file-hash checks but cannot
authenticate a replacement archive.
--allow-binary only allows binary files past the type filter; binary content is
not secret-scanned. Use it only for reviewed, non-sensitive inputs.
Why this exists
Multi-agent setups (Hermes orchestrator + OpenClaw VPS worker, or any untrusted sub-agent) constantly leak context by accident:
- whole repo zips including
.env - chat paste with tokens
- “just send the folder”
agent-packet makes the selected boundary explicit and inspectable. Secret-like
text files are omitted by default; review the manifest counts and archive contents
before transport because heuristic detection can miss secrets.
CLI
| Command | Purpose |
|---|---|
agent-packet build |
Create packet + manifest + archive |
agent-packet materialize |
Extract + verify hashes |
agent-packet inspect |
Summarize manifest |
Agent usage contract
- Producer agent builds a packet for a specific task.
- Consumer agent only sees materialised
payload/. - Consumer returns results (and ideally an
agent-receipt). - Producer verifies receipt before trusting “done”.
Open core and paid work
The complete local CLI stays open source and offline-first. Teams can pay for a bounded workflow review, organisation-specific include/deny policies, CI or orchestrator integration, and support. The first offer is a manually delivered founding pilot, not a hosted dashboard.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_packet-0.1.0.tar.gz.
File metadata
- Download URL: agent_packet-0.1.0.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
687bd59774a752710653357b499e9b5443ec5982867595c9fbae098f8e3e3e2e
|
|
| MD5 |
d64770e6ee32b09701aa5a63c74b3466
|
|
| BLAKE2b-256 |
42ff0471e5194de0e2a26c78c913fcbec50bd389e0de22ec7523ddeedfde313f
|
Provenance
The following attestation bundles were made for agent_packet-0.1.0.tar.gz:
Publisher:
ci.yml on mauricemohr88-debug/agent-trust-kit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_packet-0.1.0.tar.gz -
Subject digest:
687bd59774a752710653357b499e9b5443ec5982867595c9fbae098f8e3e3e2e - Sigstore transparency entry: 2561753208
- Sigstore integration time:
-
Permalink:
mauricemohr88-debug/agent-trust-kit@f4c6e3ea6237d0d9f34c8d28cab718b72109a40e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mauricemohr88-debug
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@f4c6e3ea6237d0d9f34c8d28cab718b72109a40e -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_packet-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agent_packet-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3e07477646af9cbff59618779ded5c943950dbc59e43053800ed657d913d3c1
|
|
| MD5 |
9aa5fbe7039eff947815d3163bb69b45
|
|
| BLAKE2b-256 |
7c6b5bf161cff5c47d9add8accbddc49894f872bcfa85e1a830e8b21b075267b
|
Provenance
The following attestation bundles were made for agent_packet-0.1.0-py3-none-any.whl:
Publisher:
ci.yml on mauricemohr88-debug/agent-trust-kit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_packet-0.1.0-py3-none-any.whl -
Subject digest:
f3e07477646af9cbff59618779ded5c943950dbc59e43053800ed657d913d3c1 - Sigstore transparency entry: 2561754616
- Sigstore integration time:
-
Permalink:
mauricemohr88-debug/agent-trust-kit@f4c6e3ea6237d0d9f34c8d28cab718b72109a40e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mauricemohr88-debug
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@f4c6e3ea6237d0d9f34c8d28cab718b72109a40e -
Trigger Event:
push
-
Statement type: