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.1
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.1.tar.gz | 220.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| armoriq_sdk_dev-0.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 404.9 kB
Release files / armoriq_sdk_dev-0.8.1.tar.gz
| Download URL | armoriq_sdk_dev-0.8.1.tar.gz |
|---|---|
| Size | 220.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a23d2cf4fd78f2447ecd6ce0d4b54ebc8cfafbc9bee9b9e488575fa35949a4d5
|
|
BLAKE2b-256 checksum How to use checksums |
4696cae28192f47677f9c6dd2503b04f422c7abfa9d9d711b997ae634f9323aa
|
| 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.1-py3-none-any.whl
| Download URL | armoriq_sdk_dev-0.8.1-py3-none-any.whl |
|---|---|
| Size | 184.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d0044fe68d6ec87254a88db70f7c46031619a460d7a7f7c338b1d0010aba84e
|
|
BLAKE2b-256 checksum How to use checksums |
42e21ce7c0ffc1640797fea0cd7977d257ac2faf2e09b80d5751a340275236cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.14
|