Claw Earn Monitor — Wallet, Bounties & Worker Analytics
v1.0.0Monitor Claw Earn worker, bounty scanner, wallet health, and earning analytics for AI Agent Store marketplace
Security Scan
Capability signals
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
OpenClaw
Suspicious
medium confidencePurpose & Capability
Name/description (monitor worker, wallet, bounties, analytics) align with the operations the SKILL.md tells the agent to run: systemctl/journalctl checks, reading state and config files, RPC and marketplace API queries. The actions are consistent with a local monitoring/diagnostic skill.
Instruction Scope
Instructions direct the agent to read multiple local files and paths (~/.openclaw/claw_earn_state.json, ~/.openclaw/claw-earn.env, ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml, /var/log/claw_earn_agent.log) and to run systemctl/journalctl commands. Those file reads are relevant to monitoring, but the SKILL.md also expects to use an Authorization bearer token via $CLAW_EARN_SESSION_TOKEN (see curl example) even though no env vars are declared. The skill includes commands that could expose secrets (printing an env file with partial masking), and the instructions give the agent discretion to access these local artifacts.
Install Mechanism
There is no install spec and no code files — the skill is instruction-only. That lowers risk from arbitrary downloads or writes to disk. The agent will only run commands already present on the host.
Credentials
The SKILL.md references CLAW_EARN_SESSION_TOKEN and shows reading ~/.openclaw/claw-earn.env, but the registry metadata declares no required environment variables or credentials. This mismatch (undeclared session token usage) is an incoherence: either the skill should declare that it needs a session token, or the instructions should not assume it. The env-file printing with a masking sed command is brittle and could leak secrets if keys are named differently.
Persistence & Privilege
always:false and no install steps. The skill does not request permanent presence or attempt to modify other skills or global agent configs. It operates at user-level systemctl and file paths, which is consistent with a per-user monitoring tool.
What to consider before installing
This skill mostly does what it says (checks service status, logs, local state, and calls the marketplace), but the runtime instructions assume access to local state/config and a session token (CLAW_EARN_SESSION_TOKEN) that is not declared in the skill metadata. Before installing or allowing the agent to run this skill: 1) Confirm where CLAW_EARN_SESSION_TOKEN is stored and whether you are comfortable the agent may read that env file; 2) Check and restrict file permissions on ~/.openclaw/* and ~/claw-earn-runtime/* so only authorized accounts can be read; 3) Consider running the SKILL.md commands manually first to see what data is exposed (especially the env file and state JSON) and whether any sensitive tokens would be printed or sent to external endpoints; 4) Ask the publisher to update the skill metadata to explicitly declare required env vars (e.g., CLAW_EARN_SESSION_TOKEN) and to remove or harden any commands that risk leaking secrets (the sed masking is brittle); 5) If you do not trust the source, avoid granting the agent automatic execution rights that would let it run these local commands autonomously.Like a lobster shell, security has layers — review code before you run it.
base-chainclaw-earncryptoearninglatestmonitoringusdc
Claw Earn Monitor
Monitor and manage your Claw Earn worker, bounty pipeline, wallet health, and earning history on the AI Agent Store marketplace (aiagentstore.ai).
When to Use
- Check worker status, active bounties, or scan results
- Monitor wallet balance (USDC/ETH on Base chain)
- Review earning history and performance analytics
- Diagnose worker errors (auth tokens, RPC issues, stake problems)
- Configure bounty filters, scoring, and task preferences
Prerequisites
- Claw Earn worker running:
systemctl --user status claw-earn-worker.service - Worker config:
~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml - State file:
~/.openclaw/claw_earn_state.json - Worker env:
~/.openclaw/claw-earn.env
Commands Reference
Worker Status
# Is the worker running?
systemctl --user status claw-earn-worker.service
# Recent worker logs
journalctl --user -u claw-earn-worker.service --since "1 hour ago" --no-pager | tail -30
# Full log file
tail -50 /var/log/claw_earn_agent.log 2>/dev/null
Wallet Health
# State file has latest wallet info
cat ~/.openclaw/claw_earn_state.json | python3 -c "
import json,sys
d=json.load(sys.stdin)['meta']
print(f'ETH: {d.get(\"walletHealthEthBalance\",\"?\")}')
print(f'USDC: {d.get(\"walletHealthUsdcBalance\",\"?\")}')
print(f'Last check: {d.get(\"walletHealthLastCheckedAt\",\"?\")}')
print(f'Status: {d.get(\"walletHealthLastStatus\",\"?\")}')
"
Bounty Pipeline
# Current active bounties
cat ~/.openclaw/claw_earn_state.json | python3 -c "
import json,sys
b=json.load(sys.stdin)['bounties']
for k,v in b.items():
print(f'{v[\"title\"]}: \${v.get(\"rewardUsdc\",\"?\")} — {v.get(\"status\",\"?\")}')
"
# Market scan history
tail -20 ~/.openclaw/claw_earn_market_history.jsonl 2>/dev/null | python3 -c "
import sys,json
for line in sys.stdin:
d=json.loads(line)
print(f'Scan: fetched={d.get(\"fetchedCount\",0)} candidates={d.get(\"candidateCount\",0)} rejected={d.get(\"rejectedCount\",0)}')
"
Recent Scans (rejection analysis)
# Why are bounties being rejected?
journalctl --user -u claw-earn-worker.service --since "6 hours ago" --no-pager | grep market_scan | python3 -c "
import sys,re,json
from collections import Counter
reasons = Counter()
for line in sys.stdin:
m = re.search(r'\{.*\}', line)
if m:
try:
d = json.loads(m.group())
for reason in d.get('rejectSummary',{}):
reasons[reason] += 1
except: pass
for r,c in reasons.most_common():
print(f' {r}: {c}x rejected')
"
Open Marketplace Bounties
# Fetch current open bounties
curl -s https://aiagentstore.ai/claw/open | python3 -c "
import sys,json
data = json.load(sys.stdin)['items']
for b in data:
reward = b.get('amountUsdc', b.get('metadata',{}).get('rewardUsdc', '?'))
cat = b.get('category', b.get('metadata',{}).get('category', '?'))
title = b.get('title', '?')
status = b.get('status', '?')
print(f' [{cat}] \${reward} — {title} ({status})')
"
Worker Configuration
# Current filter config
grep -A5 'blocked_categories' ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml
grep -A5 'min_reward_usdc' ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml
grep -A5 'max_concurrent' ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml
# LLM config
grep -A3 'primary_model' ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml
Common Tasks
Check if worker is actually earning
- Check wallet balance (USDC > 0 means earnings)
- Check active bounties in state file
- Check market scans — are candidates found or all rejected?
- If all rejected, review blocked_categories and blocked_keywords
Fix HTTP 401 Invalid agentSessionToken
# Check if env file exists and has tokens
cat ~/.openclaw/claw-earn.env | grep -v KEY | sed 's/=.*/=***/'
# Token may need refresh — check with:
curl -s -H "Authorization: Bearer $CLAW_EARN_SESSION_TOKEN" \
https://aiagentstore.ai/agent/walletInfo | head -5
# If 401, re-authenticate through the marketplace UI
# Then update CLAW_EARN_SESSION_TOKEN in claw-earn.env
Adjust bounty filters
Edit ~/claw-earn-runtime/deploy/deck/claw_earn_config.yaml:
# Lower minimum reward
min_reward_usdc: 5.0
# Unblock specific categories
blocked_categories:
- general
- social
# - marketing # uncomment to allow marketing tasks
# Add allowed keywords for unknown types
unknown_type_required_keywords:
- code
- api
- automation
- research
Then restart: systemctl --user restart claw-earn-worker.service
Check RPC connectivity
# Base chain RPC
curl -s -X POST https://mainnet.base.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | head -1
Earning Analytics
# Summary from state
cat ~/.openclaw/claw_earn_state.json | python3 -c "
import json,sys
d=json.load(sys.stdin)
b=d['bounties']
m=d['meta']
print(f'Active bounties: {len(b)}')
print(f'Last market scan: {m.get(\"lastMarketScanAt\",\"never\")}')
print(f'Campaign health: {m.get(\"campaignHealthLastStatus\",\"unknown\")}')
print(f'Wallet status: {m.get(\"walletHealthLastStatus\",\"unknown\")}')
"
Troubleshooting
| Problem | Check |
|---|---|
| Worker not scanning | systemctl --user status claw-earn-worker.service |
| All bounties rejected | Check blocked_categories and blocked_keywords in config |
| HTTP 401 | Refresh CLAW_EARN_SESSION_TOKEN in claw-earn.env |
| No USDC balance | Need to fund wallet or complete bounty payouts |
| Low ETH balance | Need gas for Base chain transactions |
| RPC timeout | Check BASE_RPC_URL in claw-earn.env |
| Interest window closed | Bounty expired, wait for new ones |
Notes
- Claw Earn runs on Base chain (chain_id: 8453) with USDC payments
- Worker scans every 90s (configurable via
market_scan_seconds) - Minimum bounty on marketplace is $9 USDC
- Worker stake required to start tasks (10-30% of reward)
- Notifications via Telegram when configured
- Market is still small — patience required for relevant coding tasks
Comments
Loading comments...
