Hermes
Run Frontrun inside a Hermes (opens in a new tab) agent. Hermes is Nous Research's self-hosted agent runtime: you own the box, the model key and the memory, and you talk to it from Telegram rather than a browser tab.
Frontrun plugs in as an MCP server, so the agent gets all 38 tools and spends credits against your own API key.
What you get
An always-on agent you can message from your phone. It holds context between messages, so "who converged this week" followed by "dig into the second one" works the way you would expect, and it can run a morning sweep on a schedule without you opening anything.
You need a Frontrun Pro key for this. API and MCP access are Pro-only. Pricing
The MCP block
If you already run Hermes, this is the whole integration. Add it to config.yaml in your $HERMES_HOME:
mcp_servers:
frontrun:
command: "npx"
args: ["-y", "frontrun-mcp-server"]
env:
FRONTRUN_API_KEY: "your_api_key"Restart the gateway and the tools are live. Everything below is about running the agent as a service rather than on your laptop.
Full deployment
1. Get the image
docker pull nousresearch/hermes-agent:v2026.5.28Run this on a plain Docker host. Railway rejects the base image because of its VOLUME instruction, and Fly breaks it because Firecracker will not give s6-overlay PID 1, which the image requires. A $12 DigitalOcean droplet is enough: 1 vCPU, 2 GB.
2. Seed the config
Hermes reads its config from a persistent volume. Create /opt/frontrun-data on the host and write two files into it.
config.yaml:
model:
default: "anthropic/claude-sonnet-4-6"
provider: "auto"
agent:
max_turns: 60
reasoning_effort: "medium"
memory:
memory_enabled: true
user_profile_enabled: true
session_reset:
mode: both
idle_minutes: 1440
at_hour: 4
platform_toolsets:
telegram: [hermes-telegram]
mcp_servers:
frontrun:
command: "npx"
args: ["-y", "frontrun-mcp-server"]
env:
FRONTRUN_API_KEY: "your_api_key".env (chmod 600):
ANTHROPIC_API_KEY=sk-ant-...
TELEGRAM_BOT_TOKEN=123456:ABC...
TELEGRAM_ALLOWED_USERS=your_telegram_user_id
FRONTRUN_API_KEY=your_api_keyTELEGRAM_ALLOWED_USERS is an allowlist. Leave it empty and anyone who finds the bot can spend your credits.
3. Run it
docker run -d \
--name frontrun-agent \
--restart unless-stopped \
-v /opt/frontrun-data:/opt/data \
nousresearch/hermes-agent:v2026.5.28 \
gateway runMessage your bot on Telegram. Ask it "what converged in the last 7 days" and you should get a tool call back.
Giving the agent an identity
Hermes reads SOUL.md from $HERMES_HOME and prepends it to every prompt. This is where you tell it that it is a deal-flow agent rather than a general assistant, which sectors you care about, and how you want findings formatted.
Hermes scans context files for prompt-injection patterns before loading them, and pretend ... you are (or pretend ... to be) trips the role_pretend rule. The whole file is then silently discarded and your agent falls back to generic Hermes with no error. Write "never claim to be human" rather than "do not pretend to be a person".
Telegram gotchas
One poller per token. Telegram allows a single getUpdates consumer. Start a second container on the same bot token and both go silent with a getUpdates conflict. Use a separate bot for staging.
Keep the webhook empty. The gateway uses polling. If a webhook is registered on the token, polling never receives anything.
Acting on X
By default the agent reads Frontrun and nothing else: no X credentials on the box means it cannot post, follow or DM as you. If you want it to act on X, mount an xurl auth file into $HERMES_HOME/.xurl. Use the account's own token, never a shared one.
Tools available
The full Frontrun MCP surface. See MCP Server for the complete table.
| Tool | What it does |
|---|---|
frontrun_convergence | Entities followed by multiple tracked accounts independently |
frontrun_new_follows | New follows across your tracked accounts in a window |
frontrun_trending | Entities ranked by attention across your tracked set |
frontrun_company | Company overview, founders, funding, resources |
frontrun_discover | Accounts your tracked accounts follow that you are not tracking |
Every response carries cost_credits and balance_credits, so the agent can see its own spend. Enable auto-refill if you leave it running unattended.