Catgirl mood animations that react to your Hermes Agent sessions in real time.
Display cute, looping catgirl animations in a terminal window that automatically respond to Hermes Agent tool calls โ searching, coding, generating images, or hitting errors. Every mood has its own animation cycle!
| Feature | Description |
|---|---|
| ๐ญ Auto Mood Tracking | Fires on post_tool_call hook โ watches Hermes Agent tool calls and picks the mood automatically |
| ๐ฑ 8 Catgirl Moods | happy curious working thinking sad excited sleeping surprised |
| ๐จ GIF + ASCII Fallback | Each mood has 3 looping GIF animations + an ANSI ASCII fallback; chafa renders GIFs beautifully |
| ๐ Live Animation Cycling | Daemon continuously loops the current mood animation until a new one arrives |
| โ Grow the Library | Use the add_animation tool to download new GIFs directly into mood folders |
| ๐ง Zero Core Modifications | Pure Hermes plugin โ no patches to the agent itself |
| Activity | Mood | Example |
|---|---|---|
| Search / browse / read | ๐ curious |
web_search, read_file |
| Terminal / patch / git | ๐ working |
terminal, patch |
| Code / reason / analyze | ๐ญ thinking |
execute_code, delegate_task |
| Write / save / send | ๐ธ happy |
write_file, send_message |
| Image / audio generate | โจ excited |
image_generate, text_to_speech |
| Question / clarify | ๐ฎ surprised |
clarify |
| Errors / failures | ๐ฟ sad |
Auto-detected from result text |
| Session start | ๐ธ happy |
on_session_start hook |
| Session end | ๐ค sleeping |
on_session_end hook |
- Hermes Agent v0.7.0+ (plugin support)
- chafa โ terminal image renderer
# Ubuntu / Debian sudo apt install chafa # Fedora sudo dnf install chafa # macOS brew install chafa # Arch sudo pacman -S chafa
- Python 3.10+ (stdlib only โ no pip dependencies!)
git clone https://github.com/rwcrosk-arch/hermes-visualizer-plugin ~/.hermes/plugins/visualizerhermes plugins enable visualizerFully quit and restart Hermes so the plugin is discovered:
hermesIn a separate terminal window/tab:
cd ~/.hermes/plugins/visualizer
python3 daemon.py
โ ๏ธ Important: The daemon needs its own terminal window because it usessys.stdoutdirectly for chafa display. Running it in a background process (nohup/&) may cause path issues.
Every tool call will now trigger a mood animation. Type a prompt and watch the catgirl react! ๐ฑ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Hermes Agent Process โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Plugin: visualizer โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ post_tool_call hook โโโโผโโโผโโโ mood determined from tool name
โ โ โ on_session_start โโโโผโโโผโโโ happy
โ โ โ on_session_end โโโโผโโโผโโโ sleeping
โ โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โ โ โ
โ โ JSON to events.pipe โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโดโโโโโโโโโโโ โ
โ โ events.pipe (FIFO) โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Visualizer Daemon Terminal โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ daemon.py โ โ
โ โ โโ reads pipe (O_RDWR) โ โ
โ โ โโ picks animation โ โ
โ โ โโ loops chafa GIF โ โ
โ โ โโ clear + ANSI status โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
You can also manually trigger or curate animations:
# Show a mood right now
show_mood(mood="excited", message="Image generated!")
# Add a new GIF to a mood library
add_animation(
url="https://example.com/cat.gif",
mood="happy",
filename="happy_4.gif"
)
# List all available moods and their files
list_moods()- Check
plugin.yamlis not empty - Run
hermes plugins listโvisualizershould appear as enabled - If not:
hermes plugins enable visualizer - Restart Hermes after enabling
# Check daemon is running
cat ~/.hermes/plugins/visualizer/daemon.pid
# If missing/pid dead, start:
python3 ~/.hermes/plugins/visualizer/daemon.pyThe daemon must be started in a shell with chafa in PATH. If you see [Errno 2] No such file or directory: 'chafa':
- Make sure chafa is installed
- Start the daemon in a live shell, not via
nohupor systemd
The daemon clears screen with \033[2J\033[H before each frame. If chafa doesn't support your terminal, it falls back to ASCII art.
rm -f ~/.hermes/plugins/visualizer/events.pipe
# The daemon recreates the FIFO on startup# With daemon running:
echo '{"mood":"happy","message":"test"}' > ~/.hermes/plugins/visualizer/events.pipe| File | Purpose |
|---|---|
plugin.yaml |
Hermes plugin manifest (enables discovery) |
__init__.py |
Plugin entry point โ registers tools + hooks |
schemas.py |
Tool schemas for show_mood, add_animation, list_moods |
tools.py |
Tool handlers (writes events to named pipe) |
daemon.py |
Background display daemon (reads pipe, renders via chafa) |
animations/ |
8 mood directories โ each contains GIF + ASCII fallback |
install.sh |
Optional local installer script |
skill.md |
Bundled skill reference |
Each mood folder contains:
mood_1.gif,mood_2.gif,mood_3.gifโ Chafa renders these in a 3-cycle loopfallback_name.ansiโ ASCII art backup if chafa fails
Add your own GIFs with the add_animation tool or by placing files directly into mood directories.
Contributions welcome!
- Fork the repo on GitHub
- Clone to
~/.hermes/plugins/visualizer - Make changes โ test with the daemon running
- Submit a PR
Ideas:
- New mood additions (e.g.
angry,love,confused) - Animated ANSI frames (no chafa dependency!)
- Daemon size/theme customization via config
- Auto-daemon-start helper
rwcrosk-arch โ GitHub
Inspired by the Hermes Agent community and built with love for terminal catgirls everywhere. (=^๏ฝฅฯ๏ฝฅ^=)
This project is licensed under the MIT License โ see LICENSE for details.
Catgirl not included โ but the plugins are! ๐พ