Humanbound — open-source AI agent red-team engine, SDK, and CLI.
Project description
humanbound
Open-source AI agent red-team engine, SDK, and CLI.
Runs locally or against the Humanbound Platform. No login required to start.
Quick Start · CLI · SDK · Documentation · Contributing
📖 Full documentation lives at docs.humanbound.ai — this README covers the essentials; the docs have the depth.
Quick Start
Install
pip install humanbound # CLI + SDK, core deps
pip install humanbound[engine] # + OpenAI / Anthropic / Gemini providers
pip install humanbound[firewall] # + humanbound-firewall runtime
pip install humanbound[engine,firewall] # everything
CLI usage
# Configure your LLM provider
export HB_PROVIDER=openai
export HB_API_KEY=sk-...
# Run a security test
hb test --endpoint ./bot-config.json --repo . --wait
# View results
hb posture # security score (0-100, A-F)
hb logs # conversation logs
hb report -o report.html # HTML report
hb guardrails -o rules.yaml # firewall rules
Full air-gap with Ollama — zero external API calls:
export HB_PROVIDER=ollama
export HB_MODEL=llama3.1:8b
hb test --endpoint ./bot-config.json --scope ./scope.yaml --wait
Python SDK
from humanbound import Bot, LocalRunner, OwaspAgentic, TestingLevel, EngineCallbacks
# Compose your own test pipeline
bot = Bot(endpoint="https://my-agent/chat", api_key="...")
class Callbacks(EngineCallbacks):
def on_finding(self, insight): ...
def on_progress(self, pct): ...
runner = LocalRunner()
# See docs.humanbound.ai for the full example
Stability contract
| Import path | Stability |
|---|---|
from humanbound import X |
Stable — semver-protected |
from humanbound.<module> import Y |
Stable — semver-protected |
from humanbound_cli.* import Z |
Internal — may change any release, do not import from user code |
The full Tier-by-Tier walkthrough, orchestrator authoring guide, Platform integration, and API reference all live on docs.humanbound.ai.
What's shipping in 2.0
- Clean name:
humanboundis the new PyPI install. The oldhumanbound-cliis a transitional stub that will be yanked after 2026-06-20. - Public SDK namespace alongside the CLI — use the CLI or drive the engine from Python. Both share the same implementation, so they can't drift.
- Firewall integration:
pip install humanbound[firewall]pulls the renamedhumanbound-firewall(formerlyhb-firewall) alongside the CLI.
See CHANGELOG.md for the full 2.0.0 release notes.
Contributing
Contributions welcome. See CONTRIBUTING.md for the dev loop, release process, and CLA requirement (see CLA.md).
- 🐛 Report a bug
- 💡 Request a feature
- 🔒 Report a security issue — not via public Issues
- 💬 Join Discord
License
Apache-2.0. Free to use in any context — commercial or open-source — with attribution. See TRADEMARK.md for the trademark policy. The code is open; the name is not.
The sibling project humanbound-firewall
is dual-licensed (AGPL-3.0 + commercial) — different product, different
license strategy.
Humanbound is the trading name of AI and Me Single-Member Private Company, incorporated in Greece.
Project details
Release history Release notifications | RSS feed
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 humanbound-2.0.1.tar.gz.
File metadata
- Download URL: humanbound-2.0.1.tar.gz
- Upload date:
- Size: 260.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a938b14d1496c7ec9a76ec6883edfed98be1db906556a53a323ea1054cb9b6f
|
|
| MD5 |
98129405a3e3936495055af616c6c2a0
|
|
| BLAKE2b-256 |
b4b7a1801da46cbf4677b0ffe8014d79af7153505242f2a257157e7466d613c2
|
Provenance
The following attestation bundles were made for humanbound-2.0.1.tar.gz:
Publisher:
release.yml on humanbound/humanbound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
humanbound-2.0.1.tar.gz -
Subject digest:
1a938b14d1496c7ec9a76ec6883edfed98be1db906556a53a323ea1054cb9b6f - Sigstore transparency entry: 1358546313
- Sigstore integration time:
-
Permalink:
humanbound/humanbound@772ed92835c919df544c24927eb2ce3e0901b10b -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/humanbound
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@772ed92835c919df544c24927eb2ce3e0901b10b -
Trigger Event:
push
-
Statement type:
File details
Details for the file humanbound-2.0.1-py3-none-any.whl.
File metadata
- Download URL: humanbound-2.0.1-py3-none-any.whl
- Upload date:
- Size: 309.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51105af02b86de3e811650affd1eacbcb040c81054116e7ff6927e2fd0a3038e
|
|
| MD5 |
811cb1132b6dd9567bd6ccfcbfe1d1c2
|
|
| BLAKE2b-256 |
4f48953dd778b147dfe00f820c9d5c90f860add50859bc316ff3795736b4c145
|
Provenance
The following attestation bundles were made for humanbound-2.0.1-py3-none-any.whl:
Publisher:
release.yml on humanbound/humanbound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
humanbound-2.0.1-py3-none-any.whl -
Subject digest:
51105af02b86de3e811650affd1eacbcb040c81054116e7ff6927e2fd0a3038e - Sigstore transparency entry: 1358546430
- Sigstore integration time:
-
Permalink:
humanbound/humanbound@772ed92835c919df544c24927eb2ce3e0901b10b -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/humanbound
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@772ed92835c919df544c24927eb2ce3e0901b10b -
Trigger Event:
push
-
Statement type: