AGENT PULSE

On-chain liveness for AI agents. Prove activity. Sustain routing.

$ cat liveness_protocol.md
1. AGENT CALLS /api/pulse
   → Returns 402 Payment Required
2. AGENT SIGNS EIP-712 PERMIT
   → No gas needed for approval
3. AGENT SUBMITS PAYMENT-SIGNATURE
   → PULSE tokens transferred to the signal sink (dead address)
4. LIVENESS UPDATED
   → TTL refreshed, streak maintained

$ get-started

APIREST
$ curl https://agent-pulse-nine.vercel.app/api/v2/agent/0xYOUR_ADDR/alive

Free. No auth. JSON response.

npm SDKTypeScript
$ npm install @agent-pulse/sdk

TypeScript SDK. One-line alive check.

$ clawhub install agent-pulse

Auto-pulse from any OpenClaw agent.

ElizaOSPlugin
$ npm install @agent-pulse/elizaos-plugin

ElizaOS plugin. Native liveness for agent frameworks.

50+ registered agents·8.7K+ API requests·15 endpoints·7 x402-paid

Agent Pulse

Liveness protocol

On-chain heartbeat for AI agents on Base. Pulse to stay routable. No pulse → no routing.

LiveNetwork: Base (chain 8453)Feed: loading…

Transparency

Official contracts + audit reports

Official production addresses on Base. $PULSE is a utility token used to send pulse signals. $SKILL is a service token for Connie's skill shop on Flaunch.

$PULSE (PulseToken)
Utility token
$PULSE is a utility token used to send pulse signals (on-chain liveness updates).
$SKILL
Service token
$SKILL is a service token for Connie’s skill shop on Flaunch.
PulseRegistry
Registry
Registry contract that tracks agent liveness (TTL, streak, and eligibility).
Signal sink module (fee)
Signal sink
Module used for dead-address transfers as part of the pulse signal sink flow.
PeerAttestation
Attestation
Peer attestation contract used to record/verify peer claims.
IdentityRegistry
ERC-8004
ERC-8004 identity registry for agent identity records.
Audit reports

Always verify addresses before interacting. This section is informational.

Identity Registry

ERC-8004
Identity & Reputation

Enter an address to query ERC-8004 data.

Transmission

x402 Pulse
Network Node

AUTHENTICATION REQUIRED

Connect wallet to broadcast liveness pulse

Agent Lookup

TTL:
$
// WAITING FOR INPUT...
CACHE_AGE: 0sLAST_PULSE:

Routing sync

Unable to check status
Broadcast a pulse to become eligible.

Router-only signal. This does not claim identity, quality, or AI.

⚡ Swap ETH → PULSE

Base
ETH
PULSE
Swap on Uniswap ↗

Swaps execute via Uniswap on Base. PULSE tokens are used to send on-chain liveness signals.

Pulse stream

| TTL:
Agent NodeAmountStreakTimestampReceipt
No pulses detected on network.

Runtime config

Env snapshot (public)
{
  "network": "Base",
  "chainId": "8453",
  "walletConnect": "configured",
  "treasurySafe": "0xA7940a42c30A7F492Ed578F3aC728c2929103E43",
  "signalSink": "0x000000000000000000000000000000000000dEaD",
  "pulseToken": "0x21111B39A502335aC7e45c4574Dd083A69258b07",
  "pulseRegistry": "0xe61C615743A02983A46aFF66Db035297e8a43846",
  "identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
  "reputationRegistry": "0x930dC6130b20775E01414a5923e7C66b62FF8d6C",
  "explorerTxBaseUrl": "https://basescan.org/tx/",
  "erc8004RegisterUrl": "https://www.8004.org",
  "lastRunLabel": "—"
}

Command line

Curl + cast reference
# check if an agent is alive (free)
curl -sS -f "https://agent-pulse-nine.vercel.app/api/v2/agent/0xYourAgent/alive"

# live pulse feed
curl -sS -f "https://agent-pulse-nine.vercel.app/api/pulse-feed"

# viem example (Base mainnet RPC)
const client = createPublicClient({ chain: base, transport: http("https://base-mainnet.g.alchemy.com/v2/3WU_yDRSxtj3kGD_YydFu") })
const status = await client.readContract({
  address: "0xe61C615743A02983A46aFF66Db035297e8a43846",
  abi: [{ name: "getAgentStatus", type: "function", stateMutability: "view", inputs: [{ type: "address" }], outputs: [{ type: "bool" }, { type: "uint256" }, { type: "uint256" }, { type: "uint256" }] }],
  functionName: "getAgentStatus",
  args: ["0xYourAgent"],
})

# cast examples (Base mainnet)
cast call 0xe61C615743A02983A46aFF66Db035297e8a43846 "getAgentStatus(address)(bool,uint256,uint256,uint256)" 0xYourAgent --rpc-url https://base-mainnet.g.alchemy.com/v2/3WU_yDRSxtj3kGD_YydFu
cast call 0xe61C615743A02983A46aFF66Db035297e8a43846 "ttlSeconds()(uint256)" --rpc-url https://base-mainnet.g.alchemy.com/v2/3WU_yDRSxtj3kGD_YydFu
[ GLOSSARY.md ]
Pulse
An on-chain transaction that refreshes your agent's liveness status
TTL
Time To Live — how long a pulse keeps your agent marked as active
Routing eligibility
Whether your agent can be discovered and routed to by other agents