MOSS
Unsigned agent output is broken output.
MOSS (Message-Origin Signing System) provides cryptographic signing for AI agents. Every output is signed with ML-DSA-44 (post-quantum), creating non-repudiable execution records with audit-grade provenance.
ML-DSA-44 Parameter Sizes (FIPS 204)
| Parameter | Size |
|---|---|
| Public Key | 1312 bytes |
| Secret Key | 2560 bytes |
| Signature | 2420 bytes |
Install
pip install moss-sdk
Quick Start
MOSS works out of the box with zero configuration. No API key required for local signing.
from moss import sign, verify
# Sign any agent output (keys generated automatically)
result = sign(
output={"action": "transfer", "amount": 500},
agent_id="agent-finance-01",
context={"user_id": "u123"}
)
# [MOSS DEV MODE] Keys stored locally in ~/.moss/keys/
# Run log: ~/.moss/run.jsonl
# Verify: moss verify-log ~/.moss/run.jsonl
# For production (KMS, policies, audit): set MOSS_API_KEY
# result.envelope: MOSS Envelope with signature
# result.signature: ML-DSA-44 post-quantum signature
# result.allowed: True (or False if enterprise policy blocks)
# Verify offline - no MOSS servers required
verify_result = verify(result.envelope)
if verify_result.valid:
print(f"Signed by: {verify_result.subject}")
# Verify all signed actions
moss verify-log ~/.moss/run.jsonl
# ✓ 47 valid, ✗ 0 invalid
Local Mode (Default)
When no MOSS_API_KEY is set, MOSS operates in local mode:
| Feature | Behavior |
|---|---|
| Key Generation | ML-DSA-44 keypair created on first sign |
| Key Storage | ~/.moss/keys/{namespace}/{name}.json (AES-256-GCM encrypted) |
| Run Log | Auto-written to ~/.moss/run.jsonl (JSONL format) |
| Verification | Fully offline, no network required |
| Policy | Always allowed (no server-side policy engine) |
Configuration
| Environment Variable | Effect |
|---|---|
MOSS_KEY_PASSPHRASE |
Custom passphrase for key encryption |
MOSS_RUN_LOG |
Custom path for run log (default: ~/.moss/run.jsonl) |
MOSS_DISABLE_RUN_LOG=1 |
Disable automatic run log |
MOSS_QUIET=1 |
Suppress dev mode notice |
Verifying Run Logs
# Verify default run log
moss verify-log
# Verify custom log file
moss verify-log /path/to/custom.jsonl
# Show details for invalid entries
moss verify-log --strict
# Quiet mode (summary only)
moss verify-log -q
Enterprise Mode
Set MOSS_API_KEY to enable enterprise features:
import os
os.environ["MOSS_API_KEY"] = "your-api-key"
from moss import sign, enterprise_enabled
# Check if enterprise mode is active
print(f"Enterprise: {enterprise_enabled()}") # True
# Sign with automatic policy evaluation
result = sign(
output={"action": "high_risk_transfer", "amount": 1000000},
agent_id="finance-bot",
action="transfer",
context={"user_id": "u123", "department": "finance"}
)
if result.blocked:
print(f"Action blocked: {result.policy.reason}")
else:
print(f"Action allowed, evidence_id: {result.evidence_id}")
Execution Record Format
Every signed action produces a verifiable execution record:
agent_id: moss:agent:agent-finance-01
action: transfer
timestamp: 2026-01-18T12:34:56Z
sequence: 42
payload_hash: SHA-256:abc123...
signature: ML-DSA-44:xyz789...
status: VERIFIED
Using Subject (Advanced)
from moss import Subject
agent = Subject.create("moss:dev:my-agent")
envelope = agent.sign({"action": "approved", "amount": 500})
result = Subject.verify(envelope)
assert result.valid
SDKs
| Language | Package | Install |
|---|---|---|
| Python | moss-sdk |
pip install moss-sdk |
| TypeScript | @moss/sdk |
npm install @moss/sdk |
| Go | moss-go |
go get github.com/mosscomputing/moss-go |
| Java | moss-sdk |
Maven: com.mosscomputing:moss-sdk |
| Rust | moss-sdk |
cargo add moss-sdk |
| C#/.NET | Moss.Sdk |
dotnet add package Moss.Sdk |
TypeScript Example
import { sign, verify } from '@moss/sdk';
const envelope = await sign({
output: agentResponse,
agentId: "agent-finance-01"
});
const result = await envelope.verify();
Go Example
client, _ := moss.NewClient(moss.Config{APIKey: os.Getenv("MOSS_API_KEY")})
result, _ := client.Sign(moss.SignRequest{
Payload: map[string]any{"action": "transfer", "amount": 500},
AgentID: "agent-finance-01",
})
Framework Integrations
| Package | Framework | Install |
|---|---|---|
moss-langchain |
LangChain | pip install moss-langchain |
moss-langgraph |
LangGraph | pip install moss-langgraph |
moss-crewai |
CrewAI | pip install moss-crewai |
moss-autogen |
AutoGen | pip install moss-autogen |
moss-openai |
OpenAI SDK | pip install moss-openai |
moss-anthropic |
Anthropic SDK | pip install moss-anthropic |
moss-google |
Google GenAI | pip install moss-google |
Protocol Integrations
UCP (Universal Commerce Protocol)
Sign Google/Shopify agentic commerce operations with MOSS provenance:
pip install moss-sdk[ucp]
from moss.integrations.ucp import MOSSUCPClient
client = MOSSUCPClient(
business_url="https://merchant.example.com",
agent_id="shopping-agent-01"
)
# Every operation is automatically signed
checkout = await client.create_checkout(
line_items=[{"id": "sku_123", "quantity": 1}],
currency="USD"
)
# Verify the signature
assert checkout.verify()
print(f"Checkout {checkout.id} signed: {checkout.envelope.signature[:16]}...")
# Complete with payment - signs both request and response
completion = await client.complete_checkout(
session_id=checkout.id,
payment_data={"method": "card", "token": "tok_xxx"},
ap2_mandate={"consent_id": "..."}
)
Why MOSS + UCP? UCP's AP2 mandates prove user consent, but don't prove which agent performed the action. MOSS fills this gap with cryptographic provenance.
ACP (Agentic Commerce Protocol)
Sign OpenAI/Stripe agentic commerce operations with MOSS provenance:
pip install moss-sdk[acp]
from moss.integrations.acp import MOSSACPClient
client = MOSSACPClient(
merchant_url="https://merchant.example.com",
agent_id="commerce-agent-01"
)
# Create checkout - automatically signed
checkout = await client.create_checkout(
items=[{"name": "Blue T-Shirt", "price": 2999, "quantity": 1}],
currency="usd"
)
# Verify the signature
assert checkout.verify()
# Complete with Stripe payment token
completion = await client.complete_checkout(
session_id=checkout.id,
payment_token="spt_xxx" # Stripe Shared Payment Token
)
if completion.success:
print(f"Order {completion.order_id} created")
Why MOSS + ACP? ACP's Delegated Payment Spec handles secure token passing, but doesn't prove which agent initiated the checkout. MOSS adds cryptographic provenance for complete audit trails.
CLI
# Create a new subject
moss subject create moss:dev:my-agent
# Sign a payload
echo '{"action": "test"}' | moss sign moss:dev:my-agent - > envelope.json
# Verify single envelope
moss verify payload.json envelope.json
# Verify entire run log (local mode)
moss verify-log ~/.moss/run.jsonl
moss verify-log --strict # show details for failures
# Compare two envelopes
moss diff envelope1.json envelope2.json
What MOSS Provides
| Capability | Description |
|---|---|
| Mandatory Signing | Every agent action is signed |
| Offline Verification | Verify without network access |
| Post-Quantum Security | ML-DSA-44 (FIPS 204) |
| Provenance | Non-repudiable execution history |
| Regulatory Compliance | 170+ frameworks, 264 obligations mapped |
| Evidence Collection | 27 evidence types for compliance verification |
Regulatory Compliance
MOSS automatically collects evidence for regulatory compliance:
| Framework | Obligations | Auto-Verifiable |
|---|---|---|
| EU AI Act | 36 | 100% |
| DORA | 87 | 98.9% |
| NIST AI RMF | 72 | 100% |
| SOC 2 | 40 | 100% |
| GDPR | 29 | 100% |
Evidence Types
MOSS collects 27 types of compliance evidence automatically:
- Audit logs, decision traces, policy attestations
- Human oversight records, approval workflows
- Risk assessments, anomaly detection, drift monitoring
Free Regulatory Scan
Discover applicable AI regulations for any domain:
curl -X POST https://api.mosscomputing.com/v1/regulatory/scan \
-H "Content-Type: application/json" \
-d '{"domain": "your-company.com"}'
Pricing
All new signups get a 7-day free trial with full platform access.
| Tier | Price | Agents | Jurisdictions | Frameworks | Retention |
|---|---|---|---|---|---|
| Platform | $4,000/mo | 5 | 1 | 1 | 90 days |
| Scale | $8,000/mo | 20 | 2 | 2 | 1 year |
| Govern | $15,000/mo | 50 | 4 | 4 | 1 year |
| Enterprise | Custom | Unlimited | Unlimited | 170+ | 7 years |
What's Included
| Feature | Platform | Scale | Govern | Enterprise |
|---|---|---|---|---|
| ML-DSA-44 signing | ✅ | ✅ | ✅ | ✅ |
| MGI Score | ✅ | ✅ | ✅ | ✅ |
| Policy engine | ✅ | ✅ | ✅ | ✅ |
| Kill switch | ✅ | ✅ | ✅ | ✅ |
| HITL approvals | Advanced + SLAs | Custom | ||
| Slack / Teams | - | ✅ | ✅ | ✅ |
| Webhooks | - | ✅ | ✅ | ✅ |
| SIEM integration | - | - | ✅ | ✅ |
| SSO / SAML | - | - | - | ✅ |
| Dedicated CSM | - | - | ✅ | ✅ |
| On-premise / air-gapped | - | - | - | ✅ |
See iampass.com/pricing for details.
Protocol
MOSS implements moss-0001. See SPEC.md.
Envelope
{
"spec": "moss-0001",
"version": 1,
"alg": "ML-DSA-44",
"subject": "moss:acme:order-bot",
"key_version": 1,
"seq": 42,
"issued_at": 1733200000,
"payload_hash": "<base64url(SHA-256(canonical(payload)))>",
"signature": "<base64url(ML-DSA-44 signature)>"
}
Verification
- Check
spec == "moss-0001" - Compute
hash = base64url(SHA-256(canonical(payload))) - Assert
hash == envelope.payload_hash - Resolve
(subject, key_version) → public_key - Verify
ML-DSA-44.verify(public_key, canonical(signed_bytes), signature)
Cryptography
| Signatures | ML-DSA-44 (FIPS 204) |
| Hash | SHA-256 |
| Encoding | base64url, no padding |
| Canonicalization | RFC 8785 |
| Key storage | AES-256-GCM + Scrypt |
Keys stored at ~/.moss/keys/. Set MOSS_KEY_PASSPHRASE to encrypt at rest.
Links
- mosscomputing.com — Project site
- dev.mosscomputing.com — Developer Console
- audit.mosscomputing.com — Authority Vault (compliance)
- SPEC.md — Protocol specification
- PyPI — Package
Telemetry
MOSS collects anonymous, privacy-respecting usage data to improve the SDK:
| Data | Purpose |
|---|---|
| Install ID | Random UUID (not tied to you) |
| SDK version | Track adoption of new versions |
| OS & Python version | Platform compatibility |
| Daily sign count | Understand usage patterns |
What we don't collect: Payloads, agent IDs, signatures, keys, or any PII.
Opt Out
# Standard opt-out (respected by many tools)
export DO_NOT_TRACK=1
# MOSS-specific opt-out
export MOSS_DISABLE_TELEMETRY=1
Check Status
from moss.telemetry import get_telemetry_status
print(get_telemetry_status())
# {'enabled': True, 'install_id': 'abc-123-...', 'sign_count_today': 42}
Contributing
See CONTRIBUTING.md.
Security
Report vulnerabilities to moss@iampass.com. See SECURITY.md.
License
MIT - See LICENSE for terms.
Release files for moss-sdk 0.4.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 | |
|---|---|---|---|
| moss_sdk-0.4.0.tar.gz | 86.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| moss_sdk-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 125.1 kB
Release files / moss_sdk-0.4.0.tar.gz
| Download URL | moss_sdk-0.4.0.tar.gz |
|---|---|
| Size | 86.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84ca36b55b9bbeb2513a52debeeb88a6912b9f6af38e489165dd4e1c0d908ee8
|
|
BLAKE2b-256 checksum How to use checksums |
c238a11ff9cbbf16d421b801e704994078818dbf7b8328d909a65f33c146a9ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / moss_sdk-0.4.0-py3-none-any.whl
| Download URL | moss_sdk-0.4.0-py3-none-any.whl |
|---|---|
| Size | 38.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa59c9c80f98d356765e3918148233af166fc07ababe4d5eaece96fe750fc9f9
|
|
BLAKE2b-256 checksum How to use checksums |
ffba190b044d625de2bfb56e097bc408d661edb11e6dd29ae5bbd55d8b21e823
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log