ArmorIQ SDK
Build secure AI agents with cryptographic intent verification.
The ArmorIQ SDK enables developers to build AI agents with built-in security and auditability. Just one API key - no cloud complexity.
Why ArmorIQ?
- Simple - Just one API key, no cloud credentials
- Secure - Cryptographic verification for every action
- Auditable - Complete execution trail
- Fast - Get started in 5 minutes
Installation
pip install armoriq-sdk
CLI commands are also available after install:
armoriq --help
Quick Start
1. Get Your API Key
Visit platform.armoriq.ai to generate your API key.
2. Initialize the Client
from armoriq_sdk import ArmorIQClient
client = ArmorIQClient(
api_key="ak_your_key_here",
user_id="your-user-id",
agent_id="your-agent-id"
)
Or load SDK settings from armoriq.yaml generated by the CLI:
from armoriq_sdk import ArmorIQClient
client = ArmorIQClient.from_config("armoriq.yaml")
3. Capture Your Plan
plan = {
"goal": "Get weather forecast",
"steps": [
{
"action": "get_weather",
"tool": "weather_api",
"inputs": {"city": "Boston"}
}
]
}
plan_capture = client.capture_plan(
llm="gpt-4",
prompt="What's the weather in Boston?",
plan=plan
)
4. Get Intent Token
token = client.get_intent_token(plan_capture)
5. Invoke Actions
result = client.invoke(
mcp_name="weather-mcp",
action="get_weather",
intent_token=token,
inputs={"city": "Boston"}
)
print(result)
Observability
The SDK emits one native OpenTelemetry span tree per agent run — traces, model calls, policy decisions, and tool/command execution — exported over OTLP protobuf. There is no separate JSON telemetry pipeline and no pipeline selector to configure; native OTel is the only path.
Choose one of three exporter destinations via ObservabilityOptions:
from armoriq_sdk import ArmorIQClient
from armoriq_sdk.models import ObservabilityOptions
# 1. ArmorIQ OTLP (default) — spans go to the ArmorIQ backend's
# POST /v1/traces receiver, authenticated with your API key.
client = ArmorIQClient(
api_key="ak_your_key_here",
observability=ObservabilityOptions(exporter="armoriq"),
)
# 2. Generic external OTLP — send spans to any OTLP/HTTP collector
# (an OpenTelemetry Collector, Langfuse, etc).
client = ArmorIQClient(
api_key="ak_your_key_here",
observability=ObservabilityOptions(
exporter="external",
endpoint="https://otel-collector.example.com/v1/traces",
),
)
# 3. Caller-owned tracer provider — the SDK uses your existing
# TracerProvider and never mutates or shuts it down. Because the SDK
# cannot attach its export-time policy re-check to a pipeline it does
# not own, this mode is capped at `metadata`: prompts, completions,
# tool arguments and tool results are never captured, whatever your
# organization's lease allows.
client = ArmorIQClient(
api_key="ak_your_key_here",
observability=ObservabilityOptions(
exporter="provider",
tracer_provider=my_tracer_provider,
),
)
Per-session opt-out, without changing the exporter, via
SessionOptions.observability_enabled=False.
Capture depth (off, metadata, enhanced, debug) is bounded by your
organization's policy first; local settings can only lower it, never raise it.
exporter="provider" lowers it further, to metadata at most.
Breaking change (0.7.0): the legacy in-memory JSON recorder/shipper pipeline,
ObservabilityOptions.pipeline, and theARMORIQ_OTEL_PIPELINEenv var are removed. See CHANGELOG.md for the full list of removed APIs and their replacements.
Documentation
For complete documentation, visit docs.armoriq.ai
- Framework adapter compatibility — tested Python framework versions, lifecycle hooks, and limits for the zero-touch OpenTelemetry adapters.
Links
License
MIT License - see LICENSE file for details.
Release files for armoriq-sdk-dev 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| armoriq_sdk_dev-0.8.0.tar.gz | 219.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| armoriq_sdk_dev-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 402.1 kB
Release files / armoriq_sdk_dev-0.8.0.tar.gz
| Download URL | armoriq_sdk_dev-0.8.0.tar.gz |
|---|---|
| Size | 219.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce58ad8e10daac13ac7cabedff19f1e27851469c07c7699883e0a3a35984af1c
|
|
BLAKE2b-256 checksum How to use checksums |
69bb01c6dc7621686a1e05122b7857a53ee0385abd0c28f860ec1ec651a0cb85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.14
|
Release files / armoriq_sdk_dev-0.8.0-py3-none-any.whl
| Download URL | armoriq_sdk_dev-0.8.0-py3-none-any.whl |
|---|---|
| Size | 182.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab55671e45b6da1f3267a99df31c8fec65a209f5c31779a9775332eafe20fd2a
|
|
BLAKE2b-256 checksum How to use checksums |
8ccf34a10b6e3f984b23a99fe9c0b3a45b97896a435a5128234cee700a941cb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.14
|