hermes-atropos-environments
Build, test, and debug Hermes Agent RL environments for Atropos training.
Skill by Tommy-yw
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tommy-yw-hermes-atropos-environments
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/hermes-atropos-environments
What's inside
- Skill name
hermes-atropos-environments- Description
- Build, test, and debug Hermes Agent RL environments for Atropos training. Covers the HermesAgentBaseEnv interface, reward functions, agent loop integration, evaluation with tools, wandb logging, and the three CLI modes (serve/process/evaluate). Use when creating, reviewing, or fixing RL environments in the hermes-agent repo.
- License
- MIT
- Instructions
- 292 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- agentresult-fields.md · references/
- atropos-base-env.md · references/
- usage-patterns.md · references/
SKILL.md (first lines)
# Hermes Agent Atropos Environments
Guide for building RL environments in the hermes-agent repo that integrate with the Atropos training framework.
## Architecture Overview
```
Atropos BaseEnv (atroposlib/envs/base.py)
└── HermesAgentBaseEnv (environments/hermes_base_env.py)
├── Handles agent loop orchestration
├── Handles tool resolution per group
├── Handles ToolContext for reward verification
└── YOUR ENVIRONMENT (environments/your_env.py)
Only implements: setup, get_next_item, format_prompt,
compute_reward, evaluate, wandb_log
```
Hermes environments are special because they run a **multi-turn agent loop with tool calling** — not just single-turn completions. The base env handles the loop; you implement the task and scoring.
## File Locations
| File | Purpose |
|------|---------|
| `environments/hermes_base_env.py` | Base class with agent loop + tool resolution |
| `environments/agent_loop.py` | `HermesAgentLoop` + `AgentResult` dataclass |
| `environments/tool_context.py` | `ToolContext` for reward verification |
| `environments/tool_call_parsers.py` | Phase 2 tool call parsers (hermes, mistral, etc.) |
| `environments/your_env.py` | Your environment implementation |
## Inference Setup — Ask the User First
**IMPORTANT:** Before running any test, evaluation, or data generation command, always ask the user how they want to handle inference. Do NOT assume OpenRouter or any specific endpoint. Present these options:
1. **OpenRouter** — Ask which model they want to use (e.g., `anthropic/claude-sonnet-4.5`, `google/gemini-2.5-pro`, `meta-llama/llama-3.3-70b-instruct`, etc.). Requires `OPENROUTER_API_KEY` in environment.
2. **Self-hosted VLLM endpoint** — Ask for their base URL (e.g., `http://localhost:8000/v1`) and model name. Set `--openai.server_type vllm`.
3. **Other OpenAI-compatible API** — Ask for the base URL, model name, and any required API key. Set `--openai.server_type openai` and `--openai.health_check false`.
4. **Local Atropos training server** — For `serve` mode with a live training loop. Default `http://localhost:8000/v1`.
Once the user tells you their setup, use those values in all CLI commands for that session. Example prompts:
> "Before I run this, how would you like to handle inference?
> 1. OpenRouter (I'll need your preferred model, e.g. claude-sonnet-4.5)
> 2. A self-hosted VLLM endpoint (give me the URL and model name)
> 3. Another OpenAI-compatible API (give me the URL, model, and any auth details)
> 4. Local Atropos training server (serve mode)"
### Key flags by provider:
| Provider | `--openai.server_type` | `--openai.health_check` | `--openai.api_key` |
|----------|----------------------|------------------------|-------------------|
| OpenRouter | `openai` | `false` | `$OPENROUTER_API_KEY` |
| VLLM (self-hosted) | `vllm` | (default) | (not needed) |
| Other OpenAI-compatible | `openai` | `false` | As needed |
| Local Atropos | (default) | (default) | (not needed) |
## Required Methods
### 1. `setup()` — Load dataset and initialize state
```python
async def setup(self) -> None:
"""Called once at startup. Load datasets, initialize state."""
# Try HuggingFace first, fallback to built-in samples
try:
from datasets import load_dataset
ds = load_dataset("your/dataset", split="test")
self._items = [...]
except Exception:
self._items = BUILTIN_SAMPLES
# Always split into train/eval
random.shuffle(self._items)
eval_size = max(20, int(len(self._items) * 0.1))
self._eval_items = self._items[:eval_size]
self._items = self._items[eval_size:]
```
### 2. `get_next_item()` — Return next training item
```python
async def get_next_item(self) -> dict:
"""Return next item, cycling through dataset."""
item = self._items[self._index % len(self._items)]
self._index += 1
return item
```
### 3. `format_prompt(item)` — Convert item to user message
```python
def format_prompt(self, item: dict) -> str:
"""Convert a dataset item into the user-facing prompt."""
return f"Research this question: {item['question']}"
```
### 4. `compute_reward(item, result, ctx)` — Score the rollout
**CRITICAL**: `result` is an `AgentResult`, NOT a dict. It has these attributes:
- `result.messages` — List of message dicts (OpenAI format)
- `result.turns_used` — Number of LLM calls made
- `result.finished_naturally` — True if model stopped voluntarily
- `result.tool_errors` — List of ToolError objects
**AgentResult does NOT have**: `final_response`, `tool_calls`, `tools_used`.
You must extract these from `result.messages`:
```python
async def compute_reward(self, item, result: AgentResult, ctx: ToolContext) -> float:
# Extract final response (last assistant message with content)
final_response = ""
tools_used = []
for msg in reversed(result.messages):
if msg.get("role") == "assistant" and msg.get("content") and not final_response:
final_response = msg["content"]
if msg.get("role") == "assistant" and msg.get("tool_calls"):
for tc in msg["tool_calls"]:
fn = tc.get("function", {}) if isinstance(tc, dict) else {}
name = fn.get("name", "")
if name:From Tommy-yw/RunbookHermes, MIT.
More from Tommy-yw/RunbookHermes
- 0.609score
fastmcp
Tommy-yw
Build, test, inspect, install, and deploy MCP servers with FastMCP in Python.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
baoyu-comic
Tommy-yw
Knowledge comic creator supporting multiple art styles and tones.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
fitness-nutrition
Tommy-yw
Gym workout planner and nutrition tracker.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
neuroskill-bci
Tommy-yw
Connect to a running NeuroSkill instance and incorporate the user's real-time cognitive and emotional state (focus, relaxation, mood, cognitive load…
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
concept-diagrams
Tommy-yw
Generate flat, minimal light/dark-aware SVG diagrams as standalone HTML files, using a unified educational visual language with 9 semantic color ramps…
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
ascii-video
Tommy-yw
Production pipeline for ASCII art video — any format.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
baoyu-infographic
Tommy-yw
Generate professional infographics with 21 layout types and 21 visual styles.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
manim-video
Tommy-yw
Production pipeline for mathematical and technical animations using Manim Community Edition.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
drug-discovery
Tommy-yw
Pharmaceutical research assistant for drug discovery workflows.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
godmode
Tommy-yw
Jailbreak API-served LLMs using G0DM0D3 techniques — Parseltongue input obfuscation (33 techniques), GODMODE CLASSIC system prompt templates, ULTRAPLINIAN…
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
oss-forensics
Tommy-yw
Supply chain investigation, evidence recovery, and forensic analysis for GitHub repositories.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
youtube-content
Tommy-yw
Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts).
SkillCFreshness: C★ 510Claude Code +9
Signals
- Stars
- 510
- Forks
- 36
- Open issues
- 2
- Last commit (this folder)
- May 1, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Tommy-yw/RunbookHermes
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from Tommy-yw
- 0.609score
godmode
Tommy-yw
Jailbreak API-served LLMs using G0DM0D3 techniques — Parseltongue input obfuscation (33 techniques), GODMODE CLASSIC system prompt templates, ULTRAPLINIAN…
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
manim-video
Tommy-yw
Production pipeline for mathematical and technical animations using Manim Community Edition.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
baoyu-infographic
Tommy-yw
Generate professional infographics with 21 layout types and 21 visual styles.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
drug-discovery
Tommy-yw
Pharmaceutical research assistant for drug discovery workflows.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
oss-forensics
Tommy-yw
Supply chain investigation, evidence recovery, and forensic analysis for GitHub repositories.
SkillCFreshness: C★ 510Claude Code +9 - 0.609score
concept-diagrams
Tommy-yw
Generate flat, minimal light/dark-aware SVG diagrams as standalone HTML files, using a unified educational visual language with 9 semantic color ramps…
SkillCFreshness: C★ 510Claude Code +9
Cite this page
hermes-atropos-environments skill. Agent Mart. https://agentmart.dev/skills/tommy-yw-hermes-atropos-environments (last updated 2026-10-24)