clawmes 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. clawmes-0.1.0/LICENSE +21 -0
  2. clawmes-0.1.0/PKG-INFO +314 -0
  3. clawmes-0.1.0/README.md +266 -0
  4. clawmes-0.1.0/clawmes/__init__.py +142 -0
  5. clawmes-0.1.0/clawmes/_version.py +10 -0
  6. clawmes-0.1.0/clawmes/bridges/__init__.py +24 -0
  7. clawmes-0.1.0/clawmes/bridges/installer.py +126 -0
  8. clawmes-0.1.0/clawmes/bridges/process.py +263 -0
  9. clawmes-0.1.0/clawmes/bridges/sa_client.py +96 -0
  10. clawmes-0.1.0/clawmes/bridges/sources/wc/package-lock.json +1130 -0
  11. clawmes-0.1.0/clawmes/bridges/sources/wc/package.json +22 -0
  12. clawmes-0.1.0/clawmes/bridges/sources/wc/src/index.ts +137 -0
  13. clawmes-0.1.0/clawmes/bridges/sources/wc/src/methods.ts +247 -0
  14. clawmes-0.1.0/clawmes/bridges/sources/wc/src/wc-client.ts +63 -0
  15. clawmes-0.1.0/clawmes/bridges/sources/wc/tsconfig.json +18 -0
  16. clawmes-0.1.0/clawmes/bridges/wc_client.py +77 -0
  17. clawmes-0.1.0/clawmes/cli/__init__.py +45 -0
  18. clawmes-0.1.0/clawmes/cli/_argparse.py +159 -0
  19. clawmes-0.1.0/clawmes/cli/doctor.py +151 -0
  20. clawmes-0.1.0/clawmes/cli/init.py +338 -0
  21. clawmes-0.1.0/clawmes/cli/version.py +21 -0
  22. clawmes-0.1.0/clawmes/commands/__init__.py +40 -0
  23. clawmes-0.1.0/clawmes/commands/doctor.py +315 -0
  24. clawmes-0.1.0/clawmes/commands/help.py +96 -0
  25. clawmes-0.1.0/clawmes/commands/plans.py +67 -0
  26. clawmes-0.1.0/clawmes/commands/policy.py +121 -0
  27. clawmes-0.1.0/clawmes/commands/tx.py +160 -0
  28. clawmes-0.1.0/clawmes/commands/wallet.py +193 -0
  29. clawmes-0.1.0/clawmes/data/SOUL.md +61 -0
  30. clawmes-0.1.0/clawmes/data/__init__.py +2 -0
  31. clawmes-0.1.0/clawmes/data/personas/chill.md +9 -0
  32. clawmes-0.1.0/clawmes/data/personas/degen.md +9 -0
  33. clawmes-0.1.0/clawmes/data/personas/mentor.md +9 -0
  34. clawmes-0.1.0/clawmes/data/personas/professional.md +9 -0
  35. clawmes-0.1.0/clawmes/data/personas/technical.md +9 -0
  36. clawmes-0.1.0/clawmes/hooks/__init__.py +39 -0
  37. clawmes-0.1.0/clawmes/hooks/after_tool_call.py +132 -0
  38. clawmes-0.1.0/clawmes/hooks/on_session.py +39 -0
  39. clawmes-0.1.0/clawmes/hooks/pre_gateway_dispatch.py +51 -0
  40. clawmes-0.1.0/clawmes/hooks/pre_tool_call.py +32 -0
  41. clawmes-0.1.0/clawmes/hooks/prompt_builder.py +101 -0
  42. clawmes-0.1.0/clawmes/hooks/subagent_stop.py +39 -0
  43. clawmes-0.1.0/clawmes/hooks/transform_terminal_output.py +33 -0
  44. clawmes-0.1.0/clawmes/hooks/transform_tool_result.py +42 -0
  45. clawmes-0.1.0/clawmes/ledger/__init__.py +14 -0
  46. clawmes-0.1.0/clawmes/ledger/tx_ledger.py +128 -0
  47. clawmes-0.1.0/clawmes/lib/__init__.py +6 -0
  48. clawmes-0.1.0/clawmes/lib/abi.py +137 -0
  49. clawmes-0.1.0/clawmes/lib/addr.py +72 -0
  50. clawmes-0.1.0/clawmes/lib/chains.py +140 -0
  51. clawmes-0.1.0/clawmes/lib/decimals.py +74 -0
  52. clawmes-0.1.0/clawmes/lib/ens.py +164 -0
  53. clawmes-0.1.0/clawmes/lib/http.py +196 -0
  54. clawmes-0.1.0/clawmes/lib/logger.py +72 -0
  55. clawmes-0.1.0/clawmes/lib/params.py +104 -0
  56. clawmes-0.1.0/clawmes/lib/paths.py +91 -0
  57. clawmes-0.1.0/clawmes/lib/time.py +95 -0
  58. clawmes-0.1.0/clawmes/lib/tool_result.py +69 -0
  59. clawmes-0.1.0/clawmes/onboarding/__init__.py +22 -0
  60. clawmes-0.1.0/clawmes/onboarding/flow.py +35 -0
  61. clawmes-0.1.0/clawmes/onboarding/personas.py +60 -0
  62. clawmes-0.1.0/clawmes/persona.py +74 -0
  63. clawmes-0.1.0/clawmes/plans/__init__.py +32 -0
  64. clawmes-0.1.0/clawmes/plans/compiler.py +28 -0
  65. clawmes-0.1.0/clawmes/plans/executor.py +32 -0
  66. clawmes-0.1.0/clawmes/plans/ir.py +78 -0
  67. clawmes-0.1.0/clawmes/plans/scheduler.py +131 -0
  68. clawmes-0.1.0/clawmes/plans/triggers/__init__.py +8 -0
  69. clawmes-0.1.0/clawmes/plans/triggers/price_trigger.py +44 -0
  70. clawmes-0.1.0/clawmes/plans/triggers/time_trigger.py +33 -0
  71. clawmes-0.1.0/clawmes/plans/validator.py +103 -0
  72. clawmes-0.1.0/clawmes/plugin.yaml +92 -0
  73. clawmes-0.1.0/clawmes/policy/__init__.py +36 -0
  74. clawmes-0.1.0/clawmes/policy/confirm_store.py +82 -0
  75. clawmes-0.1.0/clawmes/policy/evaluator.py +93 -0
  76. clawmes-0.1.0/clawmes/policy/parser.py +269 -0
  77. clawmes-0.1.0/clawmes/policy/storage.py +109 -0
  78. clawmes-0.1.0/clawmes/policy/types.py +117 -0
  79. clawmes-0.1.0/clawmes/policy/usage_counter.py +72 -0
  80. clawmes-0.1.0/clawmes/services/__init__.py +111 -0
  81. clawmes-0.1.0/clawmes/services/_base.py +57 -0
  82. clawmes-0.1.0/clawmes/services/aave.py +171 -0
  83. clawmes-0.1.0/clawmes/services/bankr_service.py +216 -0
  84. clawmes-0.1.0/clawmes/services/coingecko.py +170 -0
  85. clawmes-0.1.0/clawmes/services/credential_redactor.py +280 -0
  86. clawmes-0.1.0/clawmes/services/explorer.py +226 -0
  87. clawmes-0.1.0/clawmes/services/governance.py +125 -0
  88. clawmes-0.1.0/clawmes/services/lifi.py +185 -0
  89. clawmes-0.1.0/clawmes/services/mode_service.py +75 -0
  90. clawmes-0.1.0/clawmes/services/persona_service.py +85 -0
  91. clawmes-0.1.0/clawmes/services/price.py +114 -0
  92. clawmes-0.1.0/clawmes/services/registry.py +72 -0
  93. clawmes-0.1.0/clawmes/services/rpc.py +327 -0
  94. clawmes-0.1.0/clawmes/services/safe.py +140 -0
  95. clawmes-0.1.0/clawmes/services/staking.py +102 -0
  96. clawmes-0.1.0/clawmes/services/token_decimals.py +216 -0
  97. clawmes-0.1.0/clawmes/services/wallet.py +210 -0
  98. clawmes-0.1.0/clawmes/services/wc_notifications.py +130 -0
  99. clawmes-0.1.0/clawmes/services/zerox.py +243 -0
  100. clawmes-0.1.0/clawmes/skills/__init__.py +63 -0
  101. clawmes-0.1.0/clawmes/skills/agent-memory/SKILL.md +63 -0
  102. clawmes-0.1.0/clawmes/skills/airdrop/SKILL.md +85 -0
  103. clawmes-0.1.0/clawmes/skills/analytics/SKILL.md +109 -0
  104. clawmes-0.1.0/clawmes/skills/approvals/SKILL.md +88 -0
  105. clawmes-0.1.0/clawmes/skills/automation/SKILL.md +84 -0
  106. clawmes-0.1.0/clawmes/skills/bankr/SKILL.md +99 -0
  107. clawmes-0.1.0/clawmes/skills/block-explorer/SKILL.md +66 -0
  108. clawmes-0.1.0/clawmes/skills/bridge/SKILL.md +70 -0
  109. clawmes-0.1.0/clawmes/skills/browser/SKILL.md +62 -0
  110. clawmes-0.1.0/clawmes/skills/cost-basis/SKILL.md +61 -0
  111. clawmes-0.1.0/clawmes/skills/defi-swap/SKILL.md +89 -0
  112. clawmes-0.1.0/clawmes/skills/defi-trading/SKILL.md +67 -0
  113. clawmes-0.1.0/clawmes/skills/farcaster/SKILL.md +87 -0
  114. clawmes-0.1.0/clawmes/skills/governance/SKILL.md +97 -0
  115. clawmes-0.1.0/clawmes/skills/lending/SKILL.md +74 -0
  116. clawmes-0.1.0/clawmes/skills/liquidity/SKILL.md +130 -0
  117. clawmes-0.1.0/clawmes/skills/manage-orders/SKILL.md +66 -0
  118. clawmes-0.1.0/clawmes/skills/market-intel/SKILL.md +67 -0
  119. clawmes-0.1.0/clawmes/skills/nft/SKILL.md +95 -0
  120. clawmes-0.1.0/clawmes/skills/permit2/SKILL.md +96 -0
  121. clawmes-0.1.0/clawmes/skills/privacy/SKILL.md +60 -0
  122. clawmes-0.1.0/clawmes/skills/safe-multisig/SKILL.md +99 -0
  123. clawmes-0.1.0/clawmes/skills/session-recall/SKILL.md +62 -0
  124. clawmes-0.1.0/clawmes/skills/skill-evolve/SKILL.md +68 -0
  125. clawmes-0.1.0/clawmes/skills/staking/SKILL.md +70 -0
  126. clawmes-0.1.0/clawmes/skills/transfer/SKILL.md +67 -0
  127. clawmes-0.1.0/clawmes/skills/watch-activity/SKILL.md +84 -0
  128. clawmes-0.1.0/clawmes/tools/__init__.py +128 -0
  129. clawmes-0.1.0/clawmes/tools/_user_tools.py +121 -0
  130. clawmes-0.1.0/clawmes/tools/agent_memory.py +106 -0
  131. clawmes-0.1.0/clawmes/tools/airdrop.py +259 -0
  132. clawmes-0.1.0/clawmes/tools/analytics.py +384 -0
  133. clawmes-0.1.0/clawmes/tools/approvals.py +364 -0
  134. clawmes-0.1.0/clawmes/tools/bankr_automate.py +90 -0
  135. clawmes-0.1.0/clawmes/tools/bankr_launch.py +101 -0
  136. clawmes-0.1.0/clawmes/tools/bankr_leverage.py +92 -0
  137. clawmes-0.1.0/clawmes/tools/bankr_polymarket.py +83 -0
  138. clawmes-0.1.0/clawmes/tools/block_explorer.py +163 -0
  139. clawmes-0.1.0/clawmes/tools/bridge.py +375 -0
  140. clawmes-0.1.0/clawmes/tools/browser.py +148 -0
  141. clawmes-0.1.0/clawmes/tools/clawnch_fees.py +125 -0
  142. clawmes-0.1.0/clawmes/tools/clawnch_launch.py +152 -0
  143. clawmes-0.1.0/clawmes/tools/clawnchconnect.py +203 -0
  144. clawmes-0.1.0/clawmes/tools/clawnx.py +100 -0
  145. clawmes-0.1.0/clawmes/tools/compound_action.py +107 -0
  146. clawmes-0.1.0/clawmes/tools/cost_basis.py +351 -0
  147. clawmes-0.1.0/clawmes/tools/defi_balance.py +244 -0
  148. clawmes-0.1.0/clawmes/tools/defi_lend.py +330 -0
  149. clawmes-0.1.0/clawmes/tools/defi_price.py +125 -0
  150. clawmes-0.1.0/clawmes/tools/defi_stake.py +220 -0
  151. clawmes-0.1.0/clawmes/tools/defi_swap.py +460 -0
  152. clawmes-0.1.0/clawmes/tools/farcaster.py +215 -0
  153. clawmes-0.1.0/clawmes/tools/giza.py +103 -0
  154. clawmes-0.1.0/clawmes/tools/governance.py +268 -0
  155. clawmes-0.1.0/clawmes/tools/herd_intelligence.py +112 -0
  156. clawmes-0.1.0/clawmes/tools/hummingbot.py +99 -0
  157. clawmes-0.1.0/clawmes/tools/liquidity.py +413 -0
  158. clawmes-0.1.0/clawmes/tools/lobster_cash.py +105 -0
  159. clawmes-0.1.0/clawmes/tools/manage_orders.py +157 -0
  160. clawmes-0.1.0/clawmes/tools/market_intel.py +170 -0
  161. clawmes-0.1.0/clawmes/tools/molten.py +104 -0
  162. clawmes-0.1.0/clawmes/tools/nft.py +374 -0
  163. clawmes-0.1.0/clawmes/tools/nookplot.py +92 -0
  164. clawmes-0.1.0/clawmes/tools/paysponge.py +111 -0
  165. clawmes-0.1.0/clawmes/tools/permit2.py +317 -0
  166. clawmes-0.1.0/clawmes/tools/privacy.py +112 -0
  167. clawmes-0.1.0/clawmes/tools/registry.py +270 -0
  168. clawmes-0.1.0/clawmes/tools/safe.py +228 -0
  169. clawmes-0.1.0/clawmes/tools/session_recall.py +135 -0
  170. clawmes-0.1.0/clawmes/tools/skill_evolve.py +140 -0
  171. clawmes-0.1.0/clawmes/tools/transfer.py +761 -0
  172. clawmes-0.1.0/clawmes/tools/watch_activity.py +199 -0
  173. clawmes-0.1.0/clawmes/tools/wayfinder.py +94 -0
  174. clawmes-0.1.0/clawmes/tools/yield_farming.py +196 -0
  175. clawmes-0.1.0/clawmes/wallet/__init__.py +25 -0
  176. clawmes-0.1.0/clawmes/wallet/_base.py +75 -0
  177. clawmes-0.1.0/clawmes/wallet/bankr.py +165 -0
  178. clawmes-0.1.0/clawmes/wallet/keystore.py +313 -0
  179. clawmes-0.1.0/clawmes/wallet/local_key.py +309 -0
  180. clawmes-0.1.0/clawmes/wallet/state.py +64 -0
  181. clawmes-0.1.0/clawmes/wallet/walletconnect.py +223 -0
  182. clawmes-0.1.0/clawmes.egg-info/PKG-INFO +314 -0
  183. clawmes-0.1.0/clawmes.egg-info/SOURCES.txt +195 -0
  184. clawmes-0.1.0/clawmes.egg-info/dependency_links.txt +1 -0
  185. clawmes-0.1.0/clawmes.egg-info/entry_points.txt +2 -0
  186. clawmes-0.1.0/clawmes.egg-info/requires.txt +27 -0
  187. clawmes-0.1.0/clawmes.egg-info/top_level.txt +1 -0
  188. clawmes-0.1.0/pyproject.toml +162 -0
  189. clawmes-0.1.0/setup.cfg +4 -0
  190. clawmes-0.1.0/tests/test_imports.py +39 -0
  191. clawmes-0.1.0/tests/test_init_module.py +108 -0
  192. clawmes-0.1.0/tests/test_misc_coverage.py +319 -0
  193. clawmes-0.1.0/tests/test_persona.py +74 -0
  194. clawmes-0.1.0/tests/test_persona_extra.py +29 -0
  195. clawmes-0.1.0/tests/test_plugin_loading.py +250 -0
  196. clawmes-0.1.0/tests/test_plugin_manifest.py +222 -0
  197. clawmes-0.1.0/tests/test_register.py +145 -0
clawmes-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Clawnch
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
clawmes-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,314 @@
1
+ Metadata-Version: 2.4
2
+ Name: clawmes
3
+ Version: 0.1.0
4
+ Summary: Hermes Agent plugin for crypto: wallets, DEX trading, lending and staking, governance, on-chain automation.
5
+ Author-email: Clawnch <dev@clawn.ch>
6
+ License: MIT
7
+ Project-URL: Homepage, https://clawnch.dev
8
+ Project-URL: Repository, https://github.com/clawnchdev/clawmes
9
+ Project-URL: Issues, https://github.com/clawnchdev/clawmes/issues
10
+ Keywords: hermes,hermes-agent,clawmes,crypto,defi,walletconnect,agent,ai,assistant,blockchain,base
11
+ Classifier: Development Status :: 2 - Pre-Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: POSIX :: Linux
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: web3>=7.0.0
24
+ Requires-Dist: eth-account>=0.13.0
25
+ Requires-Dist: eth-utils>=4.0.0
26
+ Requires-Dist: mnemonic>=0.21
27
+ Requires-Dist: pycryptodome>=3.20.0
28
+ Requires-Dist: keyring>=25.0.0
29
+ Requires-Dist: pydantic>=2.7
30
+ Requires-Dist: httpx>=0.27
31
+ Requires-Dist: tenacity>=8.5
32
+ Requires-Dist: python-dotenv>=1.0
33
+ Requires-Dist: pyyaml>=6.0
34
+ Requires-Dist: rich>=13.7
35
+ Requires-Dist: typing_extensions>=4.12
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=8.2; extra == "dev"
38
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
39
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
40
+ Requires-Dist: ruff>=0.5; extra == "dev"
41
+ Requires-Dist: mypy>=1.10; extra == "dev"
42
+ Provides-Extra: test-network
43
+ Requires-Dist: responses>=0.25; extra == "test-network"
44
+ Requires-Dist: vcrpy>=6.0; extra == "test-network"
45
+ Provides-Extra: all
46
+ Requires-Dist: clawmes[dev,test-network]; extra == "all"
47
+ Dynamic: license-file
48
+
49
+ # clawmes
50
+
51
+ [![CI](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml/badge.svg)](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml)
52
+ [![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml)
53
+ [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12-blue)](https://github.com/clawnchdev/clawmes/blob/main/pyproject.toml)
54
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
55
+
56
+ > Hermes Agent for crypto.
57
+
58
+ > [!WARNING]
59
+ > **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](SECURITY.md) for the full threat model and recovery checklist.
60
+
61
+ Clawmes is a [Hermes Agent](https://github.com/NousResearch/hermes-agent) plugin. Wallets, DEX trading, lending and staking, governance, on-chain automation. Python rewrite of [`@clawnch/openclaw-crypto`](https://github.com/clawnchdev/openclawnch) targeting Hermes.
62
+
63
+ 45 tools. 27 commands. 14 services. 11 hooks. Runs on Telegram, Discord, Slack, Signal, WhatsApp, iMessage, and LINE.
64
+
65
+ ## Quick start
66
+
67
+ clawmes is not yet on PyPI; install from GitHub:
68
+
69
+ ```bash
70
+ # 1. Install Hermes Agent (see https://github.com/NousResearch/hermes-agent)
71
+ # 2. Install clawmes as a Hermes plugin:
72
+ hermes plugins install clawnchdev/clawmes --enable
73
+ hermes clawmes init # interactive setup wizard
74
+ hermes # start chatting
75
+ ```
76
+
77
+ 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).
78
+
79
+ ### Editable / dev install
80
+
81
+ ```bash
82
+ git clone https://github.com/clawnchdev/clawmes
83
+ cd clawmes
84
+ pip install -e ".[dev]"
85
+ hermes plugins enable clawmes
86
+ hermes clawmes init
87
+ ```
88
+
89
+ ### PyPI publishing
90
+
91
+ The package is not yet published. v0.1.0 is GitHub-only. PyPI publication will land once the bridges-integration job has run a real-network smoke test and a third-party audit signs off the signing paths. Track [#1](https://github.com/clawnchdev/clawmes/issues) for the publish milestone.
92
+
93
+ ## Tools
94
+
95
+ | Category | Tools | What it does |
96
+ |---|---|---|
97
+ | **Wallet** (4) | `clawnchconnect`, `transfer`, `permit2`, `approvals` | WalletConnect pairing, ENS transfers, Permit2 signed approvals, ERC-20 allowance management |
98
+ | **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 |
99
+ | **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 |
100
+ | **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 |
101
+ | **Ownership** (4) | `nft`, `airdrop`, `privacy`, `safe` | Reservoir NFT API, OZ Merkle distributor airdrop claims, Lobster privacy pools, Gnosis Safe multisig |
102
+ | **Governance** (2) | `governance`, `farcaster` | Snapshot + Tally proposals/voting, Neynar Farcaster cast/search/feed |
103
+ | **On-chain Intel** (4) | `block_explorer`, `herd_intelligence`, `watch_activity`, `browser` | Etherscan family, Herd whale tracking, persistent watch list, headless Playwright browsing |
104
+ | **Automation** (1) | `compound_action` | Multi-step plans (DCA, conditional triggers, loops) via plan scheduler |
105
+ | **Agent ops** (4) | `molten`, `clawnx`, `hummingbot`, `wayfinder` | X/Twitter posting, agent-to-agent matching, local Hummingbot market-making gateway, multi-step route optimization |
106
+ | **Memory** (3) | `agent_memory`, `skill_evolve`, `session_recall` | Hermes-backed persistent memory, agentic skill self-improvement, past-session search |
107
+ | **Misc** (5) | `giza`, `nookplot`, `paysponge`, `lobster_cash`, `_user_tools` | zkML inference, Farcaster analytics, fiat ramp, privacy pools, custom-tool dispatcher |
108
+
109
+ ## Channels
110
+
111
+ | Channel | Status | Notes |
112
+ |---|---|---|
113
+ | Telegram | Production | Slash menu auto-registered, deep links, streaming, voice transcription via Hermes |
114
+ | Discord | Ready | Slash commands auto-register, thread bindings |
115
+ | Slack | Ready | Channels and DMs |
116
+ | Signal | Ready | Requires `signal-cli` bridge (Hermes-managed) |
117
+ | WhatsApp | Ready | Requires WhatsApp Web bridge (Hermes-managed) |
118
+ | iMessage | Ready | macOS only — Hermes' bluebubbles adapter |
119
+ | LINE | Ready | Requires LINE Messaging API |
120
+
121
+ All tools and commands work identically on every channel.
122
+
123
+ ## Wallet modes
124
+
125
+ | Mode | Key custody | How it works |
126
+ |---|---|---|
127
+ | **WalletConnect** | Your phone wallet | `/connect` generates a pairing link via the bundled Node WC bridge. Every write tx goes to your phone for approval. |
128
+ | **Local key** | Local encrypted | BIP-39 mnemonic generated locally, encrypted with scrypt + AES-256-GCM, stored in macOS Keychain or encrypted file. |
129
+ | **Bankr** | Custodial | `/connect_bankr` or `BANKR_API_KEY`. Multi-chain custodial wallet. Good for automation-heavy setups + leverage + Polymarket. |
130
+
131
+ Spending policies set in natural language:
132
+
133
+ ```
134
+ /policy approve transfers under 0.05 ETH on Base, max 10/hour
135
+ ```
136
+
137
+ ## Automation
138
+
139
+ The compound action engine lets users describe multi-step plans in natural language:
140
+
141
+ - **Time triggers** — `every day at 9am, check ETH price`
142
+ - **Price triggers** — `when ETH drops below $2000, swap 1 ETH to USDC`
143
+ - **On-chain triggers** — `when gas is under 10 gwei, execute the pending swap`
144
+ - **Conditionals** — `if my portfolio is down more than 5%, alert me`
145
+ - **Loops + parallel** — `DCA $100 into ETH every week for 12 weeks`
146
+
147
+ Plans persist to disk and survive restarts. Managed via `/plans`, `/interrupt_plan`. The plan tick loop is driven by Hermes' built-in cron daemon.
148
+
149
+ ## Security
150
+
151
+ - WalletConnect mode: clawmes never holds unencrypted private keys.
152
+ - Every write tool gates through readonly check + policy evaluation + delegation execution + ledger record.
153
+ - Credential leak detection on every LLM-bound output.
154
+ - Prompt-injection-resistance guardrails in SOUL.md.
155
+ - Sequential write execution — never queues multiple txs.
156
+ - Bounded approvals — exact amounts, never unlimited.
157
+ - Outbound HTTP restricted to a curated allowlist.
158
+ - Transaction verification — always shows what a tx will do before executing.
159
+
160
+ ## CLI subcommands
161
+
162
+ ```
163
+ hermes clawmes init Interactive setup wizard
164
+ hermes clawmes doctor Diagnostics
165
+ hermes clawmes wallet Wallet status / mode switch
166
+ hermes clawmes plans Plan status / list / cancel
167
+ hermes clawmes policy Policy status / set / clear
168
+ hermes clawmes persona reinstall Force-overwrite SOUL.md (with confirm)
169
+ hermes clawmes skills install Copy bundled skills to writable user namespace
170
+ hermes clawmes update pip install -U clawmes + bridge refresh
171
+ hermes clawmes version Show version
172
+ hermes clawmes uninstall Remove from plugins.enabled (state preserved)
173
+ ```
174
+
175
+ ## Architecture
176
+
177
+ ```
178
+ hermes (the upstream CLI, hermes-agent ≥ 2026.4.x)
179
+ └── PluginManager.discover_and_load()
180
+ └── clawmes.register(ctx)
181
+ ├── 45 tools (registered via ctx.register_tool, write-gated)
182
+ ├── 27 commands (registered via ctx.register_command)
183
+ ├── 11 hooks (pre_tool_call, post_tool_call, pre_llm_call, ...)
184
+ ├── 27 skills (registered via ctx.register_skill, namespaced clawmes:*)
185
+ ├── CLI subcmds (registered via ctx.register_cli_command)
186
+ └── 14 services (start_all() starts background lifecycle)
187
+
188
+ ├── subprocess: clawmes-wc-bridge (Node — WalletConnect v2)
189
+ └── subprocess: clawmes-sa-bridge (Node — MetaMask Smart Accounts; planned)
190
+ ```
191
+
192
+ 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.
193
+
194
+ ## Configuration
195
+
196
+ Required in `~/.hermes/.env`:
197
+
198
+ ```bash
199
+ # LLM (one of these — Hermes' standard)
200
+ ANTHROPIC_API_KEY=
201
+ OPENROUTER_API_KEY=
202
+ OPENAI_API_KEY=
203
+ NOUS_PORTAL_API_KEY=
204
+
205
+ # Channel (one of these — Hermes' standard)
206
+ TELEGRAM_BOT_TOKEN=
207
+ DISCORD_TOKEN=
208
+ SLACK_BOT_TOKEN=
209
+
210
+ # Wallet — pick one mode
211
+ WALLETCONNECT_PROJECT_ID=
212
+ CLAWMES_LOCAL_KEY_PASSWORD=
213
+ BANKR_API_KEY=
214
+ ```
215
+
216
+ Optional (per-tool — features degrade gracefully without their key):
217
+
218
+ ```bash
219
+ # RPC + explorers
220
+ ALCHEMY_API_KEY=
221
+ BASESCAN_API_KEY=
222
+ ETHERSCAN_API_KEY=
223
+ ARBISCAN_API_KEY=
224
+ OPTIMISM_ETHERSCAN_API_KEY=
225
+ POLYGONSCAN_API_KEY=
226
+ CLAWMES_RPC_<chain_id>= # override per-chain RPC URL
227
+
228
+ # DEX / bridge aggregators
229
+ ZEROX_API_KEY=
230
+ LIFI_API_KEY=
231
+
232
+ # Market data + analytics
233
+ COINGECKO_API_KEY=
234
+ HERD_ACCESS_TOKEN=
235
+
236
+ # Social
237
+ NEYNAR_API_KEY=
238
+ NEYNAR_SIGNER_UUID=
239
+ NOOKPLOT_API_KEY=
240
+
241
+ # NFT
242
+ RESERVOIR_API_KEY=
243
+
244
+ # Governance
245
+ TALLY_API_KEY=
246
+
247
+ # Specialized
248
+ GIZA_API_KEY= # zkML inference
249
+ PAYSPONGE_API_KEY= # fiat on/off-ramp
250
+ LOBSTER_API_KEY= # privacy pools
251
+ MOLTEN_API_KEY= # X (Twitter) integration
252
+ CLAWNX_API_KEY= # agent-to-agent network
253
+ HUMMINGBOT_API_KEY= # market-making gateway (also: HUMMINGBOT_GATEWAY_URL)
254
+ WAYFINDER_API_KEY= # route optimization
255
+
256
+ # Token launches (override default contract addresses)
257
+ CLAWNCH_LAUNCHPAD_ADDRESS=
258
+ ```
259
+
260
+ The setup wizard (`hermes clawmes init`) walks through the most-used keys interactively with live validation.
261
+
262
+ ## Development
263
+
264
+ ```bash
265
+ git clone https://github.com/clawnchdev/clawmes
266
+ cd clawmes
267
+ pip install -e ".[dev]"
268
+
269
+ pytest # run tests
270
+ ruff check clawmes/ # lint
271
+ mypy clawmes/ # type-check
272
+ ```
273
+
274
+ ### Adding a tool
275
+
276
+ ```python
277
+ # clawmes/tools/my_tool.py
278
+ from clawmes.tools.registry import write_tool, register_with_ctx
279
+ from clawmes.lib.tool_result import json_result
280
+
281
+ _SCHEMA = {...} # OpenAI function-calling schema
282
+
283
+ @write_tool(name="my_tool", toolset="clawmes-misc", schema=_SCHEMA, description="…")
284
+ def my_tool(args, **kwargs):
285
+ return json_result({...})
286
+
287
+ def register(ctx):
288
+ register_with_ctx(ctx, my_tool)
289
+ ```
290
+
291
+ Then import and call `register(ctx)` from `clawmes/tools/__init__.py:register_all()`.
292
+
293
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for full guidelines and patterns.
294
+
295
+ ## Status
296
+
297
+ Early development. See [`CHANGELOG.md`](CHANGELOG.md) for milestone progress and [`HERMES_PARITY.md`](HERMES_PARITY.md) for the upstream Hermes API contract.
298
+
299
+ ## Tech stack
300
+
301
+ | Component | Version |
302
+ |---|---|
303
+ | Hermes Agent | ≥ 2026.4.23 |
304
+ | Python | ≥ 3.11 |
305
+ | web3.py | ≥ 7.0 |
306
+ | viem (in Node bridges) | ≥ 2.x |
307
+
308
+ ## Contributing
309
+
310
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for development setup, code style, and PR process.
311
+
312
+ ## License
313
+
314
+ MIT — see [`LICENSE`](LICENSE).
@@ -0,0 +1,266 @@
1
+ # clawmes
2
+
3
+ [![CI](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml/badge.svg)](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml)
4
+ [![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://github.com/clawnchdev/clawmes/actions/workflows/ci.yml)
5
+ [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12-blue)](https://github.com/clawnchdev/clawmes/blob/main/pyproject.toml)
6
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
7
+
8
+ > Hermes Agent for crypto.
9
+
10
+ > [!WARNING]
11
+ > **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](SECURITY.md) for the full threat model and recovery checklist.
12
+
13
+ Clawmes is a [Hermes Agent](https://github.com/NousResearch/hermes-agent) plugin. Wallets, DEX trading, lending and staking, governance, on-chain automation. Python rewrite of [`@clawnch/openclaw-crypto`](https://github.com/clawnchdev/openclawnch) targeting Hermes.
14
+
15
+ 45 tools. 27 commands. 14 services. 11 hooks. Runs on Telegram, Discord, Slack, Signal, WhatsApp, iMessage, and LINE.
16
+
17
+ ## Quick start
18
+
19
+ clawmes is not yet on PyPI; install from GitHub:
20
+
21
+ ```bash
22
+ # 1. Install Hermes Agent (see https://github.com/NousResearch/hermes-agent)
23
+ # 2. Install clawmes as a Hermes plugin:
24
+ hermes plugins install clawnchdev/clawmes --enable
25
+ hermes clawmes init # interactive setup wizard
26
+ hermes # start chatting
27
+ ```
28
+
29
+ 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).
30
+
31
+ ### Editable / dev install
32
+
33
+ ```bash
34
+ git clone https://github.com/clawnchdev/clawmes
35
+ cd clawmes
36
+ pip install -e ".[dev]"
37
+ hermes plugins enable clawmes
38
+ hermes clawmes init
39
+ ```
40
+
41
+ ### PyPI publishing
42
+
43
+ The package is not yet published. v0.1.0 is GitHub-only. PyPI publication will land once the bridges-integration job has run a real-network smoke test and a third-party audit signs off the signing paths. Track [#1](https://github.com/clawnchdev/clawmes/issues) for the publish milestone.
44
+
45
+ ## Tools
46
+
47
+ | Category | Tools | What it does |
48
+ |---|---|---|
49
+ | **Wallet** (4) | `clawnchconnect`, `transfer`, `permit2`, `approvals` | WalletConnect pairing, ENS transfers, Permit2 signed approvals, ERC-20 allowance management |
50
+ | **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 |
51
+ | **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 |
52
+ | **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 |
53
+ | **Ownership** (4) | `nft`, `airdrop`, `privacy`, `safe` | Reservoir NFT API, OZ Merkle distributor airdrop claims, Lobster privacy pools, Gnosis Safe multisig |
54
+ | **Governance** (2) | `governance`, `farcaster` | Snapshot + Tally proposals/voting, Neynar Farcaster cast/search/feed |
55
+ | **On-chain Intel** (4) | `block_explorer`, `herd_intelligence`, `watch_activity`, `browser` | Etherscan family, Herd whale tracking, persistent watch list, headless Playwright browsing |
56
+ | **Automation** (1) | `compound_action` | Multi-step plans (DCA, conditional triggers, loops) via plan scheduler |
57
+ | **Agent ops** (4) | `molten`, `clawnx`, `hummingbot`, `wayfinder` | X/Twitter posting, agent-to-agent matching, local Hummingbot market-making gateway, multi-step route optimization |
58
+ | **Memory** (3) | `agent_memory`, `skill_evolve`, `session_recall` | Hermes-backed persistent memory, agentic skill self-improvement, past-session search |
59
+ | **Misc** (5) | `giza`, `nookplot`, `paysponge`, `lobster_cash`, `_user_tools` | zkML inference, Farcaster analytics, fiat ramp, privacy pools, custom-tool dispatcher |
60
+
61
+ ## Channels
62
+
63
+ | Channel | Status | Notes |
64
+ |---|---|---|
65
+ | Telegram | Production | Slash menu auto-registered, deep links, streaming, voice transcription via Hermes |
66
+ | Discord | Ready | Slash commands auto-register, thread bindings |
67
+ | Slack | Ready | Channels and DMs |
68
+ | Signal | Ready | Requires `signal-cli` bridge (Hermes-managed) |
69
+ | WhatsApp | Ready | Requires WhatsApp Web bridge (Hermes-managed) |
70
+ | iMessage | Ready | macOS only — Hermes' bluebubbles adapter |
71
+ | LINE | Ready | Requires LINE Messaging API |
72
+
73
+ All tools and commands work identically on every channel.
74
+
75
+ ## Wallet modes
76
+
77
+ | Mode | Key custody | How it works |
78
+ |---|---|---|
79
+ | **WalletConnect** | Your phone wallet | `/connect` generates a pairing link via the bundled Node WC bridge. Every write tx goes to your phone for approval. |
80
+ | **Local key** | Local encrypted | BIP-39 mnemonic generated locally, encrypted with scrypt + AES-256-GCM, stored in macOS Keychain or encrypted file. |
81
+ | **Bankr** | Custodial | `/connect_bankr` or `BANKR_API_KEY`. Multi-chain custodial wallet. Good for automation-heavy setups + leverage + Polymarket. |
82
+
83
+ Spending policies set in natural language:
84
+
85
+ ```
86
+ /policy approve transfers under 0.05 ETH on Base, max 10/hour
87
+ ```
88
+
89
+ ## Automation
90
+
91
+ The compound action engine lets users describe multi-step plans in natural language:
92
+
93
+ - **Time triggers** — `every day at 9am, check ETH price`
94
+ - **Price triggers** — `when ETH drops below $2000, swap 1 ETH to USDC`
95
+ - **On-chain triggers** — `when gas is under 10 gwei, execute the pending swap`
96
+ - **Conditionals** — `if my portfolio is down more than 5%, alert me`
97
+ - **Loops + parallel** — `DCA $100 into ETH every week for 12 weeks`
98
+
99
+ Plans persist to disk and survive restarts. Managed via `/plans`, `/interrupt_plan`. The plan tick loop is driven by Hermes' built-in cron daemon.
100
+
101
+ ## Security
102
+
103
+ - WalletConnect mode: clawmes never holds unencrypted private keys.
104
+ - Every write tool gates through readonly check + policy evaluation + delegation execution + ledger record.
105
+ - Credential leak detection on every LLM-bound output.
106
+ - Prompt-injection-resistance guardrails in SOUL.md.
107
+ - Sequential write execution — never queues multiple txs.
108
+ - Bounded approvals — exact amounts, never unlimited.
109
+ - Outbound HTTP restricted to a curated allowlist.
110
+ - Transaction verification — always shows what a tx will do before executing.
111
+
112
+ ## CLI subcommands
113
+
114
+ ```
115
+ hermes clawmes init Interactive setup wizard
116
+ hermes clawmes doctor Diagnostics
117
+ hermes clawmes wallet Wallet status / mode switch
118
+ hermes clawmes plans Plan status / list / cancel
119
+ hermes clawmes policy Policy status / set / clear
120
+ hermes clawmes persona reinstall Force-overwrite SOUL.md (with confirm)
121
+ hermes clawmes skills install Copy bundled skills to writable user namespace
122
+ hermes clawmes update pip install -U clawmes + bridge refresh
123
+ hermes clawmes version Show version
124
+ hermes clawmes uninstall Remove from plugins.enabled (state preserved)
125
+ ```
126
+
127
+ ## Architecture
128
+
129
+ ```
130
+ hermes (the upstream CLI, hermes-agent ≥ 2026.4.x)
131
+ └── PluginManager.discover_and_load()
132
+ └── clawmes.register(ctx)
133
+ ├── 45 tools (registered via ctx.register_tool, write-gated)
134
+ ├── 27 commands (registered via ctx.register_command)
135
+ ├── 11 hooks (pre_tool_call, post_tool_call, pre_llm_call, ...)
136
+ ├── 27 skills (registered via ctx.register_skill, namespaced clawmes:*)
137
+ ├── CLI subcmds (registered via ctx.register_cli_command)
138
+ └── 14 services (start_all() starts background lifecycle)
139
+
140
+ ├── subprocess: clawmes-wc-bridge (Node — WalletConnect v2)
141
+ └── subprocess: clawmes-sa-bridge (Node — MetaMask Smart Accounts; planned)
142
+ ```
143
+
144
+ 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.
145
+
146
+ ## Configuration
147
+
148
+ Required in `~/.hermes/.env`:
149
+
150
+ ```bash
151
+ # LLM (one of these — Hermes' standard)
152
+ ANTHROPIC_API_KEY=
153
+ OPENROUTER_API_KEY=
154
+ OPENAI_API_KEY=
155
+ NOUS_PORTAL_API_KEY=
156
+
157
+ # Channel (one of these — Hermes' standard)
158
+ TELEGRAM_BOT_TOKEN=
159
+ DISCORD_TOKEN=
160
+ SLACK_BOT_TOKEN=
161
+
162
+ # Wallet — pick one mode
163
+ WALLETCONNECT_PROJECT_ID=
164
+ CLAWMES_LOCAL_KEY_PASSWORD=
165
+ BANKR_API_KEY=
166
+ ```
167
+
168
+ Optional (per-tool — features degrade gracefully without their key):
169
+
170
+ ```bash
171
+ # RPC + explorers
172
+ ALCHEMY_API_KEY=
173
+ BASESCAN_API_KEY=
174
+ ETHERSCAN_API_KEY=
175
+ ARBISCAN_API_KEY=
176
+ OPTIMISM_ETHERSCAN_API_KEY=
177
+ POLYGONSCAN_API_KEY=
178
+ CLAWMES_RPC_<chain_id>= # override per-chain RPC URL
179
+
180
+ # DEX / bridge aggregators
181
+ ZEROX_API_KEY=
182
+ LIFI_API_KEY=
183
+
184
+ # Market data + analytics
185
+ COINGECKO_API_KEY=
186
+ HERD_ACCESS_TOKEN=
187
+
188
+ # Social
189
+ NEYNAR_API_KEY=
190
+ NEYNAR_SIGNER_UUID=
191
+ NOOKPLOT_API_KEY=
192
+
193
+ # NFT
194
+ RESERVOIR_API_KEY=
195
+
196
+ # Governance
197
+ TALLY_API_KEY=
198
+
199
+ # Specialized
200
+ GIZA_API_KEY= # zkML inference
201
+ PAYSPONGE_API_KEY= # fiat on/off-ramp
202
+ LOBSTER_API_KEY= # privacy pools
203
+ MOLTEN_API_KEY= # X (Twitter) integration
204
+ CLAWNX_API_KEY= # agent-to-agent network
205
+ HUMMINGBOT_API_KEY= # market-making gateway (also: HUMMINGBOT_GATEWAY_URL)
206
+ WAYFINDER_API_KEY= # route optimization
207
+
208
+ # Token launches (override default contract addresses)
209
+ CLAWNCH_LAUNCHPAD_ADDRESS=
210
+ ```
211
+
212
+ The setup wizard (`hermes clawmes init`) walks through the most-used keys interactively with live validation.
213
+
214
+ ## Development
215
+
216
+ ```bash
217
+ git clone https://github.com/clawnchdev/clawmes
218
+ cd clawmes
219
+ pip install -e ".[dev]"
220
+
221
+ pytest # run tests
222
+ ruff check clawmes/ # lint
223
+ mypy clawmes/ # type-check
224
+ ```
225
+
226
+ ### Adding a tool
227
+
228
+ ```python
229
+ # clawmes/tools/my_tool.py
230
+ from clawmes.tools.registry import write_tool, register_with_ctx
231
+ from clawmes.lib.tool_result import json_result
232
+
233
+ _SCHEMA = {...} # OpenAI function-calling schema
234
+
235
+ @write_tool(name="my_tool", toolset="clawmes-misc", schema=_SCHEMA, description="…")
236
+ def my_tool(args, **kwargs):
237
+ return json_result({...})
238
+
239
+ def register(ctx):
240
+ register_with_ctx(ctx, my_tool)
241
+ ```
242
+
243
+ Then import and call `register(ctx)` from `clawmes/tools/__init__.py:register_all()`.
244
+
245
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for full guidelines and patterns.
246
+
247
+ ## Status
248
+
249
+ Early development. See [`CHANGELOG.md`](CHANGELOG.md) for milestone progress and [`HERMES_PARITY.md`](HERMES_PARITY.md) for the upstream Hermes API contract.
250
+
251
+ ## Tech stack
252
+
253
+ | Component | Version |
254
+ |---|---|
255
+ | Hermes Agent | ≥ 2026.4.23 |
256
+ | Python | ≥ 3.11 |
257
+ | web3.py | ≥ 7.0 |
258
+ | viem (in Node bridges) | ≥ 2.x |
259
+
260
+ ## Contributing
261
+
262
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for development setup, code style, and PR process.
263
+
264
+ ## License
265
+
266
+ MIT — see [`LICENSE`](LICENSE).