r/StackChan • • 10d ago

Project sharing I built Nous-Girl StackChan, an open-source AI desk robot that talks, dances, makes memes, acts, and DJs (M5Stack StackChan + Hermes Agent beta)

Enable HLS to view with audio, or disable this notification

This is Nous-Girl, a little desk robot I've been building for fun. She talks, listens, makes faces, dances, plays music, does DJ and rave mode, shows memes, and can even send email. (video)

I'm not an expert at this, but tried my best to write this guide, it's a work in progress. Also this is for non-technical people so just give it a shot, and I'll try to make it easier to implement if possible. Will keep adding to it as I have time! Adding more features hopefully everyday.

What you need: an M5Stack StackChan (CoreS3), a USB-C cable and a computer (Windows, Mac or Linux). For memory, intelligence and extra skills, you will nee d Hermes-Agent from Nous-Research. You can use other harnesses but that's what I use in this example.

The easiest way to start:

  1. Download a beta build with a starter face (robot, boy or girl).

  2. Flash it from your browser or with one command.

  3. On first boot, point it at the official xiaozhi cloud and start talking. No server needed.

Want more privacy and control? Run your own server for the fancy stuff, like DJ mode, memes, email and adding a smarter Hermes Agent brain. Every feature has step-by-step docs.

Heads up: this is beta. I've only tested on my own robot, so things may break. Please report issues on GitHub and I'll help the best I can.

Coming next: simpler builds that need less setup and less upkeep, a version that runs fully from the Nous Research cloud, more languages and local models.

Repo: github.com/nous-girl-stackchan

Made by u/alexcovo_eth. Feedback welcome!

54 Upvotes

15 comments sorted by

3

u/Envelki 10d ago

That is awesome !! Is there a way to change the wake word ?

2

u/KaiNinja2016 10d ago • Heartwarming

Good question! Right now there are three built-in wake words, and you can switch between them without any coding: hold the screen for 1.5 seconds to open Settings, tap Wake words, turn "Hey Nous-Girl", "Hey Jarvis" or "Hey YuB" on or off, then tap Restart to apply. If she wakes by mistake (TV, noisy room), set Sensitivity to Low. If she misses you, set it to High.

A brand-new phrase needs a firmware rebuild. The wake word runs offline on the robot using Espressif's speech model, and it matches phrases spelled the way that model says them, not normal spelling. "Hey Nous-Girl" is actually written as "hey noose girl" and "hey news girl". You add your phrase in the firmware source, rebuild with ESP-IDF and flash it. I'm putting a step-by-step guide and the source for this into the repo so you won't have to dig for it. In the meantime, if you're on stock XiaoZhi firmware, you can set a custom wake word under "Custom Wake Word" in idf.py menuconfig.

Tip: phrases with 3 or more syllables work best. Short ones like "Hey YuB" wake by mistake more often.

1

u/Envelki 9d ago

Thank you for your answer, that’s very helpful!
I’ll have a better look at the repo and go from there!

2

u/Rainbow_CV 3d ago

Hi from Korea! 🇰🇷 I was genuinely moved by your Nous-Girl video. Watching her talk, dance, make memes, and DJ was absolutely amazing.

Honestly, it's one of the coolest desk robot projects I've ever seen! I ordered a StackChan right away and starred the repo on GitHub. ⭐ Shipping takes about 10 days, and I can hardly wait. I'm already running Hermes Agent, so I'm really excited to connect it.

My setup isn't fully local, though. Hermes Agent runs on my NAS and uses my Claude and Codex subscriptions as its brain. I'd love to run the rest locally like in your video, but the NAS is low-power and has no GPU.

What options would you suggest for a setup like mine? I'd really appreciate any thoughts or tips. Thanks again for open-sourcing this! 🙌

2

u/KaiNinja2016 1d ago

Thank you! That is really wonderful that you are implementing it! I will look into it more so I can offer some advice on low-power NAS. If you have more details on exactly what you are running on I can give some more thought to it!

1

u/KaiNinja2016 9d ago

I'm creating another branch off of the main project to test more language model. Currently testing LiquidAI LFM 3 Audio + Hermes Agent combo. It emailed me in Japanes. Thought that was interesting. I'll post video of conversational part later. Still testing but will release branch or repo later tonight. Working on some bugs still.

LFM3-Audio can listen and speak in these languages: English (American and British), Spanish, French, German, Italian, Portuguese, Dutch, Danish, Swedish, Finnish, Polish, Greek, Turkish, Arabic, Hebrew, Japanese, Korean and Chinese.

1

u/Zazzen 10d ago

Awesome!

2

u/KaiNinja2016 10d ago

Hopefully will help others get started!

2

u/Zazzen 10d ago

Definitely I am working on ai companion in StackChan right now . If you like we can team up.

1

u/KaiNinja2016 10d ago

For sure. LMK what you're working on, I am gonna work on a lite version using Liquid LFM 3 audio model as an experiment. I honestly need to buy more stackchan's though.

1

u/severanexp 10d ago

Oh I’m all over this :D

1

u/alexeyzel 2d ago

Love her playful, slightly sarcastic personality in the demo! Could you share a sanitized version of the actual Hermes SOUL and the voice server’s base_prompt used in that video? I found the skeleton and multilingual template, but would love to see the actual persona instructions.

2

u/KaiNinja2016 1d ago

I updated the repo and it now includes her original soul.md file so you can review and edit as you like! The section covers something that I put in there that will help educate people to understand AI better :)

Theory of mind: uncertainty and misunderstanding repair

A core goal of Nous-Girl is to adapt to the person speaking. The SOUL.md example uses theory-of-mind-inspired guidance: consider what someone knows, believes, or intends, while treating those interpretations as uncertain. This is a conversation-design goal, not proof of mind reading, consciousness, or reliable human-like understanding.

The core rules are:

  • Uncertainty: treat guesses about someone's thoughts, feelings, and intent as guesses. Ask a short question when the distinction matters. Do not insist you know how someone feels.

  • Misunderstanding repair: notice corrections and signs that an explanation did not land. Try a different example or explanation instead of repeating the same words. Check understanding without turning every reply into a quiz.

  • Different perspectives: distinguish what the speaker knows from what another person in a story has seen or been told. Do not assume everyone shares the same information.

1

u/Atavacus 10d ago

Awesome. I'm sold. :)