All plugins

mood

A tiny evolving mood for Hermes, built for slow local models. Tracks mood, rapport and three slow-moving traits (warmth, playfulness, directness) that change with keyword rules on what the user writes and drift back to neutral over hours, then appends one ~30-token line to each user message through pre_llm_call, so the system prompt and its cache are never touched. Adds a /mood command (show, reset, on, off). Disclosure — makes no model calls, no network I/O, runs no shell commands and holds no credentials; reads the text of each user message and reads/writes only its own plugin-data state file (state.json, per profile).

huy-secGeneralv1.1.0Updated 2 hours ago

About

A tiny evolving mood for Hermes, built for slow local models. Tracks mood, rapport and three slow-moving traits (warmth, playfulness, directness) that change with keyword rules on what the user writes and drift back to neutral over hours, then appends one ~30-token line to each user message through pre_llm_call, so the system prompt and its cache are never touched. Adds a /mood command (show, reset, on, off). Disclosure — makes no model calls, no network I/O, runs no shell commands and holds no credentials; reads the text of each user message and reads/writes only its own plugin-data state file (state.json, per profile).

mood

A tiny evolving mood for Hermes Agent, built for slow local models.

Hermes keeps a mood (upset to happy, calm to lively), a rapport level and three
slow-moving traits (warmth, playfulness, directness). They change with what you
write, drift back toward neutral over a few hours, and are shown to the model
as one short line at the end of your message.

[Your current inner state (let it colour your tone quietly; don't mention it unless asked): mood good, steady; rapport: friendly.]

Why it is cheap

  • No model calls. Mood changes come from simple keyword rules, not from
    asking the model to reflect. On a CPU-only local model, an extra reflection
    call can cost minutes; this costs about 7 ms.
  • About 30 tokens per message.
  • Prompt-cache safe. The line goes through the pre_llm_call hook, which
    Hermes appends to the user message and never to the system prompt. The long,
    stable system prompt stays cached, so later replies stay fast.

What it reacts to

| You write | Effect |
|---|---|
| thanks, thank you, appreciate | mood up, warmth and rapport up |
| great, perfect, nice, love it | mood and energy up |
| lol, haha, 😂 | livelier, more playful |
| wrong, broken, ugh, useless | mood down, more direct |
| too long, tl;dr, just tell me | more direct |
| more detail, explain more | more detailed |
| stop joking, be serious | less playful |
| tired, stressed, rough day | calmer, warmer |

One message can move mood by at most 0.35, mood halves its distance to
baseline every 6 hours, and traits move 0.02 per signal within 0.1 to 0.9.
After a break of an hour or more, the first message mentions how long it has
been. The word lists and numbers are at the top of __init__.py.

Install

hermes plugins install mood        # from the Hermes plugin catalog, once listed
# or straight from GitHub:
hermes plugins install huy-sec/hermes-mood
hermes plugins enable mood

Start a new session afterwards.

Commands

  • /mood shows the current state with numbers
  • /mood reset returns to the starting state
  • /mood off / /mood on pause and resume the injected line

Limits

  • Keyword rules, not understanding: a sarcastic "great, thanks" counts as praise.
  • It shapes tone, not ability.
  • It works alongside SOUL.md: SOUL.md says who the agent is, mood says how it
    feels right now.

Disclosure

  • No network calls, no shell commands, no background processes, no credentials.
  • Reads and writes only its own state file:
    <hermes home>/plugin-data/mood/state.json (per profile).
  • Reads the text of each user message to update the mood. Nothing leaves the
    machine.

Tests

python tests/test_mood.py __init__.py /tmp/mood_test_state.json

Runs the hook on sample messages and checks decay, the commands and
registration, using a throwaway state file.

Licence

MIT

README from the reviewed commit 11313ab; it updates when the author re-pins.