Skip to main content

heimdall-egress

The official PyPI distribution of heimdall: a daemonless, command-scoped TCP/UDP proxy with optional transparent TLS evidence for Linux CLI tools and AI agents.

Install

Install the persistent CLI with the Python tool manager you already use:

# uv (recommended)
uv tool install heimdall-egress

# pipx
pipx install heimdall-egress

# pip inside an isolated environment
python -m pip install heimdall-egress

The package contains one static native binary selected by the wheel resolver. Official wheels support x86_64 and aarch64 Linux on glibc and musl systems, require Python 3.9 or newer, and do not run install hooks or download executable code during installation. macOS is not supported yet.

Verify the installed command:

heimdall --version

Run without installing

Use an ephemeral environment for help, version, configuration, and compatibility checks:

uvx --from heimdall-egress heimdall --version
pipx run --spec heimdall-egress heimdall --version

Ephemeral tool caches are not a stable privileged-authorization boundary. Use uv tool install, pipx install, a persistent virtual environment, or a native GitHub Release installation for real heimdall run sessions.

Quick start

Create the strict starter configuration and inspect readiness without changing network state:

heimdall init
heimdall agent

heimdall run needs one narrowly authorized setup entry point. For a persistent Python installation, print the exact bundled native path:

heimdall-egress --print-native-path

Authorize only that regular file followed by __setup-worker, as shown in the installation guide. Do not authorize the Python launcher, a virtual-environment glob, arbitrary Heimdall arguments, or a shell.

Then run one command through the selected policy:

heimdall run -- curl https://example.com
heimdall run --policy corp -- ssh internal.example.com

Inspect machine-readable evidence with ordinary Linux tools or the built-in log commands:

heimdall logs list --json
heimdall logs summary --run RUN_ID --json
heimdall logs query --run RUN_ID --kind flow.close --jsonl

Architecture

heimdall run -- COMMAND
        |
        +-- transient command cgroup + embedded eBPF links
        +-- per-run relay + fake DNS + JSONL writer
        `-- command tree
                `-- TCP/UDP -> policy -> SOCKS5, direct, or reject

The foreground CLI owns the complete session: cgroup, relay, DNS, eBPF maps and links, logs, child exit status, and teardown. The privileged setup worker only attaches eBPF, transfers owned file descriptors, drops privilege, and guards the command tree. No persistent Heimdall daemon or Web UI is installed or started in any mode.

Modes

Proxying, payload capture, and TLS plaintext observation are independent:

  • Proxy onlydecrypt.mode = "off" routes TCP/UDP while TLS remains opaque. Policies choose named SOCKS5 outbounds, direct egress, or rejection.
  • Bounded capturecapture.mode = "on" writes private, content-addressed evidence and JSONL references under the invoking user.
  • Runtime TLSdecrypt.mode = "runtime" observes supported OpenSSL APIs already loaded when the command starts without changing certificate trust.
  • Relay TLSdecrypt.mode = "relay" terminates and re-issues TLS inside the per-run relay using explicit user-owned CA material.

Selecting a mode is not proof that plaintext was observed. Use heimdall agent and emitted events as evidence. Certificate pinning, client-certificate mTLS, and unsupported TLS libraries remain outside the observation boundary.

Documentation

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

heimdall_egress-0.1.4-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl (6.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64musllinux: musl 1.2+ x86-64

heimdall_egress-0.1.4-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl (5.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.2+ ARM64

File details

Details for the file heimdall_egress-0.1.4-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: heimdall_egress-0.1.4-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 6.1 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heimdall_egress-0.1.4-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 69044b60f3beb19f2037a0132aff265a5e46da8f77bdd0f27a1c6e93391ab8b2
MD5 ca96114fae3ee2aa36a39e21ae7a1b7b
BLAKE2b-256 bef9d49c5b21c5bb28a76cb1372551b6b8dc5e60308dd0975c7634cca896ef72

See more details on using hashes here.

File details

Details for the file heimdall_egress-0.1.4-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: heimdall_egress-0.1.4-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for heimdall_egress-0.1.4-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 560f79bb8d306b5e86df5af628fc5d9ef4971bae34033a10a54a76fe6d8f4b82
MD5 72d680f40587dcad67c7629c169854e0
BLAKE2b-256 8114f0e0612d3c65f51b965041073d7dba12ee18a64e3f07dc5d1f9db5967419

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page