Skip to content
AIPDocs
AIP 1.055 pagesReference
Release status
DocumentationAIP 1.0ReferenceAPI Reference

aipctl Command Reference

aipctl is the developer and operator client for native AIP, MCP compatibility, schemas, connectors, and receipt verification.

Authentication

Pass a native HTTP bearer token globally:

aipctl --native-bearer-token TOKEN COMMAND

The repository command form is:

cargo run -p aipctl -- --native-bearer-token TOKEN COMMAND

MCP subcommands use their own --bearer-token because MCP authentication and native operational authentication are separate boundaries.

AIPCTL_NATIVE_BEARER_TOKEN and AIPCTL_MCP_BEARER_TOKEN provide process defaults. Explicit command options take precedence. Avoid placing long-lived tokens in shared shell profiles.

Native NATS uses separate broker credentials and an Ed25519 signing identity. Pass only secret-file references; do not put passwords or signing seeds in command arguments:

export AIPCTL_NATS_USERNAME=aipd
export AIPCTL_NATS_PASSWORD_FILE=/run/secrets/aipctl-nats-password
export AIPCTL_NATS_SIGNING_SEED_FILE=/run/secrets/aipctl-nats-signing-seed

The password and signing-seed files must be regular, non-symlink files with no group or other permissions. The signing-seed file contains exactly 32 bytes as 64 hexadecimal characters. Derive the public identifier without exposing the seed, then bind that DID to agent:aipctl in AIPD_TRUSTED_SIGNERS:

umask 077
openssl rand -hex 32 > /run/secrets/aipctl-nats-signing-seed
aipctl nats signer-did

Authenticated NATS does not replace AIP authentication. Production daemons also require the derived DID in their signer allowlist and agent:aipctl in the trusted identity directory. Peer Error envelopes make aipctl exit non-zero.

Command Map

Command Purpose
schema export DIR Export the built-in JSON Schema registry
nats signer-did Derive the public DID for the configured NATS signing seed
manifest fetch URL Fetch a native HTTP manifest
manifest fetch-nats URL Fetch a manifest through NATS
manifest validate FILE Validate a manifest file
action call URL CAPABILITY Invoke through native HTTP
action call-nats URL CAPABILITY Invoke through NATS
action list URL List durable action views
action status URL ACTION_ID Read one action
action result URL ACTION_ID Read or briefly wait for final result
action events URL ACTION_ID Read or follow action events
action cancel URL ACTION_ID Request cancellation
events list URL Read or follow the global event stream
`session list get
`approval list records
`approval request decide`
`approval list-nats request-nats
transaction get Read a transaction by one selector
audit events Query or export audit evidence
`resource list read`
`receipt get verify`
conformance run Run native core conformance
connector test Verify deployed connector capabilities and calls
mcp inspect Project an MCP peer into an AIP manifest
mcp call-tool Call an MCP tool
mcp conformance Run outbound MCP compatibility checks
mcp serve-stdio Expose an HTTP MCP server over stdio
mcp bridge Bridge stdio and Streamable HTTP

Run aipctl COMMAND --help at each level for selector, pagination, and transport options. This table lists command families; it does not replace the installed binary’s generated help.

Input from Files

Commands that accept JSON allow either inline JSON or @path:

aipctl action call http://127.0.0.1:18080 cap:example:create \
  --input @request.json

File input avoids shell quoting errors and is preferable for approval, identity, and transaction objects. Protect files that contain sensitive business data even though they must not contain raw credentials.

Enterprise Action Options

action call and action call-nats accept:

Option Meaning
--idempotency-key KEY Stable deduplication key
`–mode sync async
--identity JSON_OR_@FILE Identity context claim, verified by the server
--approval JSON_OR_@FILE Approved decision for the action
--transaction-mode MODE Execute, dry-run, plan, commit, compensate, or rollback-not-supported
--transaction-id ID Stable transaction id
--plan-id ID Plan referenced by commit
--compensation-for ACTION_ID Action being compensated

The server remains authoritative. CLI flags cannot grant identity, approval, or transaction rights.

The native protocol also defines transaction mode reconcile. The current 1.0.0 CLI value enum does not expose it; use a native envelope or the Rust SDK for explicit reconciliation. This limitation is tracked in Implementation Status.

Useful Workflows

Discover, call, and inspect:

aipctl --native-bearer-token "$AIP_TOKEN" manifest fetch "$AIP_URL"
aipctl --native-bearer-token "$AIP_TOKEN" action call "$AIP_URL" cap:aipd:health
aipctl --native-bearer-token "$AIP_TOKEN" action status "$AIP_URL" ACT_ID --include-result

Follow an async action:

aipctl --native-bearer-token "$AIP_TOKEN" action events "$AIP_URL" ACT_ID \
  --include-chunks --follow

Read one transaction using exactly one selector:

aipctl --native-bearer-token "$AIP_TOKEN" transaction get "$AIP_URL" \
  --plan-id PLAN_ID --include-result --include-receipts

Exit Behavior

Successful commands exit with status 0. Transport, validation, authorization, protocol, or conformance failures print a diagnostic to standard error and exit non-zero. Commands returning protocol records print pretty JSON. Validation-only commands may print a concise success line. Scripts should use the exit status and parse JSON only for commands whose output contract is JSON, rather than matching diagnostics.