Nexus: An Execution Fabric for AI Agents Across Cloud, Edge, and Devices
Organizations: Nexilume Research
Abstract
Language-model agents are evolving into long-running services that interact with models, tools, computers, mobile devices, and distributed environments. Existing agent frameworks simplify reasoning and tool invocation. However, cloud-centric designs face three limitations: centralized execution increases failure impact, scaling pressure, and compute cost; extending agents across computers, mobile devices, and edge environments requires a unified execution abstraction with permission control; and long-running executions require consistent lifecycle management across failures, recovery, results, usage, and settlement. We present Nexus, a cloud-edge platform that treats each invocation as a persistent task. Nexus uses an OpenWrt-based runtime for distributed serving, run-scoped delegation for authorized access to Computer and Mobile environments, and persistent records to track execution, outputs, failures, recovery, usage, and charging across cloud and edge components. We evaluate Nexus on controlled, cross-device, and model-driven workloads. All ten Computer-Android workflows succeed, and all six revocation tests block subsequent writes while preserving prior authorized reads. Under worker loss, journaling eliminates duplicate appends (six to zero per task), adding 0.933 s mean normal-path overhead. Across 24 matched task pairs, Nexus completes 24 tasks versus Dify's 22 and is a median 3.88 s faster on jointly successful pairs. In a separate workload, Nexus operates under a smaller tested incremental-runtime memory ceiling than Dapr (16 versus 64 MiB), although Dapr achieves lower successful-call latency. These results demonstrate how locality, operation-scoped authority, and persistent result identity support cloud-edge agent services with workload-dependent costs.
Figures & tables
| System | Relevant functionality | Comparison in this work |
|---|---|---|
| Dify [ 4 ] | Agent workflows and tool integration | Matched workflows using shared model and device tools. |
| Ray Serve [ 12 ] | Distributed application serving and replica management | Architectural context; not experimentally compared. |
| Istio / Envoy [ 14 , 15 ] | Service-traffic routing, security, and monitoring | Architectural context; not experimentally compared. |
| Dapr [ 6 ] | Service discovery and invocation | Matched invocation and constrained-memory experiments. |
| Portkey Gateway [ 16 ] | Model-provider routing, retries, and caching | Architectural context; not experimentally compared. |
| Stage | Routing responsibility | Relationship to other components |
|---|---|---|
| Maintain service records | Register local services, expire old records, and exchange remote routes. | Cloud uses compatible registrations for service publication. |
| Forward invocations | Apply access rules and reach eligible handlers through configured paths. | Handlers use environment adapters to request separately authorized device actions. |
| Reconnect and rebuild | Reach retained tasks, resume available event histories, and reconstruct routing state. | Persistent action recovery, output retention, and settlement remain lifecycle responsibilities. |
| Target | Action delivery | Execution and authority boundary |
|---|---|---|
| Computer | Device opens HTTPS setup and WSS command connections to Cloud. | Runs under a local user account; file operations use the configured workspace. |
| Browser | Actions use the selected Computer Runtime connection. | Actions stay on the selected Computer and are checked against stored observations. |
| Mobile | Android sends HTTPS requests for commands and reports results. | Caller/device grants, configured approval, and Android permissions govern actions. |
| Embedded | An explicit adapter exposes supported actions through a routed endpoint. | Each adapter defines its supported operations, transport, and errors. |
| Input | Effect on execution |
|---|---|
| Reply | Answers a pending chat.ask and resumes the same handler in the current turn. |
| Steering | The handler accepts or rejects a caller instruction at a safe point; accepted changes affect subsequent actions in the current turn. |
| Queued request | Cloud admits a later turn after successful completion of the current turn and renewed access and pricing checks. |
| Identity / record | Responsibility and relationship |
|---|---|
| Run | Preserves caller scope and associates selected resources, conversation history, outputs, and usage across turns. |
| Turn | Identifies one admitted tool invocation, including its execution selection, usage, and applicable pricing terms. |
| Execution task | Tracks the run’s current execution, waiting, and recovery state; updated for subsequent turns rather than recreated for each message. |
| Worker attempt | Identifies an execution attempt and its assigned worker, separately from the persistent task and caller-visible status. |
| RQ | Experimental comparison | Primary measurements |
|---|---|---|
| RQ1 | The same task and request-arrival schedule in Cloud and at the edge; service lookup using an index that narrows the search versus checking every entry. | Smallest tested Cloud processor limit meeting the deadline; processor time and transferred bytes; lookup time and whether the selected service remains unchanged. |
| RQ2 | Shared device-access functions versus explicitly constructed requests for the same operations; permissions retained versus withdrawn. | Correct files and device responses; association of commands with the original request; permission enforcement before subsequent actions; device-access code size. |
| RQ3 | Recovery with and without stored operation records; resending stored results; preventing repeated actions at the service performing them. | Repeated actions; recovery of the original task and its results; additional time when no failure occurs; final charging outcomes. |
| Comparison | Shared conditions | Factors that vary |
|---|---|---|
| Edge / Cloud execution | Compiled task program, input data, output checks, and completion reporting; request-arrival schedule and Cloud processor limit in the capacity experiment. | Execution location, operating-system kernel, bridge version, connection path, and additional edge resources. |
| Bridge outside / inside Docker | Kernel, system image, programs and libraries, selected processor cores, requests, and resource-measurement method. | How the bridge is started and isolated from other processes. |
| Nexus / Dify workflows | Tasks, model source, action-selection instructions, maximum number of model decisions, device tools, and output checks. | Coordination of workflow steps, actions actually generated by the model, and handling of the remaining execution time. |
| Nexus / Dapr service calls | VM, target program returning the same bytes, and request schedule; equal total processor and memory limits in the memory experiment. | Call interfaces, how services are located and authenticated, and supporting processes. Latency and memory limits are tested separately. |
| SDK / explicit HTTP | Task code, selected devices, requests, permissions, and shared execution and recovery services. | Device-access code: SDK functions versus explicitly constructed HTTP requests. |
| Journal / no journal | Task steps, their execution pace, the point at which the execution process is stopped, the wait before task reassignment, and checks of outputs and actual actions. | Saving and reusing operation records. Handling repeated requests at the service performing an action is varied in a separate experiment. |
| Cloud CPU | Initial | Repeat | ||
|---|---|---|---|---|
| ceiling (vCPU) | Edge | Cloud | Edge | Cloud |
| 0.25 | 4/4 | 0/4 | 4/4 | 0/4 |
| 0.5 | 4/4 | 1/4 | 4/4 | 3/4 |
| 1 | 4/4 | 3/4 | 4/4 | 3/4 |
| 2 | 4/4 | 4/4 | 4/4 | 4/4 |
| Task stratum | Both succeed | Nexus only succeeds | Total pairs |
|---|---|---|---|
| Calibration | 6 | 0 | 6 |
| Non-calibration | 16 | 2 | 18 |
| All tasks | 22 | 2 | 24 |
| Configuration | Exact/scheduled | Success p50 (ms) | Success p95 (ms) | RSS sum (MiB) |
|---|---|---|---|---|
| Dapr | 207/216 | 1.239 | 2.655 | 292.26 |
| Nexus | 207/216 | 99.169 | 148.770 | 9.73 |
| Worker | Journal | Exact outputs | Duplicate appends | Completion (s) |
|---|---|---|---|---|
| Healthy | Off | 6/6 | 0.0 | 7.260 |
| Healthy | On | 6/6 | 0.0 | 8.193 |
| Lost | Off | 6/6 | 6.0 | 108.414 |
| Lost | On | 6/6 | 0.0 | 108.618 |
| Recovery configuration | Final outputs | Caller retries | Duplicate effects |
|---|---|---|---|
| No journal | 6/6 | 0 | 18 |
| Guarded journal + caller retry | 6/6 | 6 | 6 |
| Reconciliation declaration only | 6/6 | 0 | 6 |
| Journal + resource deduplication | 6/6 | 0 | 0 |
| Original completed | Next observation (s) | |||
|---|---|---|---|---|
| Condition | No outbox | Outbox | No outbox | Outbox |
| Healthy | 2/2 | 2/2 | 0.82 | 1.19 |
| Result loss | 0/2 | 2/2 | 1.72 | 6.86 |
| Acknowledgment loss | 2/2 | 2/2 | 0.66 | 7.43 |
| Result loss + process exit | 0/2 | 2/2 | 4.27 | 5.74 |
Appendix figures & tables106 assets
Supplementary material from the paper’s appendix.
Appendix
| Source | Cloud ceiling | Edge batches | Cloud batches | Edge timely | Cloud timely |
|---|---|---|---|---|---|
| 1 KiB | 0.25 | 4/4 | 4/4 | 80/80 | 80/80 |
| 1 KiB | 0.5 | 4/4 | 4/4 | 80/80 | 80/80 |
| 1 KiB | 1 | 4/4 | 4/4 | 80/80 | 80/80 |
| 1 KiB | 2 | 4/4 | 4/4 | 80/80 | 80/80 |
| 16 MiB | 0.25 | 4/4 | 0/4 | 80/80 | 0/80 |
| 16 MiB | 0.5 | 4/4 | 1/4 | 80/80 | 51/80 |
| Cloud | Processing | Passing batches | Timely tasks | ||
|---|---|---|---|---|---|
| ceiling | location | Initial | Repeat | Initial | Repeat |
| 0.25 | Edge | 4/4 | 4/4 | 80/80 | 80/80 |
| 0.25 | Cloud | 0/4 | 0/4 | 0/80 | 0/80 |
| 0.5 | Edge | 4/4 | 4/4 | 80/80 | 80/80 |
| 0.5 | Cloud | 1/4 | 3/4 | 51/80 | 77/80 |
| 1 | Edge | 4/4 | 4/4 | 80/80 | 80/80 |
| Input / rounds | Cloud CPU (s) | Edge CPU (s) | Latency (ms) | |||
|---|---|---|---|---|---|---|
| C | E | C | E | C | E | |
| 1 KiB / 1 | 0.080 | 0.040 | 0.030 | 0.030 | 16.4 | 26.4 |
| 1 KiB / 32 | 0.073 | 0.041 | 0.026 | 0.031 | 13.1 | 25.3 |
| 1 MiB / 1 | 0.483 | 0.039 | 0.086 | 0.054 | 60.3 | 24.4 |
| 1 MiB / 32 | 0.844 | 0.056 | 0.091 | 0.437 | 77.9 | 43.1 |
| 16 MiB / 1 | 5.806 | 0.052 | 0.851 | 0.323 | 659.5 | 43.1 |
| Input | Digest rounds | Edge ms | Cloud ms | Cloud CPU saved s |
|---|---|---|---|---|
| 1 KiB | 1 | 26.36 | 16.38 | 0.040 |
| 1 KiB | 32 | 25.35 | 13.14 | 0.035 |
| 1 MiB | 1 | 24.41 | 60.33 | 0.443 |
| 1 MiB | 32 | 43.10 | 77.92 | 0.792 |
| 16 MiB | 1 | 43.12 | 659.50 | 5.759 |
| 16 MiB | 32 | 334.82 | 984.24 | 11.102 |
| KiB | Deployment | Passed | Total(s) | Model(s) | CPU(s) | RSS(MiB) |
|---|---|---|---|---|---|---|
| 1 | OpenWrt/native | 4/4 | 21.58 | 6.54 | 0.121 | 33.5 |
| 1 | Cloud/Docker | 4/4 | 24.11 | 9.63 | 0.135 | 79.7 |
| 64 | OpenWrt/native | 4/4 | 23.56 | 9.28 | 0.123 | 33.5 |
| 64 | Cloud/Docker | 4/4 | 21.47 | 7.15 | 0.146 | 79.7 |
| KiB | Placement | Passed | Task(s) | Window(s) | CPU(s) | Adjusted(s) |
|---|---|---|---|---|---|---|
| 1 | Native | 4/4 | 18.70 | 19.04 | 22.99 | 15.57 |
| 1 | Docker | 4/4 | 22.60 | 22.98 | 25.21 | 9.58 |
| 64 | Native | 4/4 | 21.21 | 21.53 | 19.55 | 3.45 |
| 64 | Docker | 4/4 | 23.79 | 24.11 | 27.77 | 4.61 |
| Campaign | KiB | (s) | (s) | (s) |
|---|---|---|---|---|
| Initial | 1 | -2.530 | -3.089 | +0.559 |
| Initial | 64 | +2.095 | +2.124 | -0.029 |
| Repeat | 1 | -3.896 | -3.401 | -0.495 |
| Repeat | 64 | -2.573 | -2.704 | +0.131 |
| Family | Placement | Seen/planned | Task | Verified | GW | Time (s; n) | CPU (s; n) |
|---|---|---|---|---|---|---|---|
| Expenses | Native | 4/4 | 4 | 4 | 20 | 24.06 (4) | 0.077 (4) |
| Expenses | Docker | 4/4 | 4 | 4 | 20 | 28.21 (4) | 0.132 (4) |
| Inventory | Native | 4/4 | 4 | 4 | 25 | 37.42 (4) | 0.090 (4) |
| Inventory | Docker | 4/4 | 4 | 4 | 24 | 31.45 (4) | 0.143 (4) |
| Screen | Native | 4/4 | 4 | 4 | 32 | 39.98 (4) | 0.138 (4) |
| Screen | Docker | 4/4 | 4 | 4 | 32 | 37.71 (4) | 0.194 (4) |
| Payload | Concurrency | Native | Docker | Paired difference [interval] |
|---|---|---|---|---|
| 1 KiB | 1 | 0.971 | 1.037 | +0.026 [-0.085, +0.175] |
| 1 KiB | 8 | 6.546 | 7.595 | +0.639 [+0.274, +1.174] |
| 64 KiB | 1 | 0.925 | 1.035 | +0.102 [+0.037, +0.168] |
| 64 KiB | 8 | 7.376 | 8.224 | +0.846 [-0.001, +1.849] |
| 1024 KiB | 1 | 1.672 | 1.858 | +0.160 [+0.083, +0.247] |
| 1024 KiB | 8 | 11.860 | 12.855 | +1.187 [+0.338, +1.607] |
| CPU seconds | Peak tree RSS (MiB) | ||||
|---|---|---|---|---|---|
| Payload | Concurrency | Native | Docker | Native | Docker |
| 1 KiB | 1 | 0.765 | 0.890 | 2.715 | 2.666 |
| 1 KiB | 8 | 0.645 | 0.815 | 9.170 | 9.150 |
| 64 KiB | 1 | 0.740 | 0.910 | 1.801 | 1.793 |
| 64 KiB | 8 | 0.740 | 0.875 | 8.299 | 8.668 |
| 1024 KiB | 1 | 1.240 | 1.520 | 1.801 | 1.797 |
| Platform | Routes | Index p95 | Scan p95 | Mean-time speedup |
|---|---|---|---|---|
| Windows | 100 | 0.300 | 0.600 | 2.5 [2.4, 2.8] |
| Windows | 1,000 | 0.400 | 6.250 | 20.4 [17.8, 22.0] |
| Windows | 10,000 | 0.950 | 193.600 | 250.4 [209.4, 274.9] |
| Windows | 50,000 | 2.150 | 3397.700 | 1773.3 [1336.6, 1964.3] |
| OpenWrt VM | 100 | 0.371 | 1.051 | 3.1 [2.8, 3.3] |
| OpenWrt VM | 1,000 | 0.544 | 9.619 | 18.3 [15.6, 20.1] |
| SDK re-registration | Recovered arms | Successful fresh probes | Censored |
|---|---|---|---|
| Disabled | 0/6 | 0/900 | 6 |
| Enabled | 6/6 | 890/900 | 0 |
| Candidate | Accepted | Successful probes | Degraded | Diagnostic restored |
|---|---|---|---|---|
| Invalid | 0/6 | 540/540 | 6/6 | 6/6 |
| Valid | 6/6 | 540/540 | 0/6 | 6/6 |
| Routes | Reflector | Oracle arms | Published at C | Recovered at C | Bound (s) |
|---|---|---|---|---|---|
| 4 | Off | 4/4 | 0/16 | 0/16 | — |
| 4 | On | 4/4 | 16/16 | 16/16 | 1.295 |
| 32 | Off | 4/4 | 0/128 | 0/128 | — |
| 32 | On | 4/4 | 128/128 | 128/128 | 1.576 |
| Candidate domain | Admission | Discovered | Peer | Route | Verified |
|---|---|---|---|---|---|
| Same | Off | 4/4 | 0/4 | 0/4 | 4/4 |
| Same | Same-domain | 4/4 | 4/4 | 4/4 | 4/4 |
| Other | Off | 4/4 | 0/4 | 0/4 | 4/4 |
| Other | Same-domain | 4/4 | 0/4 | 0/4 | 4/4 |
| Admission | Phase | Probes | Route found | Backend verified |
|---|---|---|---|---|
| Off | Before | 8 | 0 | 0 |
| Off | Available | 8 | 0 | 0 |
| Off | Expired | 8 | 0 | 0 |
| Off | Recovered | 8 | 0 | 0 |
| Same-Domain | Before | 8 | 0 | 0 |
| Same-Domain | Available | 8 | 8 | 8 |
| Path | Success | Calls | Median (s) | Median CPU (s) |
|---|---|---|---|---|
| Peer tunnel | 8/8 | 48 | 10.023 | 0.0853 |
| Direct HTTP | 8/8 | 48 | 9.523 | 0.0808 |
| KiB | Path | Exact/attempts | All s | Exact s | Ready s |
|---|---|---|---|---|---|
| 1 | IPv6 | 3/4 | 0.726 | 0.776 | 34.043 |
| 1 | Relay | 4/4 | 0.831 | 0.831 | 37.290 |
| 16 | IPv6 | 4/4 | 0.677 | 0.677 | 33.873 |
| 16 | Relay | 0/4 | 1.116 | – | 37.152 |
| 32 | IPv6 | 4/4 | 0.684 | 0.684 | 33.693 |
| 32 | Relay | 0/4 | 0.792 | – | 35.021 |
| KiB | Path | Exact/attempts | Exact median s | s |
|---|---|---|---|---|
| 1 | IPv6 | 4/4 | 0.647 | – |
| 1 | Relay | 4/4 | 0.786 | +0.139 |
| 4 | IPv6 | 4/4 | 0.651 | – |
| 4 | Relay | 4/4 | 0.810 | +0.163 |
| 7 | IPv6 | 4/4 | 0.710 | – |
| 7 | Relay | 4/4 | 0.739 | +0.029 |
| Payload | Conc. | IPv6 valid | Relay valid | Latency (ms) | Goodput (/s) |
|---|---|---|---|---|---|
| 1 KiB | 1 | 128/128 | 128/128 | 577.5 / 770.6 | 1.73 / 1.29 |
| 1 KiB | 4 | 128/128 | 128/128 | 1501.1 / 2460.4 | 2.62 / 1.60 |
| 7 KiB | 1 | 128/128 | 128/128 | 647.5 / 835.5 | 1.54 / 1.16 |
| 7 KiB | 4 | 128/128 | 128/128 | 982.7 / 1495.9 | 3.96 / 2.67 |
| Path | Verified/scheduled | p50 (ms) | p95 (ms) | RSS sum (MiB) |
|---|---|---|---|---|
| Direct HTTP | 216/216 | 0.144 | 0.346 | — |
| Dapr | 207/216 | 1.239 | 2.655 | 292.26 |
| Nexus | 207/216 | 99.169 | 148.770 | 9.73 |
| MiB | N complete | D complete | N calls | D calls | OOM N/D |
|---|---|---|---|---|---|
| 16 | 2/2 | 0/2 | 36/36 | 0/36 | 0/2 |
| 32 | 2/2 | 0/2 | 36/36 | 0/36 | 0/2 |
| 64 | 2/2 | 2/2 | 36/36 | 36/36 | 0/0 |
| 128 | 2/2 | 2/2 | 36/36 | 36/36 | 0/0 |
| 256 | 2/2 | 2/2 | 36/36 | 36/36 | 0/0 |
| Implementation | Success | Non-calib. | Attempt p50 (s) | Calls | Invalid |
|---|---|---|---|---|---|
| Nexus SDK | 24/24 | 18/18 | 25.06 | 159 | 9 |
| Dify + shared tools | 22/24 | 16/18 | 31.10 | 168 | 15 |
| Input | Adapter | Exact output | End-to-end | Handler | Requests |
|---|---|---|---|---|---|
| 1 KiB | SDK | 4/4 | 12.797 | 6.335 | 21–25 |
| 1 KiB | HTTP | 4/4 | 13.088 | 6.664 | 23–25 |
| 64 KiB | SDK | 4/4 | 13.051 | 6.553 | 23–25 |
| 64 KiB | HTTP | 4/4 | 13.047 | 6.192 | 21–28 |
| Input | Adapter | Exact output | End-to-end | Handler | Requests |
|---|---|---|---|---|---|
| 1 KiB | SDK | 4/4 | 15.474 | 8.382 | 39–41 |
| 1 KiB | HTTP | 4/4 | 13.924 | 7.222 | 37–40 |
| 64 KiB | SDK | 4/4 | 14.466 | 7.685 | 34–41 |
| 64 KiB | HTTP | 4/4 | 14.723 | 6.852 | 35–39 |
| KiB | Adapter | Exact/attempts | Workflow s | Model s | Handler s |
|---|---|---|---|---|---|
| 1 | SDK | 4/4 | 30.825 | 8.675 | 9.412 |
| 1 | HTTP | 4/4 | 27.374 | 5.586 | 9.106 |
| 64 | SDK | 4/4 | 30.924 | 9.572 | 8.228 |
| 64 | HTTP | 4/4 | 30.221 | 9.574 | 9.187 |
| Condition | Path | Successful | Failed | Time (s) |
|---|---|---|---|---|
| Healthy | Device API | 10/10 | 0 | 4.872 |
| Healthy | Agent delegate | 10/10 | 0 | 15.236 |
| 10-s loss | Device API | 10/10 | 0 | 14.799 |
| 10-s loss | Agent delegate | 10/10 | 0 | 15.441 |
| Target idle (s) | Actual idle (s) | Completion (s) | Commands | Oracle |
|---|---|---|---|---|
| 60 | 62.607 | 16.636 | 2 | Pass |
| 600 | 601.205 | 10.020 | 2 | Pass |
| 3600 | 3601.081 | 11.714 | 2 | Pass |
| Input | Pairs | Chat median (s) | Tool median (s) | Paired median (s) |
|---|---|---|---|---|
| 1 KiB | 10 | 10.634 | 9.239 | 0.702 |
| 64 KiB | 10 | 9.320 | 8.420 | 0.955 |
| Path | Successful | Failed | Median time (s) |
|---|---|---|---|
| Device API | 10/10 | 0 | 11.590 |
| Agent delegate | 10/10 | 0 | 20.665 |
| Condition | Observed outcome | Count |
|---|---|---|
| Full grant / restored grant | Run completes, exact artifact | 3/3 each |
| Missing write permission | Run fails, read occurs, no write | 3/3 |
| Grant revoked before submission | Run fails, no device command | 3/3 |
| Valid Display proof | HTTP 200, intended Run visible | 3/3 |
| Missing / wrong-Run / tampered proof | HTTP 404, no Run payload | 3/3 each |
| Wrong tenant with valid proof | HTTP 404, no Run payload | 3/3 |
| Condition | Completed at window end | Old token rejected | Auth failure | Final success |
|---|---|---|---|---|
| Retain | 6/6 | 0/6 | 0/6 | 6/6 |
| Rotate | 0/6 | 6/6 | 6/6 | 6/6 |
| Condition | Original complete | Unresolved | Fresh work | Clicks: initial to final |
|---|---|---|---|---|
| Healthy | 6/6 | 0/6 | 6/6 | 6 to 6 |
| Result lost | 0/6 | 6/6 | 6/6 | 6 to 12 |
| Acknowledgment lost | 6/6 | 0/6 | 6/6 | 6 to 6 |
| Original completed | Fresh observe (s) | |||
|---|---|---|---|---|
| Scenario | Baseline | Outbox | Baseline | Outbox |
| Healthy | 2/2 | 2/2 | 0.82 | 1.19 |
| Result loss | 0/2 | 2/2 | 1.72 | 6.86 |
| ACK loss | 2/2 | 2/2 | 0.66 | 7.43 |
| Result loss + process exit | 0/2 | 2/2 | 4.27 | 5.74 |
| Condition | Completed | Deliveries | Stable object | Median (s) |
|---|---|---|---|---|
| Healthy | 8/8 | 8 | 8/8 | 7.854 |
| Result lost | 8/8 | 32 | 8/8 | 24.001 |
| Result lost + process restart | 8/8 | 32 | 8/8 | 23.698 |
| Acknowledgment lost | 8/8 | 8 | 8/8 | 9.256 |
| Condition | Current-plan effect | Rejected | Stale-plan effect |
|---|---|---|---|
| Fresh observation and plan | 2/2 | 0/2 | 0/2 |
| Old R1 after R2 | 0/2 | 2/2 | 0/2 |
| Expected revision omitted | 0/2 | 0/2 | 2/2 |
| DOM changed, no new snapshot | 0/2 | 0/2 | 2/2 |
| Outcome | Initial experiment | Instrumented repeat |
| Scheduled Runs observed | 14/14 | 14/14 |
| Old-snapshot actions rejected | 2/2 | 2/2 |
| Authorized recovery effects | 1/2 | 2/2 |
| Explicit offline-open refusals | 1/2 | 2/2 |
| Available workflows completed | 2/2 | 2/2 |
| New Runs after restoration completed | 2/2 | 2/2 |
| Interactive effect | Nexus PTY | Pipe control |
| Child receives TTY and foreground group | 2/2 | 0/2 |
| Requested dimensions observed in child | 2/2 | 0/2 |
| Ctrl-C interrupts the waiting child | 2/2 | 0/2 |
| Subsequent command in original shell | 2/2 | — |
| Retention effect | Reattach original | Close and recreate |
| Same shell PID/session retained | 2/2 | 0/2 |
| Worker | Journal | Outputs | Appends | Duplicates | Completion (s) |
|---|---|---|---|---|---|
| Healthy | Off | 6/6 | 6.0 | 0.0 | 7.260 |
| Healthy | On | 6/6 | 6.0 | 0.0 | 8.193 |
| Lost | Off | 6/6 | 12.0 | 6.0 | 108.414 |
| Lost | On | 6/6 | 6.0 | 0.0 | 108.618 |
| Arm | Final outputs | Pauses | Effect rows | Duplicates |
|---|---|---|---|---|
| No journal | 6/6 | 0 | 54 | 18 |
| Guard + caller retry | 6/6 | 6 | 42 | 6 |
| Reconciliation flag alone | 6/6 | 0 | 42 | 6 |
| Journal + resource idempotency | 6/6 | 0 | 36 | 0 |
| Tariff | Total stages U/C | Post-return U/C | terminal (ms) | 95% interval |
|---|---|---|---|---|
| Fixed | 12/3 | 8.17/0 | -1206.8 | [-1279.6, -1139.6] |
| Reported | 12/3 | 8.67/0 | -1309.3 | [-1338.6, -1280.7] |
| Text (B) | Cut event | Replay (B) | Cursor (B) | Reduction | Duplicates R/C |
|---|---|---|---|---|---|
| 64 | 4 | 7,631 | 6,791 | 11.0% | 4/0 |
| 64 | 16 | 10,165 | 6,791 | 33.2% | 16/0 |
| 4,096 | 4 | 152,783 | 135,815 | 11.1% | 4/0 |
| 4,096 | 16 | 203,701 | 135,815 | 33.3% | 16/0 |
| Fault | Reconnect policy | Outputs | Producer starts | Duplicate appends |
|---|---|---|---|---|
| Process replacement | Full replay | 6/6 | 12 | 72 |
| Process replacement | Cursor | 0/6 | 6 | 0 |
| Retention expiry | Full replay | 6/6 | 12 | 72 |
| Retention expiry | Cursor | 0/6 | 6 | 0 |
| Protocol | Text (B) | Cut event | Replay (B) | Cursor (B) | Reduction |
|---|---|---|---|---|---|
| MCP | 64 | 4 | 5,514 | 4,450 | 19.3% |
| MCP | 64 | 8 | 6,578 | 4,450 | 32.4% |
| MCP | 4,096 | 4 | 86,154 | 68,962 | 20.0% |
| MCP | 4,096 | 8 | 103,346 | 68,962 | 33.3% |
| A2A | 64 | 4 | 9,624 | 8,036 | 16.5% |
| A2A | 64 | 8 | 11,388 | 8,036 | 29.4% |
| SDK | Path | Handles | Correct workers | Calls |
|---|---|---|---|---|
| Original | Direct | 2/2 | 2/2 | 8 |
| Original | Peer | 0/2 | 2/2 | 8 |
| Candidate | Direct | 2/2 | 2/2 | 8 |
| Candidate | Peer | 2/2 | 2/2 | 8 |
| Condition | Store | Admitted | Correct | Handles | Calls |
|---|---|---|---|---|---|
| Lookup | Previous | 2 | 2 | 1 | 8 |
| Lookup | Candidate | 2 | 2 | 2 | 8 |
| Overflow | Previous | 3 | 3 | 1 | 12 |
| Overflow | Candidate | 2 | 2 | 2 | 8 |
| Condition | Workers | Correct | Results | Records | Calls |
|---|---|---|---|---|---|
| Intact | 2 | 2 | 2 | 2 | 8 |
| Lost, no replay | 2 | 2 | 0 | 2 | 8 |
| Lost, active replay | 2 | 2 | 0 | 4 | 8 |
| Lost, completed replay | 2 | 2 | 2 | 4 | 8 |
| Submission mode | Runs | Ready at return | Final correct | Invocations |
|---|---|---|---|---|
| Worker-dispatched queue | 4 | 4/4 | 4/4 | 8 |
| Explicit continuation | 4 | 0/4 | 4/4 | 8 |
| Scenario | Successful | Failed | Median time (s) |
|---|---|---|---|
| Hash output | 10/10 | 0 | 7.515 |
| Solicited reply | 10/10 | 0 | 8.915 |
| Cooperative steering | 10/10 | 0 | 10.950 |
| Scenario | Terminal outcome | Charge (USD) |
|---|---|---|
| Fixed-price successful digest | Completed | 0.050000 |
| Reported-price successful digest | Completed | 0.032100 |
| Successful digest, missing report | Completed | 0.050000 |
| Report followed by handler failure | Failed | 0.000000 |
| Same report submitted twice | Completed | 0.032100 |
| Over-cap report attempted through SDK | Failed | 0.000000 |
| Task | Client | Exact | Client s | Server s | Reply reaction s |
|---|---|---|---|---|---|
| Hash | WEB | 4/4 | 11.160 | 6.002 | 0.000 |
| Hash | API | 4/4 | 9.175 | 8.688 | 0.000 |
| Confirm | WEB | 4/4 | 19.814 | 15.780 | 2.809 |
| Confirm | API | 4/4 | 11.230 | 10.530 | 0.000 |
| Scenario | Pairs | Run status | Charge | Billing state |
|---|---|---|---|---|
| missing report | 2 | completed | 0.050000 | missing |
| reported failure | 2 | failed | 0.000000 | released |
| fixed success | 2 | completed | 0.050000 | captured |
| reported success | 2 | completed | 0.032100 | captured |
| over cap | 1 | failed | 0.000000 | released |
| duplicate report | 1 | completed | 0.032100 | captured |
| Path | Initialize/list | Client success | Progress callbacks | Producer complete |
|---|---|---|---|---|
| FastMCP transport | 8/8 | 8/8 | 128 | 8/8 |
| Native adapter | 8/8 | 0/8 | 0 | 1/8 |
| Campaign | Path | Client success | Progress | Producer complete |
|---|---|---|---|---|
| Original | Direct FastMCP | 8/8 | 128 | 8/8 |
| Original | Installed adapter | 0/8 | 0 | 1/8 |
| Rebuilt original | Direct FastMCP | 8/8 | 128 | 8/8 |
| Rebuilt original | Control adapter | 0/8 | 0 | 1/8 |
| Corrected | Direct FastMCP | 8/8 | 128 | 8/8 |
| Corrected | Candidate adapter | 8/8 | 128 | 8/8 |
| Fault | Size | Policy | PUT bodies | Download | Time |
|---|---|---|---|---|---|
| Download | 2 | restart | 2.00 | 2.25 | 8.921 |
| Download | 2 | resume | 2.00 | 2.00 | 8.216 |
| Download | 4 | restart | 4.00 | 4.25 | 7.607 |
| Download | 4 | resume | 4.00 | 4.00 | 7.548 |
| Upload | 2 | restart | 5.00 | 2.00 | 10.107 |
| Upload | 2 | resume | 4.00 | 2.00 | 9.677 |
| Format | KiB | Adapter | Exact | Expected | Reused | Time |
|---|---|---|---|---|---|---|
| Binary | 64 | SDK | 2/2 | 2/2 | 0/2 | 10.455 |
| Binary | 64 | HTTP | 2/2 | 2/2 | 0/2 | 9.592 |
| Text | 64 | SDK | 2/2 | 2/2 | 2/2 | 8.578 |
| Text | 64 | HTTP | 2/2 | 2/2 | 2/2 | 9.509 |
| Binary | 1024 | SDK | 2/2 | 2/2 | 0/2 | 9.640 |
| Binary | 1024 | HTTP | 2/2 | 2/2 | 0/2 | 9.385 |
| Exact outputs | Full outcomes | |||
|---|---|---|---|---|
| Input | Initial | Repeat | Initial | Repeat |
| 64 KiB text | 4/4 | 4/4 | 4/4 | 4/4 |
| 1 MiB text | 4/4 | 4/4 | 2/4 | 2/4 |
| 64 KiB binary | 4/4 | 4/4 | 4/4 | 4/4 |
| 1 MiB binary | 4/4 | 4/4 | 4/4 | 4/4 |
| KiB | Input source | Exact | PUT KiB | Prepare s | Continue s |
|---|---|---|---|---|---|
| 64 | Reference | 2/2 | 0 | 0.226 | 9.705 |
| 64 | Upload | 2/2 | 128 | 1.580 | 8.524 |
| 1024 | Reference | 2/2 | 0 | 0.178 | 9.162 |
| 1024 | Upload | 2/2 | 2048 | 0.757 | 10.161 |
| KiB | Capture | Reupload | Capture (s) | Reupload (s) | Avoided KiB |
|---|---|---|---|---|---|
| 64 | 4/4 | 4/4 | 0.250 | 0.305 | 128 |
| 1024 | 4/4 | 4/4 | 0.296 | 0.715 | 2048 |
| Selector | Headers | Calls | Lineage | Usage | Tokens | Time |
|---|---|---|---|---|---|---|
| Pool | NONE | 4/4 | 4/4 | 0 | 118/33 | 1.599 |
| Pool | SDK | 4/4 | 4/4 | 4 | 118/33 | 1.627 |
| Router | NONE | 4/4 | 4/4 | 0 | 118/33 | 1.656 |
| Router | SDK | 4/4 | 4/4 | 4 | 118/33 | 1.643 |
| C | Policy | Sent/planned | Match | Differ | Unknown | Success | Correct | Mean (s) |
|---|---|---|---|---|---|---|---|---|
| 1 | A first | 4/4 | 4 | 0 | 0 | 4 | 4 | 2.114 |
| 1 | Withdraw A | 4/4 | 4 | 0 | 0 | 4 | 4 | 5.869 |
| 1 | Weight A=0 | 4/4 | 4 | 0 | 0 | 4 | 4 | 2.851 |
| 1 | Rollback | 4/4 | 4 | 0 | 0 | 4 | 4 | 3.850 |
| 1 | Order A=0 | 4/4 | 0 | 4 | 0 | 4 | 4 | 3.613 |
| 2 | A first | 4/4 | 4 | 0 | 0 | 4 | 4 | 2.118 |
| Deployment | Baseline (s) | Post-idle (s) | Verified | Gap (s) |
|---|---|---|---|---|
| OpenWrt native | 19.30 | 20.33 | 2/2 | 7251.9 |
| Cloud Docker | 18.32 | 26.44 | 2/2 | 7203.1 |