issue #7 · automation gallery

keeper / hub

The agent runs its own infrastructure. Vercel hosts the application; KeeperHub schedules and executes the agent's automations. Each workflow card below is a recipe — open KeeperHub's dashboard, create a new workflow, drop in the listed nodes with the exact parameters shown, and paste the resulting workflow id back into the env var (or Edge Config key). Vercel cron handlers stay as fallbacks; the primary execution path is keeper-driven.

workflows
2
configured
1
recent runs
120
last run
26d ago

shared parameters · copy these into every workflow

webhook url
https://hackagent-nine.vercel.app/api/webhooks/keeperhub
ens name
tradewise.agentlab.eth
ens namehash
0x6d81003b2f91af0480ced9f5ab8aec945befadb5342a572c264ec86bcfc00cce
resolver
0xE99638b40E4Fff0129D56f03b55b6bbC4BBE49b5
reputation registry
0x477D6FeFCE87B627a7B2215ee62a4E21fc102BbA
signer wallet
PRICEWATCH_PK · owns the ENS subname; use it for any setText / setAgentWallet writes
§01

ens heartbeat

webhook only · push from x402 · configured

writes `last-seen-at` to the agent's ENS text record. webhook trigger only — fires when /api/a2a/jobs pushes via execute_workflow on a paid x402 quote (debounced 5min). no cron schedule means zero gas when the agent is idle. /api/cron/ens-heartbeat on Vercel is the absolute fallback if both KeeperHub and x402 go silent.

env var · KEEPERHUB_WORKFLOW_ID_HEARTBEAT = 0zuje21a39euf7ow86f2s

recipe · 3 nodes

  1. 1.
    triggercron schedule
    cron
    0 * * * *
    input.ts
    {{$now.timestamp}}
    or webhook
    POST https://hackagent-nine.vercel.app/api/cron/ens-heartbeat

    either keeperhub's own cron, or call the vercel cron route which forwards to this workflow when the env var is set.

  2. 2.
    web3 · writesetText (sepolia)
    chain
    ethereum sepolia (11155111)
    address
    0xE99638b40E4Fff0129D56f03b55b6bbC4BBE49b5
    function
    setText(bytes32,string,string)
    node
    0x6d81003b2f91af0480ced9f5ab8aec945befadb5342a572c264ec86bcfc00cce
    key
    last-seen-at
    value
    {{$trigger.input.ts}}
    signer
    PRICEWATCH_PK (deployer wallet)

    ENS PublicResolver on Sepolia. node = namehash('tradewise.agentlab.eth'). signer must own the ENS subname (deployer pricewatch wallet does).

  3. 3.
    http · webhookcallback to /api/webhooks/keeperhub
    method
    POST
    url
    https://hackagent-nine.vercel.app/api/webhooks/keeperhub
    body
    {"kind":"heartbeat","workflowRunId":"{{$run.id}}","txHash":"{{$step2.txHash}}","summary":"ens last-seen-at updated"}

no runs recorded yet

§02

reputation cache (deprecated)

n/a — Redis-only via reputation-pulse webhook · not configured

Old workflow was deleted from KeeperHub. Reputation freshness now uses /api/keeperhub/reputation-pulse which writes the summary to Redis without an on-chain setText — saves gas on the agent's quiet hours and avoids the ENS-write coupling.

env var · set = <workflow id> in vercel + .env.local

recipe · 1 nodes

  1. 1.
    http · webhookPOST /api/keeperhub/reputation-pulse
    trigger
    push from /api/a2a/jobs
    auth
    Bearer KEEPERHUB_WEBHOOK_SECRET
    body
    { ts, feedbackCount, summary }

no runs recorded yet