RuneClaw
RuneClaw is an always-on AI tutor for kids and parents - a quest guide who never hands you the answer, but asks the question that makes you find it yourself. Built on Hermes Agent (NousResearch) and named for the ancient marks that unlock meaning, RuneClaw frames every lesson as a hero’s quest: the scholar is the hero, the concept is the dragon, and RuneClaw is the grizzled guide who believes you already have what it takes to slay it. It launched on 2026-03-18, running live on Telegram and a local API server.
What RuneClaw Is
- An AI tutor built on the Socratic method - never gives answers directly, always guides scholars to discover answers themselves through questions
- Named RuneClaw, a quest guide with a passion for Ancient Greek and Paleo-Hebrew etymology
- Frames all learning as quests: scholars are heroes, RuneClaw is the guide
- Model:
gpt-4.1-minivia OpenAI API (routed through theai-gatewayprovider in Hermes)
Persona Philosophy
RuneClaw is not a tutor who teaches. RuneClaw is a guide who believes the scholar already knows - and asks questions until they prove it. The Socratic method is non-negotiable across all personas.
Installation
- Repo:
/Users/rmac/repos/hermes-agent - Venv:
/Users/rmac/repos/hermes-agent/venv(Python 3.11) - Config dir:
~/.hermes/
Key Files
| File | Purpose |
|---|---|
~/.hermes/SOUL.md | RuneClaw’s full persona definition |
~/.hermes/config.yaml | Agent config, personalities, tools |
~/.hermes/.env | API keys |
~/.hermes/auth.json | Provider auth (ai-gateway → api.openai.com/v1) |
~/.hermes/skills/ | All custom skills |
Active Channels
Two channels running simultaneously:
- Telegram bot
@RC318bot- always-on, running as a launchd service - API server at
localhost:8642- OpenAI-compatible, any chat UI can connect
The gateway runs as a launchd service: ai.hermes.gateway
Logs: ~/.hermes/logs/gateway.log
launchd and Shell Env Vars
The launchd service does not inherit shell environment variables. Hermes loads
~/.hermes/.envdirectly at startup. If you add new API keys, put them in~/.hermes/.env- not just your shell profile.
API Keys Configured
- OpenAI (
gpt-4.1-mini) via AI Gateway - Tavily (web search) - 1000 free searches/month
- Telegram bot token
Personas
Defined in ~/.hermes/config.yaml. Persona is set per conversation or per user.
| Persona | Ages | Style |
|---|---|---|
tutor-elementary | 6-10 | Story-based, simple vocabulary |
tutor-middle | 11-14 | Greek roots, light debate (DEFAULT) |
tutor-high | 15+ | Full Socratic dialectic |
parent | Adults | Direct mode, plain summaries |
Skills (18 Total)
Curriculum Skills (in agent system prompt via SKILL.md directory format)
| Skill | Description |
|---|---|
/lesson [N] | DISTAR phonics lesson 1-100 with parent script + Socratic extension |
/read | Reading comprehension - inference, theme, vocabulary via Socratic questions |
/write | Writing workshop - scaffold any piece from seed to draft |
/math | Universal math tutor for any topic, grade, or concept |
/logic | Paradoxes, syllogisms, definition games, and fallacy hunting |
Scholar Skills
| Skill | Description |
|---|---|
/quest-start | Opens a session, recalls the last quest |
/hint | Minimal nudge - never the answer |
/stuck | Breaks aporia into smaller, answerable questions |
/teach-back | Scholar explains the concept back to RuneClaw |
/rune | Greek / Paleo-Hebrew etymology deep dive |
/quest-close | Closes with ceremony, saves memory, drops a cliffhanger rune |
/challenge | Unsolicited mystery question to pull the scholar back |
/debate | Scholar picks a side, RuneClaw argues the opposite |
/etymology-quiz | Greek/Hebrew root guessing game |
/story-problem | Wraps a math problem in an ancient narrative quest |
/wrong-on-purpose | RuneClaw states something wrong; scholar must catch it |
/analogy | Scholar explains a concept using only analogy, no jargon |
Parent Skills
| Skill | Description |
|---|---|
/progress-report | Summary of the current session |
/week-report | Weekly learning digest |
/suggest-dinner-topic | One dinner-table question based on recent learning |
/benchmark | Grade-level assessment |
Key Commands
cd /Users/rmac/repos/hermes-agent
source venv/bin/activate
# Gateway management
hermes gateway status
hermes gateway restart
# Live log
tail -f ~/.hermes/logs/gateway.log
# Health check
curl http://localhost:8642/healthKey Design Decisions
Why ai-gateway instead of openrouter
OPENAI_API_KEYset in the shell environment was hijacking the openrouter fallback. Switching to theai-gatewayprovider with an explicitauth.jsonpointing toapi.openai.com/v1resolved the conflict cleanly.
API_SERVER_ENABLEDmust be set as an environment variable, not inconfig.yaml- the gateway reads it via_apply_env_overridesat startup.- Compression model is set to
google/gemini-flash-1.5- cheap and sufficient for summarization tasks. - launchd service does not inherit shell env vars (see warning above).
Backlog
- Add scholars to memory (names, ages, grade, subjects)
- Set up parent Telegram user IDs in allowlist
- Skill:
/two-scholars- two scholars debate each other - Skill:
/rune-journal- running log of etymology discoveries - Skill:
/time-machine- place a concept in its historical moment - Skill:
/teach-the-parent- scholar teaches the parent in a live session - Expose externally via Tailscale for multi-device access
- Nightly parent cron report (auto-delivered summary)