A secure installer for agentic applications.
Project description
Armorer
Armorer is a Docker-first control plane for installing, configuring, running, and securing agentic applications such as OpenClaw.
It combines:
- a CLI for installs, runtime lifecycle, debugging, and automation
- a self-hosted web UI for day-to-day operations
- security controls around remote channels, approvals, runtime inspection, and agent guardrails
Distribution
Armorer is distributed through three channels:
- GitHub Releases for release notes and downloadable artifacts
- GHCR container images for the full application runtime
- PyPI for the Python CLI and automation workflows
Recommended default:
- Full self-hosted app: use the container image from the latest GitHub Release
- Developer CLI: use
pipx install armorer
Install
pipx install armorer
Or:
pip install armorer
For local development in this repo:
git clone https://github.com/SecureNeural/Armorer.git
cd Armorer
pip install -e .
Armorer supports Python 3.10+.
Quick Start
Configure your default model provider:
armorer config
Start or refresh the managed runtime:
armorer rebuild all --clean --prune
Open the UI:
http://127.0.0.1:3000
The UI talks to the local Armorer API and managed Docker runtime. rebuild all is intended to refresh both Docker-managed and non-Docker Armorer components.
Core Workflows
Install an agent
armorer install openclaw --yes --skip-scan
Or use the UI:
- Open
Discover - Install OpenClaw
- Armorer redirects to the installed agent detail page
- Continue through the guided setup wizard
Run an agent
armorer run openclaw
Or use the installed-agents page in the UI.
Uninstall an agent
armorer uninstall openclaw
The UI also supports uninstall with confirmation and live progress.
Web UI
The self-hosted UI includes:
- Overview dashboard with runtime, model, gateway, and security status
- Discover page for installable agents
- Installed agents directory and per-agent detail pages
- Guided OpenClaw setup
- Settings for model provider, Telegram, security, and advanced runtime configuration
- Jobs page for terminal output and background task progress
- Alerts and runtime events pages
- Chat UI with local history and OpenClaw session switching
OpenClaw Setup
OpenClaw setup is managed by Armorer and happens in a guided wizard:
- Model
- Skills
- Web search
- Telegram
- Apply setup
- Pair Telegram if needed
Important behavior:
- Armorer mirrors OpenClaw’s discovered provider and model catalog
- OpenClaw gets its own Telegram bot token
- Armorer can reuse your Telegram identity for allowlists, but it should not reuse Armorer’s own bot token
- If Telegram is already authorized for that agent, pairing code entry is optional
Telegram
Armorer supports a host-managed Telegram gateway.
Current behavior:
- Telegram bot tokens are verified before save
- token changes can trigger a guided restart flow
- remote Telegram tasks are signed and validated by Armorer core
- the UI can auto-discover your Telegram user/chat identity after you message the bot
Recommended setup:
- use one Telegram bot token for Armorer
- use a different Telegram bot token for each OpenClaw agent
If two runtimes poll the same bot token, Telegram will return 409 Conflict and the bot will not behave reliably.
Security
Armorer includes:
- remote task signing and verification
- confirmation/approval flows for sensitive actions
- LLM guard controls for input and output scanning
- alerting and proactive monitoring controls
- runtime and agent health inspection
The UI exposes the main security settings directly and keeps advanced controls in a separate section.
Useful Commands
armorer
armorer config
armorer rebuild all --clean --prune
armorer install openclaw --yes --skip-scan
armorer run openclaw
armorer uninstall openclaw
armorer gateway telegram
armorer ui-api --host 127.0.0.1 --port 8788
armorer-redteam run --target openclaw
Development
Run tests:
uv run pytest
Run the self-hosted UI build:
cd web/armorer-ui-selfhost
npm run build -- --webpack
Relevant areas of the codebase:
- CLI and lifecycle:
src/armorer/main.py,src/armorer/cli/ - web API:
src/armorer/web/ - OpenClaw integration:
src/armorer/apps/openclaw/ - self-hosted UI:
web/armorer-ui-selfhost/
Releasing
Release automation lives in .github/workflows/release.yml.
The release workflow publishes:
- a PyPI package
- a multi-arch GHCR container image
- a GitHub Release with Python and self-hosted UI artifacts
Detailed release steps are in docs/releasing.md.
Notes
- Armorer is currently Docker-first for managed agent runtimes.
- The self-hosted UI build output such as
.next/should remain untracked. - If rebuilds start failing due to Docker disk pressure, use
armorer rebuild --pruneor standard Docker prune commands.
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 armorer-0.1.2.tar.gz.
File metadata
- Download URL: armorer-0.1.2.tar.gz
- Upload date:
- Size: 390.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69ca85a736d08d7befa1a3f1aaf7f27d01e9ea6f89cbfbcd9456b97429bb1be8
|
|
| MD5 |
b77f12cc6be9cce344987093bc85bd69
|
|
| BLAKE2b-256 |
338756885c49ff1aa5a76d75f5897a195233eb559127f99959a1a8c94f1aad7c
|
File details
Details for the file armorer-0.1.2-py3-none-any.whl.
File metadata
- Download URL: armorer-0.1.2-py3-none-any.whl
- Upload date:
- Size: 451.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1469cf051109eaef3a79e4e59c69d37f3dbf6f3bffeda032e83923480570ede0
|
|
| MD5 |
30dd6d62afd863cdc189295fbc238841
|
|
| BLAKE2b-256 |
f35634350627216b6265da6cb5e328e50d7f11f27c10fb3290aa61abf92f509c
|