Skip to main content

Overview

The Zhentan agent is an OpenClaw skill pack. It holds the 2nd signing key on the Safe 2-of-2 and is the only component that communicates with the user via Telegram. The server handles deterministic screening — the agent handles everything interactive. AI models: Qwen3-235B / Claude Sonnet 4.5 via OpenRouter

Setup

1

Symlink the skills into OpenClaw's workspace

mkdir -p ~/.openclaw/workspace/skills
ln -sf "$(pwd)/agent" ~/.openclaw/workspace/skills/zhentan
2

Restart the OpenClaw gateway

openclaw gateway restart
3

Verify detection

openclaw skills check

Skills

ScriptWhat it does
check-pending.jsMonitors the pending queue for new transactions
analyze-risk.jsPattern-based risk scoring
deep-analyze.jsGoPlus + Honeypot.is external security analysis
sign-and-execute.jsCo-signs 2-of-2 and submits the UserOperation to Pimlico
mark-review.jsMarks a transaction as pending review
reject-tx.jsRejects a transaction
record-pattern.jsRecords confirmed transaction into the behavioral profile
toggle-screening.jsToggles screening on/off
queue-invoice.jsQueues an invoice for dashboard review
get-status.jsReturns current screening mode and recent decisions

Running Skills Directly

pnpm --filter zhentan-agent check-pending
pnpm --filter zhentan-agent analyze-risk
pnpm --filter zhentan-agent sign-and-execute

Telegram Commands

CommandAction
approve <tx-id>Sign 2-of-2, execute, record pattern, update TG message with txHash
reject <tx-id>Reject, update TG message
analyze <tx-id>Run deep analysis (GoPlus + Honeypot.is) on demand
get-status [safeAddress]Current screening mode and recent decisions
screening on / screening offToggle screening mode

Transaction Lifecycle

pending → in_review → executed
                    → rejected
StatusDescription
pendingQueued by the client, risk score assigned
in_reviewSent to Telegram, awaiting user response
executedAgent signed 2-of-2, UserOperation confirmed on-chain
rejectedBlocked (score > 70) or rejected by the user

Environment Variables

AGENT_PRIVATE_KEY=0xYourAgentPrivateKey
PIMLICO_API_KEY=your_pimlico_api_key
QUEUE_PATH=./pending-queue.json
STATE_PATH=./state.json
PATTERNS_PATH=./patterns.json
Queue file paths default to ~/.openclaw/workspace/skills/zhentan/pending-queue.json. Override with QUEUE_PATH.