Get started
Deep DiveAEE ProtocolAOCL LayersVOLT LedgerWARD Receipts

Anatomy of a Conversation

From voice input to verifiable audit trail - follow a single conversation as it flows through every protocol layer, agent delegation, human approval gate, and tamper-evident log entry.

Quox Engineering3 March 202613 min read
Two AI agents exchanging structured protocol data - visualizing the AEE, AOCL, VOLT, and WARD conversation journey
From voice input to verifiable audit trail. One conversation through four protocols, 67 seconds, every step traceable.

What actually happens between the moment you speak a request and the moment you get an answer? In most AI systems, the answer is: nobody knows. The request goes in, something happens in a black box, and a response comes out. There is no trace, no audit trail, no proof of what happened, who approved what, or whether the system followed its own rules.

We built four open protocols to change that. AEE (Agent Envelope Exchange) gives every message a structured, traceable identity. AOCL (Agent Orchestration Control Layers) routes each request through a governed pipeline of safety checks, planning, and delegation. VOLT (Verifiable Operations Ledger & Trace) creates a tamper-evident, hash-chained record of everything that happened.

And WARD (Write-once Append-only Receipt Digests) produces content-free witness receipts that prove events existed, even if the original evidence is destroyed.

This article is a walk-through of a single, real-world conversation. Not a simplified example. A complex one. Voice input, multi-agent delegation, tool execution, human-in-the-loop approval, workflow orchestration, and a final evidence bundle that proves every step. The article you're reading is, itself, the audit trail.

Hey CommanderQ, our production API response times have spiked in the last hour. Can you check what's going on and fix it if you find the problem?

A DevOps engineer, Adam, speaks into his QuoxTerminal. It's 2:32 PM UTC. The production API is serving 23x slower than normal. He doesn't know why yet. He just knows something is wrong and he wants his AI assistant to find and fix it.

What follows is a 67-second journey through 13 steps, 11 AOCL layers, 4 tool calls, 1 human approval, 5 workflow nodes, 22 hash-chained VOLT events, and a WARD witness receipt chain.

12 steps, 67 seconds

Follow the conversation as it flows from voice input through every protocol layer to its final, verified resolution.

Step 1: Voice Capture

Phase: Voice Input · Timing: +0ms

The journey begins when a DevOps engineer speaks into their terminal. The microphone captures raw audio - a natural language request driven by urgency. No typing, no forms, no menus. Just a human voice asking for help.

  • Format: WAV 16-bit PCM
  • Sample Rate: 16,000 Hz
  • Duration: 3.2 seconds
  • Channels: Mono

Step 2: Speech-to-Text

Phase: Transcription · Timing: +340ms

The audio is sent to a speech recognition service. Within milliseconds, the waveform becomes text, a structured transcript with a confidence score. This is the first transformation: from analog signal to digital intent.

AEE Envelope - Transcription Resultjson
{
  "v": "1",
  "id": "01JQ7M3K-STT-RSLT-001",
  "ts": "2026-03-03T14:32:00.340Z",
  "type": "result",
  "from": "service.whisper",
  "to": "agent.commanderq",
  "intent": "voice.transcribe",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-STT-TASK-001",
  "priority": "normal",
  "payload": {
    "transcript": "Hey CommanderQ, our production API response times have spiked in the last hour. Can you check what's going on and fix it if you find the problem?",
    "confidence": 0.97,
    "language": "en",
    "duration_ms": 3200
  },
  "sig": null
}
  • confidence: 0.97, a high-quality transcription, safe to proceed without confirmation
  • reply_to: points back to the transcription task request, forming a causal link

Step 3: The Envelope - Wrapping the Request

Phase: AEE · Timing: +345ms

Now the transcript becomes a proper AEE envelope, a structured, 14-field JSON message that any agent in the system can understand. This is the moment raw human language enters the protocol layer. The envelope carries everything needed for routing, correlation, and accountability.

AEE Envelope - The Initial Request (all 14 fields)json
{
  "v": "1",
  "id": "01JQ7M3K-MAIN-TASK-001",
  "ts": "2026-03-03T14:32:00.345Z",
  "type": "task",
  "from": "human.adam",
  "to": "agent.commanderq",
  "intent": "ops.api.performance.investigate",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": null,
  "trace": { "trace_id": "9f3c4a7b", "span_id": "a12b8e91" },
  "priority": "high",
  "requires": {
    "timeout_ms": 120000,
    "human_approval": true,
    "evidence": true
  },
  "payload": {
    "transcript": "Hey CommanderQ, our production API response times have spiked in the last hour. Can you check what's going on and fix it if you find the problem?",
    "source": "voice",
    "source_confidence": 0.97,
    "context_hints": ["production", "api", "performance", "spike"]
  },
  "sig": null
}
  • corr: the correlation ID, this single value will thread through every envelope, every layer decision, every tool call, and every VOLT event in this entire conversation
  • type: "task": this is a request to do work. Results and errors will point back to this envelope via reply_to
  • requires: the caller requests evidence (proof of findings), human approval for any fixes, and a 2-minute timeout
  • reply_to: null: this is the root, the very first envelope. Everything else in the conversation traces back here

Step 4: Ingress & Identity

Phase: AOCL (L0, L1) · Timing: +353ms

The envelope enters the AOCL (Agent Orchestration Control Layers) stack. Layer 0 normalizes the input, creating a unique run ID, recording the channel (terminal voice), and preparing the context bundle. Layer 1 resolves identity: who is this user, what are their permissions, and what redaction rules apply?

AOCL Decision - Identity & Scope (L0 + L1)json
{
  "v": "1",
  "id": "01JQ7M3K-AOCL-L1-001",
  "ts": "2026-03-03T14:32:00.353Z",
  "type": "event",
  "from": "agent.commanderq",
  "to": "log.aocl",
  "intent": "aocl.layer.decision",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-MAIN-TASK-001",
  "priority": "normal",
  "payload": {
    "run_id": "RUN-01JQ7M3K-001",
    "layer": { "id": "L1.identity.scope", "version": "0.1" },
    "timing_ms": 8,
    "decisions": [
      { "code": "SCOPED", "reason": "Admin identity verified; ops tools permitted" }
    ],
    "delta": {
      "C0.Event.channel": "terminal-voice",
      "C0.Event.source": "voice-transcription",
      "C1.Identity.actor": "human.adam",
      "C1.Identity.role": "admin",
      "C4.Policy.allowed_tools": ["tool.ops.*", "tool.readonly.*"],
      "C6.Audit.redaction_ruleset": "default-v1"
    },
    "control": { "halt_pipeline": false }
  },
  "sig": null
}
  • delta: the context patch, each layer adds or modifies small pieces of context rather than passing the entire state. This keeps payloads small and auditable
  • C1.Identity: Adam is identified as an admin with access to ops tools, this determines what the system is allowed to do on his behalf
  • C6.Audit: redaction rules are applied immediately, secrets and PII will be stripped from all downstream logs

Step 5: Routing & Policy Gate

Phase: AOCL (L2, L3) · Timing: +362ms

Layer 2 checks for a "fast path", a cached response or deterministic shortcut that can skip the heavier layers. This request is too complex for a shortcut, so it continues. Layer 3 is the policy gate, the critical safety checkpoint. It evaluates the request against compliance rules and determines: investigation is allowed, but any production changes require human-in-the-loop approval.

AOCL Decision - Policy Gate (L3)json
{
  "v": "1",
  "id": "01JQ7M3K-AOCL-L3-001",
  "ts": "2026-03-03T14:32:00.362Z",
  "type": "event",
  "from": "agent.commanderq",
  "to": "log.aocl",
  "intent": "aocl.layer.decision",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-MAIN-TASK-001",
  "priority": "normal",
  "payload": {
    "run_id": "RUN-01JQ7M3K-001",
    "layer": { "id": "L3.policy.gate", "version": "0.1" },
    "timing_ms": 9,
    "decisions": [
      { "code": "POLICY_ALLOW", "reason": "Read-only investigation tools permitted" },
      { "code": "HITL_FLAGGED", "reason": "Production writes require human approval" }
    ],
    "delta": {
      "C4.Policy.investigation_mode": "allowed",
      "C4.Policy.production_writes": "hitl_required",
      "C5.Execution.mode": "investigate-then-approve"
    },
    "control": { "halt_pipeline": false, "require_hitl": true }
  },
  "sig": null
}
  • HITL_FLAGGED: this is where governance meets automation. The policy gate allows the agent to investigate freely but draws a hard line: fixing anything in production requires a human to approve it first
  • require_hitl: true: this control flag propagates through the stack. Downstream layers know they must pause and ask before executing any write operations

Step 6: Planning & Context Retrieval

Phase: AOCL (L4, L5) · Timing: +380ms

Layer 4 decomposes the request into a structured plan: diagnose, propose, remediate. Each phase has clear objectives and constraints. Layer 5 retrieves relevant context, recent deployment history, system architecture, and past incident records. This is where the system's memory informs its reasoning.

  • Phase 1: Diagnose, check metrics, analyze logs, identify root cause
  • Phase 2: Propose, formulate fix with evidence and confidence score
  • Phase 3: Remediate, execute fix (requires HITL approval)
  • Context: ORM library update deployed 18 hours ago
  • Context: Similar latency spike incident 3 months ago (resolved: connection pool)
  • Context: Architecture: API pods → PostgreSQL (connection pool: max 10)

Step 7: Shape & Delegate

Phase: AOCL (L6, L7) · Timing: +395ms

Layer 6 shapes the plan into concrete delegation tasks, preparing AEE envelopes with the right context refs and constraints. Layer 7 dispatches the work: a task envelope is sent to the diagnostics agent, carrying everything it needs to investigate without further context-loading.

AEE Task - Delegation to Diagnostics Agentjson
{
  "v": "1",
  "id": "01JQ7M3K-DLGT-TASK-001",
  "ts": "2026-03-03T14:32:00.395Z",
  "type": "task",
  "from": "agent.commanderq",
  "to": "agent.ops-diagnostics",
  "intent": "ops.api.performance.diagnose",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-MAIN-TASK-001",
  "priority": "high",
  "requires": { "timeout_ms": 60000, "evidence": true },
  "payload": {
    "target_service": "api",
    "symptoms": ["latency_spike", "p99_elevated"],
    "window": "1h",
    "context_refs": [
      "mem://deploys/recent",
      "mem://incidents/similar",
      "inv://services/api/architecture"
    ]
  },
  "sig": null
}
  • from → to: CommanderQ delegates to a specialized ops-diagnostics agent. The same correlation ID threads them together
  • context_refs: instead of embedding large context blobs, the envelope carries references. The receiving agent fetches only what it needs
  • evidence: true: the diagnostics agent must provide verifiable evidence for its findings, not just conclusions

Step 8: Investigation - Four Tool Calls

Phase: Agent · Timing: +420ms → +4.2s

The diagnostics agent goes to work. It executes four tool calls in sequence, each producing evidence that builds toward a root cause. Every tool call is itself an AEE task/result pair, sharing the same correlation ID.

ToolPurposeResultFinding
📊 PrometheusQuery API latency metricsp99 latency: 4,200ms (baseline: 180ms)Latency 23x above normal for last 47 minutes
📝 PostgreSQL LogsAnalyze database error logsFATAL: too many clients already312 occurrences in last hour, first at 13:45 UTC
🔌 Connection PoolCheck pool status via pg_stat_activityactive: 10/10, idle: 0, waiting: 47Pool exhausted - all connections in use, 47 queries queued
🚀 Deploy HistoryCheck recent deploymentsv2.4.1 deployed 18h ago - ORM library updateNew ORM version holds connections open across request boundaries

Root cause: The ORM update (v2.4.1, deployed 18 hours ago) changed connection handling behavior. Instead of releasing connections after each query, the new version holds them across request boundaries. With a pool max of 10, the pool was exhausted once traffic exceeded 10 concurrent requests, causing all subsequent queries to queue.

Step 9: Verification

Phase: AOCL (L8) · Timing: +4.3s

Layer 8 verifies the agent's findings. Four independent tool results all corroborate the same root cause. The evidence refs check out. The confidence score exceeds the threshold. The diagnosis is verified and the proposed fix can proceed, pending human approval.

  • Status: PASS
  • Confidence: 0.94 (threshold: 0.90)
  • Evidence Refs: 4 verified tool results
  • Root Cause: ORM connection leak → pool exhaustion
  • Corroboration: 4/4 tools support same conclusion

Step 10: Human-in-the-Loop Approval

Phase: HITL · Timing: +4.4s → +19.7s

The agent has a diagnosis and a proposed fix. But this is a production system. The AOCL policy gate flagged this: production writes require human approval. The system pauses and presents the proposed changes to Adam for review.

Approval required: production write operation, policy requires human sign-off. Proposed changes: increase connection pool 10 to 50; set connection idle timeout to 30s; rolling restart of 3 API pods, one at a time. Evidence: 4 tool results confirming pool exhaustion. Expires in 5 minutes. Human decision: approved by human.adam ("Looks good, proceed with the fix"), decision time 15.3 seconds.

AEE Envelope - HITL Approvaljson
{
  "v": "1",
  "id": "01JQ7M3K-HITL-APR-001",
  "ts": "2026-03-03T14:32:19.700Z",
  "type": "result",
  "from": "human.adam",
  "to": "agent.commanderq",
  "intent": "hitl.approval.respond",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-HITL-REQ-001",
  "priority": "urgent",
  "payload": {
    "request_id": "hitl-req-001",
    "decision": "approved",
    "approved_by": "human.adam",
    "comment": "Looks good, proceed with the fix"
  },
  "sig": null
}

Step 11: Workflow Execution - Incident Remediation

Phase: QuoxFlow · Timing: +20s → +67s

With approval granted, the system triggers a QuoxFlow workflow: "incident-remediation." This isn't an ad-hoc sequence of commands, it's a registered, versioned workflow with defined steps, rollback procedures, and health checks. Each node executes in order, and every action is logged.

  1. 💾 Backup Config (✓ 2.1s)
  2. 🔧 Apply Fix (✓ 3.4s)
  3. 🔄 Rolling Restart (✓ 28.6s)
  4. 🏥 Health Check (✓ 12.8s)
  5. 📨 Notify Team (✓ 0.4s)

Step 12: Assembly & Audit

Phase: Response (L9, L10) · Timing: +67.5s

Layer 9 assembles the final response, compiling the diagnosis, the actions taken, and the current system status into a clear, human-readable summary. Layer 10 writes the audit trail: persisting the conversation to memory, emitting the VOLT evidence bundle, and closing the AOCL run.

AEE Envelope - Final Result to Humanjson
{
  "v": "1",
  "id": "01JQ7M3K-FNL-RSLT-001",
  "ts": "2026-03-03T14:32:67.500Z",
  "type": "result",
  "from": "agent.commanderq",
  "to": "human.adam",
  "intent": "ops.api.performance.investigate",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "reply_to": "01JQ7M3K-MAIN-TASK-001",
  "priority": "high",
  "payload": {
    "status": "resolved",
    "summary": "Production API latency spike resolved. Root cause: ORM v2.4.1 connection leak causing pool exhaustion. Fix applied: connection pool increased to 50, idle timeout set to 30s, API pods restarted. Current p99 latency: 165ms.",
    "root_cause": "ORM library update (v2.4.1) changed connection handling - connections held across request boundaries instead of being released per-query",
    "actions_taken": [
      "Connection pool size: 10 → 50",
      "Connection idle timeout: 30s (new)",
      "Rolling restart of 3 API pods",
      "Team notified via Slack"
    ],
    "current_status": {
      "p99_latency_ms": 165,
      "active_connections": 8,
      "pool_utilization": "16%",
      "waiting_queries": 0
    },
    "confidence": 0.94,
    "evidence_refs": [
      "log:prometheus:api-latency-query",
      "log:postgresql:error-log-analysis",
      "log:pgstat:connection-pool-status",
      "log:deploy:v2.4.1-changelog"
    ]
  },
  "sig": null
}
  • reply_to: points all the way back to the original request (Step 3). The circle is complete, the full causal chain is traceable from this final result back to the initial voice input
  • evidence_refs: every claim in the summary is backed by verifiable tool output. Nothing is asserted without proof
  • current_status: post-fix metrics confirm the resolution: p99 down from 4,200ms to 165ms, pool utilization at 16%

Step 13: Independent Witnessing

Phase: WARD · Timing: +67.6s

The conversation is complete, but there is one final step. WARD (Write-once Append-only Receipt Digests) produces content-free witness receipts for the entire chain of events. Unlike VOLT, which stores what happened, WARD stores only that something happened: cryptographic hashes with no payload content. If the VOLT ledger is tampered with, or even destroyed entirely, the WARD receipts still prove the original events existed.

This is the difference between recording evidence and witnessing it.

WARD Receipt Chain - Content-free Witnessjson
{
  "v": "1",
  "id": "01JQ7M3K-WARD-WIT-001",
  "ts": "2026-03-03T14:32:67.600Z",
  "type": "event",
  "from": "ward.witness",
  "to": "log.ward",
  "intent": "ward.receipt.batch",
  "corr": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "priority": "normal",
  "payload": {
    "chain_id": "ward:collector:primary",
    "batch_size": 3,
    "receipts": [
      { "seq": 1, "source": "aee", "hash": "sha256:7a3f2e...", "prev": null },
      { "seq": 2, "source": "aocl", "hash": "sha256:c4d8b1...", "prev": "sha256:7a3f2e..." },
      { "seq": 3, "source": "volt", "hash": "sha256:f2d893...", "prev": "sha256:c4d8b1..." }
    ],
    "content_stored": false,
    "witness_only": true
  },
  "sig": null
}
  • content_stored: false: WARD never stores the actual data, only hashes. This is by design: a witness proves existence without holding secrets
  • prev: each receipt chains to the previous one. Tampering with any receipt breaks the chain, just like VOLT, but with zero content exposure
  • source: receipts are keyed by source system (AEE, AOCL, VOLT). One witness chain covers the entire trust stack

VOLT Evidence Bundle

The immutable record

Every step above produced VOLT events, hash-chained entries in a tamper-evident ledger. If anyone modifies, deletes, or inserts an event, the chain breaks and the verifier catches it. WARD then witnesses the entire bundle with content-free receipts, an independent proof layer.

SeqEvent typeActorTimestampHash
1run.startedsystemT14:32:00.345Zsha256:7a3f2e...
2aee.envelope.receivedaee.gatewayT14:32:00.346Zsha256:b91c4d...
3aocl.policy.evaluatedaoclT14:32:00.362Zsha256:e5d8f1...
4tool.call.executedagent.opsT14:32:01.200Zsha256:2c7a93...
5tool.call.executedagent.opsT14:32:02.100Zsha256:8f4b2e...
6tool.call.executedagent.opsT14:32:03.400Zsha256:d1e6c8...
7tool.call.executedagent.opsT14:32:04.100Zsha256:5a9f37...
14hitl.requestedhitlT14:32:04.400Zsha256:c8b2e4...
15hitl.approvedhuman.adamT14:32:19.700Zsha256:93d7f1...
16tool.call.executedrunner.wfT14:32:22.100Zsha256:a6c4e8...
21aee.envelope.sentaee.gatewayT14:32:67.500Zsha256:f2d893...
22run.completedsystemT14:32:67.510Zsha256:4b8a2f...
23ward.receipt.witnessedward.witnessT14:32:67.600Zsha256:e7c3a1...

Verification Report: PASS 23 events verified · Bundle ID: RUN-01JQ7M3K-001 · 2026-03-03T14:32:67.600Z

  • ✓ All 23 event hashes valid
  • ✓ Hash chain unbroken (seq 1→23)
  • ✓ Manifest event count matches
  • ✓ HITL approval precedes execution
  • ✓ All attachment hashes verified
  • ✓ No sequence gaps detected
  • ✓ Run ID consistent across events
  • ✓ WARD witness receipts verified
  • — Signatures verified (not applicable)
VOLT Evidence Bundle - Manifest (manifest.json)json
{
  "volt_version": "0.1",
  "bundle_id": "BUNDLE-01JQ7M3K-001",
  "run_id": "RUN-01JQ7M3K-001",
  "created_ts": "2026-03-03T14:32:67.510Z",
  "hash_alg": "sha256",
  "events_file": "events.ndjson",
  "event_count": 23,
  "first_event_hash": "sha256:7a3f2e...",
  "last_event_hash": "sha256:e7c3a1...",
  "correlation_id": "01JQ7M3K8X5Y2Z9W1A4B6C8D3E",
  "producer": { "name": "quox-core", "version": "0.9.4" },
  "redactions_present": true,
  "attachments_present": true,
  "integrations": {
    "aee_envelope_ids": 14,
    "aocl_decisions": 8,
    "hitl_approvals": 1,
    "workflow_nodes": 5
  }
}

WARD Witness Layer

The independent proof

VOLT proves what happened. WARD proves that VOLT itself existed, without storing any of the content. If the VOLT ledger is compromised, destroyed, or disputed, the WARD receipt chain still holds.

Content-free by design WARD receipts contain hashes, timestamps, and chain pointers, never the original data. A WARD chain cannot leak secrets because it never had them. It witnesses events the way a notary witnesses a signature: proving it happened, without reading the document.

SeqSourceDescriptionHash
1AEE14 envelope exchangessha256:7a3f2e...
2AOCL8 layer decisionssha256:c4d8b1...
3VOLT23 ledger eventssha256:f2d893...

Three receipts. Three sources. Zero content stored. The entire conversation (voice input, agent delegation, tool execution, human approval, workflow orchestration) witnessed by a chain that holds nothing but proof.

Full ecosystem workflow - human prompt through agentic orchestration to AI agent specialists executing tools, API calls, and workflows

Why this foundation matters

Four protocols. One principle: if an AI system acts on your behalf, you should be able to prove exactly what it did, why it did it, and who approved it.

Total Observability Every request, decision, tool call, and response is recorded with a shared correlation ID. Reconstruct any conversation from start to finish with a single query.

Governance by Design AOCL's policy gate enforces rules before actions happen, not after. Human-in-the-loop isn't a feature; it's a protocol-level guarantee.

Tamper-Evident Proof VOLT's hash-chained ledger means you can prove to an auditor that approval happened before execution, and that nobody altered the record afterward.

Independent Witnessing WARD produces content-free receipts that prove events existed, without storing what they said. Hash-chain witnesses that survive even if the original evidence is destroyed.

Framework Agnostic AEE envelopes work with any agent framework, LangGraph, AutoGen, CrewAI, or custom. The protocol doesn't care how you build agents; it cares that they communicate clearly.

Composable Layers AOCL stacks are configurable. Need speed? Skip context retrieval. Need safety? Add extra policy layers. The architecture adapts to your risk profile.

Compliance Ready Built for regulated industries. Evidence bundles, redaction rules, and audit trails that satisfy SOC 2, HIPAA, and financial compliance requirements out of the box.

The conversation you just followed, voice to diagnosis to fix to proof, took 67 seconds. Without these protocols, that same interaction would be a black box: no trace of what the AI investigated, no record of what it changed, no proof that a human approved it.

AEE makes agent communication structured and traceable. AOCL makes orchestration governed and controllable. VOLT makes the entire history verifiable and tamper-evident. WARD witnesses the proof with content-free hash chains.

Together, they form the only complete trust stack in the AI agent market, not just powerful, but accountable.

Deploy QuoxCORE: free, self-hosted

AI agent orchestration with built-in governance. Docker Compose up and running in under five minutes.