5-minute approval demo
Recommended first run to see WAITING, resume, and completion in one flow.
AXME Cloud Submit once, track lifecycle, complete later. Replace polling, webhook glue, and Temporal complexity with one protocol for all your workflows — AI-driven or not.
Built on AXP, the Intent Protocol. Not async RPC — durable lifecycle with waiting states, human approvals, agent coordination, and production-grade delivery semantics.WAITING state. Resume via CLI, email magic link, or structured form — all built in.
Your agent receives intents via stream (SSE), poll, HTTP webhook, inbox, or internal runtime — AXME handles routing, delivery, retries, and lifecycle. The workflow is defined in a ScenarioBundle JSON.
import { AxmeClient } from "@axme/axme";
const client = new AxmeClient({ apiKey: process.env.AXME_API_KEY! });
for await (const delivery of client.listen("agent://acme/prod/compliance-checker")) {
const intent = await client.getIntent(delivery.intent_id);
const result = checkCompliance(intent.payload);
await client.resumeIntent(delivery.intent_id, {
passed: result.passed,
reason: result.reason,
});
} from axme import AxmeClient, AxmeClientConfig
client = AxmeClient(AxmeClientConfig(api_key=os.environ["AXME_API_KEY"]))
for delivery in client.listen("agent://acme/prod/compliance-checker"):
intent = client.get_intent(delivery["intent_id"])
result = check_compliance(intent["payload"])
client.resume_intent(delivery["intent_id"], {
"passed": result["passed"],
"reason": result["reason"],
}) import "github.com/AxmeAI/axme-sdk-go/axme"
client, _ := axme.NewClient(axme.ClientConfig{
APIKey: os.Getenv("AXME_API_KEY"),
BaseURL: os.Getenv("AXME_BASE_URL"),
})
ch, _ := client.Listen(ctx, "agent://acme/prod/compliance-checker", axme.ListenOptions{})
for delivery := range ch {
intent, _ := client.GetIntent(ctx, delivery.IntentID, axme.RequestOptions{})
result := checkCompliance(intent)
client.ResumeIntent(ctx, delivery.IntentID, map[string]any{
"passed": result.Passed, "reason": result.Reason,
}, axme.RequestOptions{})
} import dev.axme.sdk.*;
var client = new AxmeClient(new AxmeClientConfig(
System.getenv("AXME_BASE_URL"), System.getenv("AXME_API_KEY")
));
// Poll SSE stream for deliveries, process each intent
for (var delivery : SseHelper.pollAgentStream(BASE, KEY, ADDR, since, 15)) {
var id = SseHelper.str(delivery, "intent_id");
var intent = client.getIntent(id, RequestOptions.none());
var result = checkCompliance(SseHelper.effectivePayload(intent));
client.resumeIntent(id,
Map.of("passed", result.passed, "reason", result.reason),
RequestOptions.none());
} using Axme.Sdk;
var client = new AxmeClient(new AxmeClientConfig {
ApiKey = Environment.GetEnvironmentVariable("AXME_API_KEY")!,
BaseUrl = Environment.GetEnvironmentVariable("AXME_BASE_URL")
});
// Poll SSE stream for deliveries, process each intent
foreach (var d in await SseHelper.PollAgentStreamAsync(baseUrl, apiKey, addr, since)) {
var id = SseHelper.Str(d, "intent_id");
var intent = await client.GetIntentAsync(id);
var result = CheckCompliance(SseHelper.EffectivePayload(intent));
await client.ResumeIntentAsync(id, new JsonObject {
["passed"] = result.Passed, ["reason"] = result.Reason
});
} Define agents, delivery modes, workflow steps, and human gates in one file. No infrastructure setup.
{
"scenario_id": "compliance.check.v1",
"agents": [
{ "role": "checker", "address": "compliance-checker", "delivery_mode": "stream" }
],
"workflow": {
"entry_step": "check",
"steps": [{ "step_id": "check", "assigned_to": "checker" }]
}
} axme scenarios apply scenario.json --watch AI agents need production infrastructure that traditional tools don't provide: approvals that wait hours, retries across agent boundaries, and audit trails for compliance. AXME adds these to any agent framework in minutes.
axme tasks approve) or email magic link.MCP defines what your AI assistant can do: tools, resources, and context. AXME defines how long it takes and what happens next: durable lifecycle, human approvals, retries, and cross-agent coordination.
since=<last_seq> — no state lost.AXP is the Intent Protocol: submit an intent, observe a durable lifecycle, and receive a terminal outcome later.
intent_id and state, not a synchronous result.
Initiator AXME Cloud Handler
(service / agent) (Gateway + Registry) (agent / human / internal)
│ │ │
│── submit intent ─────>│ │
│ │── resolve address │
│ │ (Agent Registry) │
│ │ │
│ │── deliver via binding ─>│
│ │ │
│ │ ┌─────────────────┐ │
│ │ │ stream SSE push│ │
│ │ │ poll pull │ │
│ │ │ http webhook │ │
│ │ │ inbox reply_to│ │
│ │ │ internal local │ │
│ │ └─────────────────┘ │
│ │ │
│ │◄── completion event ────│
│◄── lifecycle update ──│ │
│ │ │
└ durable lifecycle across time (seconds to days)─│
Five delivery bindings determine how intents reach their handler. Stream and poll are agent-initiated connections. HTTP is gateway-initiated webhook push with HMAC signature verification and retries. Inbox delivers results to the initiator's reply_to address. Internal handles orchestration within agent-core — no external delivery needed.
reply_to inbox.x-api-key for platform identity + Authorization: Bearer <actor_token> for actor context0600 file — never in plaintext configSecurity architecture and controls: Security overview.
Three approaches to adding a human approval gate to an async workflow:
# Webhook endpoint + email sender + polling loop + timeout
# + retry logic + idempotency key + state table + error handling
# + cleanup cron + audit logging ...
# Scattered across 4-6 files, breaks silently. # Workflow definition + activity + worker + signal handler
# + determinism constraints + Temporal server to operate
# Works, but requires a platform team to run and maintain. from axme import AxmeClient, AxmeClientConfig
client = AxmeClient(AxmeClientConfig(api_key=os.environ["AXME_API_KEY"]))
intent = client.send_intent(
scenario_id="approval.v1",
intent_type="intent.approval.v1",
payload={"change": "deploy v2.1 to production"},
)
# Intent is now durable. Reminder in 5 min, timeout in 8 hours.
# Human approves via CLI, email link, or form.
# No webhook, no polling, no state table, no cron. Start with a runnable demo, then go deeper into docs, security, protocol details, or SDKs.
Recommended first run to see WAITING, resume, and completion in one flow.
Read concepts, lifecycle semantics, and integration guides for real deployments.
→ Read documentationReview auth, authorization, transport, and operational security controls.
→ Read security overviewGo deeper into the AXP spec or pick the SDK for your language.
→ View protocol specMCP is a supported integration path for assistant tools. AXP is the continuation and coordination layer, not a replacement for MCP.
CLI-first alpha access. No sales calls. No contracts.
Install AXME CLI, run axme login, and your workspace is provisioned automatically.
Open the CLI onboarding page for the exact install and first-run commands.