Mine BOTCOIN (proof-of-inference on Base) natively from Hermes Agent. Plugin + CLI + cron-mode autonomous miner.
Project description
██╗ ██╗███████╗██████╗ ███╗ ███╗███████╗███████╗ ██████╗ ██████╗ ████████╗ ██████╗ ██████╗ ██╗███╗ ██╗
██║ ██║██╔════╝██╔══██╗████╗ ████║██╔════╝██╔════╝ ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝██╔═══██╗██║████╗ ██║
███████║█████╗ ██████╔╝██╔████╔██║█████╗ ███████╗ ██████╔╝██║ ██║ ██║ ██║ ██║ ██║██║██╔██╗ ██║
██╔══██║██╔══╝ ██╔══██╗██║╚██╔╝██║██╔══╝ ╚════██║ ██╔══██╗██║ ██║ ██║ ██║ ██║ ██║██║██║╚██╗██║
██║ ██║███████╗██║ ██║██║ ╚═╝ ██║███████╗███████║ ██████╔╝╚██████╔╝ ██║ ╚██████╗╚██████╔╝██║██║ ╚████║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚═╝ ╚═══╝
Mine BOTCOIN. Native to Hermes Agent. Privacy-first via Venice.
hermes-botcoin
Native BOTCOIN mining for Hermes Agent.
What this gives you
- 13 first-class tools the Hermes agent can call:
botcoin_status,botcoin_setup_check,botcoin_scorecard,botcoin_bind_agent_id,botcoin_request_challenge,botcoin_submit_artifact,botcoin_post_receipt,botcoin_claim_rewards,botcoin_stake,botcoin_unstake,botcoin_withdraw_stake,botcoin_autostart,botcoin_autostop. /botcoinslash command for in-session UX:/botcoin status,/botcoin setup,/botcoin scorecard(pretty-printed),/botcoin bind <agentId>,/botcoin claim 41,42,/botcoin stake 5000000,/botcoin unstake,/botcoin withdraw,/botcoin autostart,/botcoin autostop.hermes botcoin <subcmd>CLI for terminal use and scripting.hermes-botcoin-mineconsole script — drop-in forhermes cronjobs (no_agent=True) for fully autonomous mining without LLM-loop overhead, with a multi-provider solver (venice(default)| anthropic | openai | openrouter | deepseek).pre_llm_calldiscoverability hook — when the user mentions mining/earning/BOTCOIN, the agent gets a fresh status block injected into context (cached 60s).- Bundled
botcoin:mining-strategyskill for the deep playbook, loadable on demand. - Two signer paths: EOA (preferred —
eth-account+ Base RPC) or Bankr Agent API. Auto-detected, override withBOTCOIN_SIGNER.
Two ways to install
A — Native plugin (recommended)
hermes plugins install botcoinmoney/hermes-botcoin --enable
Hermes will:
git clone --depth 1this repo into~/.hermes/plugins/botcoin/.- Walk
requires_envfromplugin.yamland prompt you for the secrets you don't already have (BANKR_API_KEYxorBOTCOIN_MINER_KEY, plus optionalBOTCOIN_MINER_ADDRESS,COORDINATOR_URL,BASE_RPC_URL). Secrets land in~/.hermes/.env— they never reach an LLM. - Add
botcointoplugins.enabledin~/.hermes/config.yaml. - Show you
after-install.mdwith verification steps.
Restart Hermes. Run /botcoin setup to confirm everything is wired up.
B — MCP server
If you'd rather run BOTCOIN as an MCP server (also works with Claude Desktop, Cursor, and any other MCP client):
pip install hermes-botcoin-mcp # see mcp_server/
# ~/.hermes/config.yaml
mcp_servers:
botcoin:
command: hermes-botcoin-mcp
env:
BOTCOIN_MINER_KEY: "0x..."
BOTCOIN_SIGNER: eoa
Configuration
All secrets and overrides live in ~/.hermes/.env. The requires_env block in plugin.yaml is the source of truth.
| Variable | Required | Purpose |
|---|---|---|
BOTCOIN_SIGNER |
no | eoa or bankr. Auto-detected when omitted. |
BOTCOIN_MINER_KEY |
(eoa) | 0x-prefixed EVM private key for the miner wallet. |
BANKR_API_KEY |
(bankr) | Bankr Agent API key with write access. |
BOTCOIN_MINER_ADDRESS |
no | Override the miner address (else derived). |
BOTCOIN_AGENT_ID |
no | ERC-8004 agent identifier to bind to your miner during auth. |
COORDINATOR_URL |
no | Defaults to https://coordinator.agentmoney.net. |
BASE_RPC_URL |
no | Defaults to https://mainnet.base.org. Set a private RPC for better rate limits. |
BOTCOIN_SOLVER_PROVIDER |
no (cron) | LLM provider for autonomous mining: venice (recommended), anthropic, openai, openrouter, deepseek. |
BOTCOIN_SOLVER_MODEL |
no (cron) | Model id. Defaults: venice → zai-org-glm-5.1; anthropic → claude-opus-4-7; openai → gpt-5.1; openrouter → anthropic/claude-opus-4.7; deepseek → deepseek-reasoner. |
VENICE_API_KEY |
(cron, recommended) | venice.ai/settings/api. Privacy-by-default (no data retention), OpenAI-compatible. |
ANTHROPIC_API_KEY / OPENAI_API_KEY / OPENROUTER_API_KEY / DEEPSEEK_API_KEY |
(cron) | Whichever matches your BOTCOIN_SOLVER_PROVIDER. |
Why Venice for autonomous mining
Venice.ai is the recommended inference provider for the cron miner because it aligns with BOTCOIN's protocol values:
- No data retention — your reasoning traces aren't kept by the inference provider, matching the protocol's "verifiable inference" stance.
- OpenAI-compatible API at
https://api.venice.ai/api/v1—Authorization: Bearer $VENICE_API_KEY, JSON mode, function calling. - Strong reasoning models for long-context challenges —
zai-org-glm-5.1(200k ctx, "deep reasoning and production agents", recommended default),deepseek-ai-DeepSeek-R1,qwen3-4b(visible thinking), and Venice's own reasoning lineup. venice_parametersfor fine control: we passinclude_venice_system_prompt: falseso Venice's default persona doesn't shadow our solver prompt, andenable_web_search: "off"because the challenge document is the only valid source.- Pricing options that scale: pay-as-you-go USD, Pro subscription with $10 free credits on upgrade, or DIEM token staking for permanent compute access — pick whichever fits your mining cadence.
The plugin uses the canonical Venice OpenAI-compatible chat completions endpoint:
POST https://api.venice.ai/api/v1/chat/completions
Authorization: Bearer $VENICE_API_KEY
Content-Type: application/json
{
"model": "zai-org-glm-5.1",
"messages": [{"role": "system", ...}, {"role": "user", ...}],
"max_tokens": 16000,
"response_format": {"type": "json_object"},
"venice_parameters": {
"include_venice_system_prompt": false,
"enable_web_search": "off"
}
}
In interactive Hermes mining the agent itself solves with whatever provider Hermes is already configured for — no extra LLM key is needed.
Tools
Read-only
| Tool | What it does |
|---|---|
botcoin_status |
Snapshot of mining state (cached 60s): epoch, stake total, active miners, current-epoch reward estimate, your miner address, signer mode. |
botcoin_setup_check |
Pre-flight checklist: signer init, miner address, coordinator reachable, stake meets Tier 1 (5M), ETH balance for gas. |
botcoin_scorecard |
Fetch the EIP-712 signed mining scorecard for any address. |
Mining
| Tool | What it does |
|---|---|
botcoin_request_challenge |
Request a fresh challenge. Returns the full doc/questions/constraints/entities/instructions. The agent is the solver. |
botcoin_submit_artifact |
Submit your artifact + reasoning trace. On pass, returns a signed receipt and ready-to-broadcast transaction. |
botcoin_post_receipt |
Broadcast the signed receipt transaction via your configured signer. |
Rewards & stake
| Tool | What it does |
|---|---|
botcoin_claim_rewards |
Claim mining (and bonus, when present) rewards for finalized epochs. |
botcoin_stake |
Approve + stake whole BOTCOIN on V3 (Tier 1 = 5M). |
botcoin_unstake |
Begin unstaking (24h cooldown), or cancel a pending unstake. |
botcoin_withdraw_stake |
Withdraw after the cooldown elapses. |
Identity & autonomy
| Tool | What it does |
|---|---|
botcoin_bind_agent_id |
Explicit ERC-8004 binding via /v1/agent/bind/nonce + /v1/agent/bind/verify. Use when auto-bind during auth didn't run (multiple candidate agents, post-auth registration). |
botcoin_autostart |
Idempotently schedule a Hermes cron job that runs hermes-botcoin-mine every cycle with no_agent=True. Writes a stable shell wrapper to $HERMES_HOME/scripts/botcoin-miner.sh. |
botcoin_autostop |
Remove the BOTCOIN cron job created by botcoin_autostart. |
Autonomous mining via hermes cron
The simplest path is the in-session slash command:
/botcoin autostart
/botcoin autostop
Equivalent agent-tool calls: botcoin_autostart / botcoin_autostop. Both
are idempotent and survive Hermes restarts — autostart writes a wrapper
script to $HERMES_HOME/scripts/botcoin-miner.sh and creates the cron job.
If you'd rather drive hermes cron directly:
hermes cron add \
--name "BOTCOIN miner" \
--schedule "every 90s" \
--no-agent \
--script "hermes-botcoin-mine --solver venice --max-attempts 1 --quiet"
no_agent=True skips the LLM loop on every cron tick — only the explicit
solver call inside hermes-botcoin-mine pays for inference. Output is
delivered via Hermes' built-in cron deliver: config (Telegram, Discord,
local file, etc.).
Cost ceiling
hermes-botcoin-mine enforces a UTC-day cap (BOTCOIN_MAX_ATTEMPTS_PER_DAY,
default 100). Each attempt — pass or fail — increments
$HERMES_HOME/.botcoin/attempts-YYYY-MM-DD.count. Hitting the ceiling exits 0
with {"ok": false, "stage": "ceiling", ...} so cron doesn't spam your
delivery channel with errors. Counter resets at UTC midnight.
Architecture
┌─────────────────────────────┐
│ Hermes Agent CLI/TUI │
└────────┬────────────────────┘
register(ctx) │
┌────────▼─────────┐
│ plugin_entry │ tools / slash / CLI / hooks / skill
└────────┬─────────┘
│
┌────────▼─────────┐
│ tools.py │ ← agent calls these
└────┬───────┬─────┘
│ │
┌────▼──┐ ┌──▼─────┐
│ auth │ │ signer │ EOA (eth-account + Base RPC) | Bankr
└────┬──┘ └──┬─────┘
│ │
┌────▼───────▼─────┐
│ coordinator │ HTTP client over coordinator.agentmoney.net
└──────────────────┘
(MCP path: same handlers, exposed via FastMCP in mcp_server/.)
The Hermes agent is the solver in interactive mode. The solver.py /
mining.py / cron_entry() triplet is only used in autonomous /
headless / cron contexts.
Discoverability
Beyond the install paths, the project ships three additional surfaces:
- Coordinator-side well-known skill at
https://coordinator.agentmoney.net/.well-known/skills/index.json#botcoin-mining— installable withhermes skills install <url>and includes a self-contained Python helper that needs no plugin install. pre_llm_callhook — when the user mentions mining-related keywords, the model gets fresh BOTCOIN context.- Pip entry-point (
hermes_agent.plugins) sopip install hermes-botcoinis also a valid install path.
Development
git clone https://github.com/botcoinmoney/hermes-botcoin
cd hermes-botcoin
python3 -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'
pytest -q
The repository hosts:
| Path | Purpose |
|---|---|
plugin.yaml, __init__.py |
Hermes-plugin entry (used by hermes plugins install). |
src/hermes_botcoin/ |
Canonical library — used by both the plugin and MCP server. |
mcp_server/ |
Separate PyPI package (hermes-botcoin-mcp). |
skills/mining-strategy/ |
Bundled deep-skill SKILL.md. |
coordinator-deliverables/ |
Drop-in files for the BOTCOIN coordinator (well-known skills index + SKILL.md + helper script). |
BUILD_PLAN.md |
Day-by-day build & ship plan. |
VERIFIED_ASSUMPTIONS.md |
Source-of-truth verifications against the Hermes repo. |
tests/ |
Unit tests for trace normalization, signer dispatch, schemas. |
License
MIT — see LICENSE.
Acknowledgements
Built on the Hermes Agent plugin SDK by Nous Research, also MIT.
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 hermes_botcoin-0.1.1.tar.gz.
File metadata
- Download URL: hermes_botcoin-0.1.1.tar.gz
- Upload date:
- Size: 63.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b448b0a8c281911486d48c02f690b1f0b3d7582f656ac898cd13b75f8dffe033
|
|
| MD5 |
0c1190fd5575cfd108eca422124ba582
|
|
| BLAKE2b-256 |
2cf042bc5499154c7fa52d4410e7d856d07a0bd3bb5e03e3b0358bbb6fcc2cd5
|
File details
Details for the file hermes_botcoin-0.1.1-py3-none-any.whl.
File metadata
- Download URL: hermes_botcoin-0.1.1-py3-none-any.whl
- Upload date:
- Size: 58.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4363efa1a7ed0897764bdb143a0765f27c52ff0871aef8e6a5df12ec88b2a119
|
|
| MD5 |
30bb91cecc607fa42c3c0503e7b4ed61
|
|
| BLAKE2b-256 |
7ec59da9c95785cfba636b8485269e08d63eb8f758c2cb1030e78980dce72997
|