Hermes Agent plugin for crypto: wallets, DEX trading, lending and staking, governance, on-chain automation.
Project description
clawmes
Hermes Agent for crypto.
[!WARNING] Pre-alpha. Do not use real funds. No real-network validation has happened yet, and no third-party security audit has been done. The signing paths are tested with mocks but unverified against live mainnet conditions. Use small testnet amounts only until v1.0. See SECURITY.md for the full threat model and recovery checklist.
Clawmes is a Hermes Agent plugin. Wallets, DEX trading, lending and staking, governance, on-chain automation. Python rewrite of @clawnch/openclaw-crypto targeting Hermes.
52 tools. 75 commands. 22 services. 11 hooks. Runs on Telegram, Discord, Slack, Signal, WhatsApp, iMessage, and LINE.
Quick start
# 1. Install Hermes Agent (see https://github.com/NousResearch/hermes-agent)
# 2. Install clawmes from PyPI:
pip install clawmes
hermes plugins enable clawmes
hermes clawmes init # interactive setup wizard
hermes # start chatting
The hermes clawmes init wizard prompts for wallet mode (WalletConnect / local / Bankr), per-mode setup (project ID / password+mnemonic / API key), and optional API keys for the most-used integrations. It writes everything to ~/.hermes/.env in upsert mode (existing keys preserved).
Alternative: install direct from GitHub
hermes plugins install clawnchdev/clawmes --enable
hermes clawmes init
This skips PyPI and pulls from the latest main. Use it if you want a specific commit or pre-release.
Editable / dev install
git clone https://github.com/clawnchdev/clawmes
cd clawmes
pip install -e ".[dev]"
hermes plugins enable clawmes
hermes clawmes init
Releases publish to PyPI automatically via Trusted Publishing on every v* tag push (no tokens, OIDC verified). See .github/workflows/release.yml.
Tools
| Category | Tools | What it does |
|---|---|---|
| Wallet (4) | clawnchconnect, transfer, permit2, approvals |
WalletConnect pairing, ENS transfers, Permit2 signed approvals, ERC-20 allowance management |
| Trading (8) | defi_swap, defi_balance, defi_lend, defi_stake, defi_price, liquidity, manage_orders, bridge |
0x DEX aggregator, Aave V3 lending, Lido/Rocket Pool staking, Uniswap V3 LP positions, limit/stop/trailing/DCA orders, LiFi cross-chain bridging |
| Yield/Analytics (4) | yield, analytics, market_intel, cost_basis |
DeFiLlama yields, RSI/MACD/Bollinger TA, trending tokens via CoinGecko, FIFO P&L from local ledger |
| Launches (6) | clawnch_launch, clawnch_fees, bankr_launch, bankr_automate, bankr_polymarket, bankr_leverage |
Token deploys on Base via Clawnch launchpad, Bankr-side automation rules, Polymarket predictions, Avantis perp leverage |
| Ownership (4) | nft, airdrop, privacy, safe |
Reservoir NFT API, OZ Merkle distributor airdrop claims, Lobster privacy pools, Gnosis Safe multisig |
| Governance (2) | governance, farcaster |
Snapshot + Tally proposals/voting, Neynar Farcaster cast/search/feed |
| On-chain Intel (4) | block_explorer, herd_intelligence, watch_activity, browser |
Etherscan family, Herd whale tracking, persistent watch list, headless Playwright browsing |
| Automation (1) | compound_action |
Multi-step plans (DCA, conditional triggers, loops) via plan scheduler |
| Agent ops (4) | molten, clawnx, hummingbot, wayfinder |
X/Twitter posting, agent-to-agent matching, local Hummingbot market-making gateway, multi-step route optimization |
| Memory (3) | agent_memory, skill_evolve, session_recall |
Hermes-backed persistent memory, agentic skill self-improvement, past-session search |
| Safety & identity (2) | policy_manage, agent_identity |
LLM-callable policy CRUD with propose→confirm flow, ed25519 keypair + did:key for verifiable agent identity |
| Agent economy (5) | bv7x, bv7x_oracle, bv7x_market, a2a_call, eas_attestation |
BV-7X autonomous BTC oracle (signals + on-chain attestations + premium endpoints), generic A2A JSON-RPC client, EAS attestation reader on Base |
| Misc (5) | giza, nookplot, paysponge, lobster_cash, _user_tools |
zkML inference, Farcaster analytics, fiat ramp, privacy pools, custom-tool dispatcher |
Commands
75 slash commands across 15 categories. Commands run synchronously without invoking the LLM, so they're cheap and predictable.
| Category | Commands |
|---|---|
| Wallet (8) | /wallet /connect /connect_local /connect_bankr /disconnect /mode /chain /address |
| Wallet recovery (4) | /create_wallet /recover /export_wallet /wallet_backup |
| Policy & safety (5) | /policy /policy_clear /safemode /dangermode /audit |
| Transactions (4) | /tx /tx_search /tx_export /pending |
| Plans & triggers (10) | /plans /plan /plan_logs /interrupt_plan /pause_plan /resume_plan /triggers /watch /unwatch /cron |
| Onboarding (19) | /welcome, 5 personas (/professional /degen /chill /technical /mentor), 10 capability toggles (/cap_wallet /cap_prices /cap_portfolio /cap_trading /cap_liquidity /cap_launchpad /cap_bridge /cap_routing /cap_clawnx /cap_hummingbot), /skip /back /reonboard |
| Balance & portfolio (2) | /balance /portfolio |
| Self-evolution (3) | /evolve /stable /evolution — gates agent_memory and skill_evolve write actions; OFF by default |
| Endpoint allowlist (3) | /allowlist /allow /disallow — session-scoped host allowlist + 100-entry block audit ring |
| Discoverability (5) | /skills /persona /chains /tools_list /safety_status |
| Info (5) | /history /clear_history /version /about /uptime |
| Agent identity (1) | /identity — show/generate ed25519 keypair + did:key |
| BV-7X (2) | /bv7x /btc |
| Launch (Clawnch) (2) | /launch /register_agent — deploy a token from chat via the Clawnch launchpad |
| Meta (2) | /doctor /help |
A pre_llm_call hook injects the last 5 slash-command calls into LLM context, so the agent stops re-asking things you just answered via slash (/balance → "what's my balance?" → agent uses the cached result rather than re-fetching).
Channels
| Channel | Status | Notes |
|---|---|---|
| Telegram | Production | Slash menu auto-registered, deep links, streaming, voice transcription via Hermes |
| Discord | Ready | Slash commands auto-register, thread bindings |
| Slack | Ready | Channels and DMs |
| Signal | Ready | Requires signal-cli bridge (Hermes-managed) |
| Ready | Requires WhatsApp Web bridge (Hermes-managed) | |
| iMessage | Ready | macOS only — Hermes' bluebubbles adapter |
| LINE | Ready | Requires LINE Messaging API |
All tools and commands work identically on every channel.
Wallet modes
| Mode | Key custody | How it works |
|---|---|---|
| WalletConnect | Your phone wallet | /connect generates a pairing link via the bundled Node WC bridge. Every write tx goes to your phone for approval. |
| Local key | Local encrypted | BIP-39 mnemonic generated locally, encrypted with scrypt + AES-256-GCM, stored in macOS Keychain or an encrypted file. Manage with /create_wallet, /connect_local, /recover, /export_wallet, /wallet_backup. |
| Bankr | Custodial | /connect_bankr or BANKR_API_KEY. Multi-chain custodial wallet. Good for automation-heavy setups + leverage + Polymarket. |
Spending policies set in natural language:
/policy approve transfers under 0.05 ETH on Base, max 10/hour
For programmatic policy management (the LLM can propose, you confirm), use the policy_manage tool — propose→confirm flow with confirm_store enforcement, plus list/get/disable/enable/delete/evaluate(dry-run)/usage/categories actions.
Automation
The compound action engine lets users describe multi-step plans in natural language:
- Time triggers —
every day at 9am, check ETH price - Price triggers —
when ETH drops below $2000, swap 1 ETH to USDC - On-chain triggers —
when gas is under 10 gwei, execute the pending swap - Conditionals —
if my portfolio is down more than 5%, alert me - Loops + parallel —
DCA $100 into ETH every week for 12 weeks
Plans persist to disk and survive restarts. Managed via /plans, /interrupt_plan. The plan tick loop is driven by Hermes' built-in cron daemon.
Ecosystem integrations
Clawmes wires the following partner / ecosystem projects directly into the tool + slash-command surface:
-
BV-7X — autonomous BTC signal oracle launched on the Clawnch launchpad two days after the launchpad went live. Daily on-chain predictions via EAS attestations on Base; ~60% live accuracy; real Polymarket wager bot. Clawmes wires the full public + auth-gated surface:
- Slash:
/btc(price + Fear & Greed + ETF flow in one line),/bv7x(track record + market regime + agent identity). - Tools:
bv7x(agent + A2A + commerce),bv7x_oracle(signals + on-chain attestations + premium endpoints),bv7x_market(BTC market data). - Skill bundle:
clawmes:bv7xdocuments the LLM-facing surface. - Premium endpoints (
oracle,oracle_premium,copy_trade_next,copy_trade_history) requireBV7X_API_KEY— hold ≥500M$BV7Xand complete the wallet-verify at https://bv7x.ai/terminal#developer.
- Slash:
-
gitlawb OpenGateway — OpenAI-compatible LLM inference gateway. Routes Xiaomi MiMo, GMI Cloud, and more behind one endpoint, server-side secrets. Two integration modes: (1) point Hermes itself at OpenGateway via
hermes model(config-only, no clawmes code change) — every LLM call the agent makes routes through it; (2) clawmes tools can call OpenGateway directly viaOpenGatewayService.chat_completion()for targeted subtasks outside the main agent loop. -
EAS (Ethereum Attestation Service) — generic on-chain attestation primitive on Base. The
eas_attestationtool reads any attestation from the canonical EAS singleton (0x4200…0021) — BV-7X predictions are one example, but the tool also works for trust-score certificates, KYC results, and any other EAS-using protocol. Configurablechain_id+eas_addressfor other L2s. -
A2A protocol — generic agent-to-agent JSON-RPC 2.0 client (
a2a_calltool).discoverfetches a peer's AgentCard at/.well-known/agent-card.json;send_taskposts JSON-RPC tasks. Works against any A2A-speaking peer; tested against BV-7X.
Launch a token from chat
Clawmes wires the Clawnch launchpad end-to-end so any user can deploy a token from a chat message:
/register_agent MyAgent | An agent that launches tokens
# clawmes posts a challenge, your wallet signs it, clawn.ch
# returns an apiKey. Save it as CLAWNCH_API_KEY in ~/.hermes/.env.
/launch name MyCoin
/launch symbol MC
/launch description The next big thing # optional
/launch image https://i.imgur.com/mycoin.png # optional
/launch twitter mycoin # optional — also: /launch x
/launch website mycoin.xyz # optional
/launch telegram mycoinchat # optional
/launch farcaster mycoin # optional
/launch discord https://discord.gg/abc # optional
/launch confirm
# Clawnch's deployer wallet submits the Clanker tx server-side;
# your wallet only signs the captcha. Returns tx hash + token
# address.
Social handles get normalized (mycoin → https://x.com/mycoin); full URLs pass through unchanged. They're persisted to tokenParams.metadata.socialMediaUrls on the launchpad side and may render as badges on the launch detail page.
Free-tier rate limit: 1 deploy per 24 hours per agent. To skip the cooldown, send 0.001 ETH (or the current bypass amount) to the Clawnch bypass recipient on Base, then /launch bypass <tx_hash> and /launch confirm.
How the gate works:
→ CLAWNCH_API_KEY authenticates the agent to the Clawnch API
→ The launchpad returns a 5-second captcha challenge (storage-slot read + signed message + keccak proof)
→ Clawmes solves the captcha using the active wallet's personal_sign
→ Clawnch's deployer wallet (server-side) pays gas and submits the underlying Clanker call
Wallet signs only the off-chain captcha — Clawnch pays deploy gas. The clawnch_launch tool (LLM-callable) and clawnch_fees (read launches + fee accrual) follow the same path. See clawmes:clawnch-launch skill for the LLM-facing surface.
Security
- WalletConnect mode: clawmes never holds unencrypted private keys.
- Every write tool gates through readonly check + policy evaluation + delegation execution + ledger record.
- Credential leak detection on every LLM-bound output.
- Prompt-injection-resistance guardrails in SOUL.md.
- Sequential write execution — never queues multiple txs.
- Bounded approvals — exact amounts, never unlimited.
- Outbound HTTP restricted to a curated default allowlist, with optional runtime session-scoped additions via
/allow <host>(/allowlistshows defaults + user-added + last 100 blocked attempts). - Transaction verification — always shows what a tx will do before executing.
- Self-modification gate: the agent's own memory (
agent_memory) and skill files (skill_evolve) are write-gated through an explicit "evolution mode" — OFF by default./evolveenables,/stabledisables,/evolutionshows status. Closes the prompt-injection drift vector where an attacker could rewrite the agent's own context. - Verifiable agent identity: each agent has an ed25519 keypair +
did:keyencoding, independent from the wallet. Use the wallet key for on-chain transactions; use the DID key for protocol messages (MCP calls, capability delegations, attestation signatures)./identityto show/generate.
CLI subcommands
hermes clawmes init Interactive setup wizard
hermes clawmes doctor Diagnostics
hermes clawmes wallet Wallet status / mode switch
hermes clawmes plans Plan status / list / cancel
hermes clawmes policy Policy status / set / clear
hermes clawmes persona reinstall Force-overwrite SOUL.md (with confirm)
hermes clawmes skills install Copy bundled skills to writable user namespace
hermes clawmes update pip install -U clawmes + bridge refresh
hermes clawmes version Show version
hermes clawmes uninstall Remove from plugins.enabled (state preserved)
Architecture
hermes (the upstream CLI, hermes-agent ≥ 2026.4.x)
└── PluginManager.discover_and_load()
└── clawmes.register(ctx)
├── 52 tools (registered via ctx.register_tool, write-gated)
├── 75 commands (registered via ctx.register_command)
├── 11 hooks (pre_tool_call, post_tool_call, pre_llm_call, ...)
├── 29 skills (registered via ctx.register_skill, namespaced clawmes:*)
├── CLI subcmds (registered via ctx.register_cli_command)
└── 22 services (start_all() starts background lifecycle)
│
├── subprocess: clawmes-wc-bridge (Node — WalletConnect v2)
└── subprocess: clawmes-sa-bridge (Node — MetaMask Smart Accounts; planned)
Two bundled Node sub-process bridges (clawmes-wc-bridge, clawmes-sa-bridge) handle WalletConnect v2 sign-client and MetaMask Smart Accounts SDK respectively, talking JSON-line RPC over stdio. They install on first plugin load via npm ci against pinned package-lock.json files in the wheel.
Configuration
Required in ~/.hermes/.env:
# LLM (one of these — Hermes' standard)
ANTHROPIC_API_KEY=
OPENROUTER_API_KEY=
OPENAI_API_KEY=
NOUS_PORTAL_API_KEY=
# Channel (one of these — Hermes' standard)
TELEGRAM_BOT_TOKEN=
DISCORD_TOKEN=
SLACK_BOT_TOKEN=
# Wallet — pick one mode
WALLETCONNECT_PROJECT_ID=
CLAWMES_LOCAL_KEY_PASSWORD=
BANKR_API_KEY=
Optional (per-tool — features degrade gracefully without their key):
# RPC + explorers
ALCHEMY_API_KEY=
BASESCAN_API_KEY=
ETHERSCAN_API_KEY=
ARBISCAN_API_KEY=
OPTIMISM_ETHERSCAN_API_KEY=
POLYGONSCAN_API_KEY=
CLAWMES_RPC_<chain_id>= # override per-chain RPC URL
# DEX / bridge aggregators
ZEROX_API_KEY=
LIFI_API_KEY=
# LLM inference gateway (gitlawb opengateway — OpenAI-compatible)
OPENGATEWAY_API_KEY= # ogw_live_… — recommended; service runs unauthenticated without it
# during the gitlawb partnership window (auth optional today)
OPENGATEWAY_MODEL= # optional default model id sent when callers omit model=
# Market data + analytics
COINGECKO_API_KEY=
HERD_ACCESS_TOKEN=
# Social
NEYNAR_API_KEY=
NEYNAR_SIGNER_UUID=
NOOKPLOT_API_KEY=
# NFT
RESERVOIR_API_KEY=
# Governance
TALLY_API_KEY=
# Clawnch launchpad (token deploys via /launch + /register_agent)
CLAWNCH_API_KEY= # issued by /register_agent or POST /api/agents/register on clawn.ch
# Specialized
GIZA_API_KEY= # zkML inference
PAYSPONGE_API_KEY= # fiat on/off-ramp
LOBSTER_API_KEY= # privacy pools
MOLTEN_API_KEY= # X (Twitter) integration
CLAWNX_API_KEY= # agent-to-agent network
HUMMINGBOT_API_KEY= # market-making gateway (also: HUMMINGBOT_GATEWAY_URL)
WAYFINDER_API_KEY= # route optimization
# Token launches (override default contract addresses)
CLAWNCH_LAUNCHPAD_ADDRESS=
The setup wizard (hermes clawmes init) walks through the most-used keys interactively with live validation.
Using OpenGateway as your LLM provider
Clawmes ships under a partnership with gitlawb OpenGateway — an OpenAI-compatible inference gateway that routes a single endpoint across model providers (Xiaomi MiMo, GMI Cloud, more). There are two integration modes; you can use either or both.
Mode 1 — Route the whole Hermes stack through OpenGateway (recommended for most users).
Hermes already supports any OpenAI-compatible endpoint as a "custom" provider. Point it at OpenGateway via hermes model:
$ hermes model
# Pick: "custom endpoint" (or equivalent in your Hermes version)
# Base URL: https://opengateway.gitlawb.com/v1
# API key: ogw_live_… (sign in at https://gitlawb.com/opengateway/dashboard to generate one)
# Model: mimo-v2.5-pro (or any model OpenGateway routes; check https://opengateway.gitlawb.com/health)
This is config-only — no clawmes code change required. Every LLM call the agent makes (conversation, tool routing, summarization, everything Hermes drives) goes through OpenGateway, with secrets staying server-side. During the gitlawb partnership window the gateway accepts unauthenticated traffic, so you can try it without a key — but auth will become required, so generate one early.
Mode 2 — Targeted LLM calls from clawmes tools (advanced).
Clawmes also ships OpenGatewayService (clawmes/services/opengateway.py) — a service that gives any clawmes tool a first-class LLM client for subtasks outside the main agent loop (intent classification, swap-parameter extraction, governance-proposal summarization, etc). Tools opt in by calling:
from clawmes.services.opengateway import get_opengateway_service
result = get_opengateway_service().chat_completion(
messages=[{"role": "user", "content": "..."}],
model="mimo-v2.5-pro",
)
content = result["choices"][0]["message"]["content"]
This is independent from Mode 1 — Mode 2 calls go to OpenGateway regardless of which provider Hermes itself uses. Configure via the OPENGATEWAY_API_KEY / OPENGATEWAY_MODEL env vars above.
Development
git clone https://github.com/clawnchdev/clawmes
cd clawmes
pip install -e ".[dev]"
pytest # run tests
ruff check clawmes/ # lint
mypy clawmes/ # type-check
Adding a tool
# clawmes/tools/my_tool.py
from clawmes.tools.registry import write_tool, register_with_ctx
from clawmes.lib.tool_result import json_result
_SCHEMA = {...} # OpenAI function-calling schema
@write_tool(name="my_tool", toolset="clawmes-misc", schema=_SCHEMA, description="…")
def my_tool(args, **kwargs):
return json_result({...})
def register(ctx):
register_with_ctx(ctx, my_tool)
Then import and call register(ctx) from clawmes/tools/__init__.py:register_all().
See CONTRIBUTING.md for full guidelines and patterns.
Status
Early development. See CHANGELOG.md for milestone progress and HERMES_PARITY.md for the upstream Hermes API contract.
Tech stack
| Component | Version |
|---|---|
| Hermes Agent | ≥ 2026.4.23 |
| Python | ≥ 3.11 |
| web3.py | ≥ 7.0 |
| viem (in Node bridges) | ≥ 2.x |
Contributing
See CONTRIBUTING.md for development setup, code style, and PR process.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clawmes-0.2.1.tar.gz.
File metadata
- Download URL: clawmes-0.2.1.tar.gz
- Upload date:
- Size: 334.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6097d63d6e8ca7511a2d65a1c5f266aa998e00ec6c6937232587a3ba2cac01fa
|
|
| MD5 |
608193db721054cc2d8c7e662d48fff9
|
|
| BLAKE2b-256 |
16688fc91e4f473176172d7f791d91aad882ffdc85af77a294f704e40694b5f6
|
Provenance
The following attestation bundles were made for clawmes-0.2.1.tar.gz:
Publisher:
release.yml on clawnchdev/clawmes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clawmes-0.2.1.tar.gz -
Subject digest:
6097d63d6e8ca7511a2d65a1c5f266aa998e00ec6c6937232587a3ba2cac01fa - Sigstore transparency entry: 1603528705
- Sigstore integration time:
-
Permalink:
clawnchdev/clawmes@5094e520db848ae0a6b3b5a0c06543a8b93a9a64 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/clawnchdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5094e520db848ae0a6b3b5a0c06543a8b93a9a64 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clawmes-0.2.1-py3-none-any.whl.
File metadata
- Download URL: clawmes-0.2.1-py3-none-any.whl
- Upload date:
- Size: 417.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bbfb4366e5526e0ba6d42f0f39390a73079d1dec49c4a3bbb3cdc44828d6d47
|
|
| MD5 |
a7c5fe729b9d854acec6ecb8f79afa77
|
|
| BLAKE2b-256 |
efa7d70af3b08d3d0dce0d4e63bfc49d8085cf78e0ce6e4445711756d2b98edf
|
Provenance
The following attestation bundles were made for clawmes-0.2.1-py3-none-any.whl:
Publisher:
release.yml on clawnchdev/clawmes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clawmes-0.2.1-py3-none-any.whl -
Subject digest:
2bbfb4366e5526e0ba6d42f0f39390a73079d1dec49c4a3bbb3cdc44828d6d47 - Sigstore transparency entry: 1603529103
- Sigstore integration time:
-
Permalink:
clawnchdev/clawmes@5094e520db848ae0a6b3b5a0c06543a8b93a9a64 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/clawnchdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5094e520db848ae0a6b3b5a0c06543a8b93a9a64 -
Trigger Event:
push
-
Statement type: