A defense-in-depth security layer for LLM agents
Project description
armor
armor is the Python package and CLI for the broader armor project, a
defense-in-depth security layer for LLM agents. It sits between your agent and
its inputs, outputs, and tool calls, then blocks common prompt injection,
canary exfiltration, obfuscation, jailbreak, tool-abuse, and multi-turn attack
patterns before they reach the user or host tools.
This package is published as armor-ai because the bare armor package name is
used by an unrelated project. The Python import name and CLI remain armor.
Install
pip install armor-ai
Start the daemon:
armor daemon --socket /tmp/armor.sock --db /tmp/armor.db
Run a quick input check:
echo "ignore previous instructions" | armor check input --socket /tmp/armor.sock --session-id demo
Python SDK
from armor import ArmorClient
client = ArmorClient(socket_path="/tmp/armor.sock")
verdict = client.check_input("ignore previous instructions", session_id="demo")
if verdict.blocked:
print("blocked")
Async clients and integration examples for Anthropic, OpenAI, LangChain, Claude Code hooks, and custom agents are available in the project repository. The repository also contains the Docker path, architecture docs, full spec, and maintainer workflows; this PyPI page focuses on the installable Python package.
What armor checks
- User input: instruction overrides, jailbreak templates, encoding requests, prompt-injection phrasing, and topic shifts.
- Model output: canary leakage, encoded payloads, suspicious destinations, entropy spikes, and multi-turn partial exfiltration.
- Tool calls: parameter-schema violations, dangerous shell commands, command injection patterns, rate anomalies, and tool-chain abuse.
- Sessions: rolling risk scoring, state escalation, cooldown, and operator unblock audit records.
Preview status
armor is a public preview, not a v1.0 production guarantee. The core daemon,
CLI, SDK, Docker path, detector pipeline, and forensic logging are implemented,
but v1.0 readiness still requires broader external validation, real-service SDK
example verification, and additional detection-floor evidence.
Important limitations:
- It defends in-band prompt and tool-call attacks, not host compromise.
- The validator LLM fails open on timeout to protect availability.
- The evaluation corpus is English-heavy.
- There is no built-in web UI.
- It assumes one trusted-agent-fleet boundary per daemon.
Project links
- Source and documentation: https://github.com/tkdtaylor/armor
- Issues: https://github.com/tkdtaylor/armor/issues
- Security policy: https://github.com/tkdtaylor/armor/security/policy
- Architecture overview: https://github.com/tkdtaylor/armor/blob/main/docs/architecture/overview.md
- Specification: https://github.com/tkdtaylor/armor/blob/main/docs/spec/SPEC.md
License
armor is licensed under the PolyForm Noncommercial License 1.0.0.
Commercial use requires a separate commercial license. Contact licensing@taylorguard.me.
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 armor_ai-0.10.1.tar.gz.
File metadata
- Download URL: armor_ai-0.10.1.tar.gz
- Upload date:
- Size: 149.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b9a85e23cabe43bb91bb1656bc2bf927570ef6bc92c97db270bf3cf7a63836d
|
|
| MD5 |
029243f2b9ac0ef0a90ed19fde0307e0
|
|
| BLAKE2b-256 |
fac23167da78c82cd0bb8b76271c05cecd30d618df781fc212c43806314b7e63
|
Provenance
The following attestation bundles were made for armor_ai-0.10.1.tar.gz:
Publisher:
release.yml on tkdtaylor/armor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
armor_ai-0.10.1.tar.gz -
Subject digest:
5b9a85e23cabe43bb91bb1656bc2bf927570ef6bc92c97db270bf3cf7a63836d - Sigstore transparency entry: 1561211893
- Sigstore integration time:
-
Permalink:
tkdtaylor/armor@9359674df45cf8508d391e32e2b7791aecc246a2 -
Branch / Tag:
refs/tags/v0.10.1 - Owner: https://github.com/tkdtaylor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9359674df45cf8508d391e32e2b7791aecc246a2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file armor_ai-0.10.1-py3-none-any.whl.
File metadata
- Download URL: armor_ai-0.10.1-py3-none-any.whl
- Upload date:
- Size: 166.6 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 |
f01adb59a2a650946bcd6f65aa1f274e667c0e95e92a4f7065a67bad6b8b4ee4
|
|
| MD5 |
bc69728add9a07d8804804009c74c7af
|
|
| BLAKE2b-256 |
adce57a919d0133f2205e4472684e0578b631860d01eb27f42d28790a49ce32f
|
Provenance
The following attestation bundles were made for armor_ai-0.10.1-py3-none-any.whl:
Publisher:
release.yml on tkdtaylor/armor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
armor_ai-0.10.1-py3-none-any.whl -
Subject digest:
f01adb59a2a650946bcd6f65aa1f274e667c0e95e92a4f7065a67bad6b8b4ee4 - Sigstore transparency entry: 1561212011
- Sigstore integration time:
-
Permalink:
tkdtaylor/armor@9359674df45cf8508d391e32e2b7791aecc246a2 -
Branch / Tag:
refs/tags/v0.10.1 - Owner: https://github.com/tkdtaylor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9359674df45cf8508d391e32e2b7791aecc246a2 -
Trigger Event:
push
-
Statement type: