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.3-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.3-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl (5.8 MB view details)

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

File details

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

File metadata

  • Download URL: heimdall_egress-0.1.3-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.3-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc6313e7e030c3236257c366fd4ef0801a0ff43fa28445e234189bff06ba303c
MD5 5d0a1469683fba50eb76b207d524829e
BLAKE2b-256 a4e549efe74eb4e71290799a528ff97e6840e020546bebf8262a2a1cd4739e34

See more details on using hashes here.

File details

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

File metadata

  • Download URL: heimdall_egress-0.1.3-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 5.8 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.3-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7cfdbb70f073c585f7da0fccc9402e68be3c497e0308c53c0f2d8b80346ed77b
MD5 61f815ba2a026c92f702eac947714eea
BLAKE2b-256 2e4bad040fe2df6d72c3c352e5cea4a47c71d44ccc03f74aa53e886414bd1f70

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.4

2 files

This release

0.1.3 This release

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