Cookbook
Practical recipes for common tasks. Each recipe is self-contained — copy, adapt, run.
Recipes
- Deploy to Production — Docker, Vercel, K8s
- Test a Strategy — Replay scenarios without real ticks
- Add a Custom Data Source — Wire your own API or feed
- Trigger from a Webhook — Run an agent on external events
- Build a Discord Bot Agent — Full example using Hermes MCP
Quick Snippets
Run an agent for one tick from Python
from pathlib import Path
from aether_forge.runner import AgentRunner, RunnerConfig
runner = AgentRunner(Path("./my-agent"), RunnerConfig(environment="paper", auto_approve=True))
runner._initialize()
result = runner.tick()
print(result)Read the last 10 decisions
sqlite3 my-agent/memory.db \
"SELECT created_at, summary FROM memory_records WHERE memory_type='decision-history' ORDER BY created_at DESC LIMIT 10"Halt all agents instantly
for d in agents/*/; do forge halt "$d"; doneGet current wallet balance
ETH_ADDRESS=$(jq -r '.addresses.evm' my-agent/wallet.json)
curl -s "https://mainnet.base.org" \
-H "Content-Type: application/json" \
-d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"$ETH_ADDRESS\",\"latest\"],\"id\":1}" \
| jq -r '.result' | xargs printf "%d wei\n"Watch agent live
# Terminal 1
forge run ./my-agent --mode paper --health-port 8080 --json-log /tmp/agent.jsonl
# Terminal 2
watch -n 1 'curl -s localhost:8080/status | jq'
# Terminal 3
tail -f /tmp/agent.jsonl | jq -c '{ts:.timestamp, lvl:.level, msg:.message}'Last updated on