Act·two-phase async

Persistent Agent

Immortal Docker-in-TEE

Stateful agents with memory, heartbeat, automatic revival via dead-man switch.

0x0000000000000000000000000000000000000820Explorer

Interactive form — coming next session

Two-phase async UI in progress. The precompile itself is 0x0000000000000000000000000000000000000820 and live on testnet — use the canonical Solidity / viem code below to integrate from your own contract.

ABI summary

(
  StorageRef soulRef,         // (platform, path, credentials)
  StorageRef memoryRef,
  bytes32 cidForRevival,      // optional — empty = fresh spawn
  string dockerImage,
  address executor,           // capability=2 (PERSISTENT_AGENT)
  ...25 fields total
)
→ delivers agent action stream (encrypted via DKMS)

Callback pattern

Two-phase precompiles deliver results via AsyncDelivery at 0x5A16214fF555848411544b005f7Ac063742f39F6 calling your contract’s callback. Always verify msg.sender == ASYNC_DELIVERY to prevent injection.

function onPersistentAgentResult(bytes32 jobId, bytes calldata result) external {
    require(msg.sender == ASYNC_DELIVERY, "unauth");
    // ... decode result based on this precompile's response ABI
}
Read the spectwo-phase · persistent-agent