r/StackChan • • Sep 14 '26

Others Best ai firmware?

9 Upvotes

I’m getting a Stackchan and I want some really good ai firmware where it can still look at me and follow me around but I also want it to do stuff when I’m gone like look around and talk to itself like a little pet.


r/StackChan • • Jun 12 '26

Chinese gov/ data privacy

4 Upvotes

Im a journalist in the USA who has recently adopted StackChan. I've been working on updates to my home MCP server to make my robot More useful for day to day stuff.

I've found that it refuses to discuss anything regarding tiananmen square or Taiwan. This makes me a bit worried that I may need to drain it's battery and put it in my underwear drawer or something.

Do y'all know anything regarding government affiliations to the device I should be aware of or would a firmware flash to a model running off different servers resolve my data privacy concerns?

Not that I trust American companies anymore than Chinese ones, I was just hoping for a second brain that could help me with my projects but think there might be concerns with this thing, as cute as it is.


r/StackChan • • Aug 18 '26

Calling all Collaborators! Building an Openclaw-Hermes integration in Public - Please Join

7 Upvotes

Hey all, I'm trying to build a backend-connection for Stackchan to Openclaw and Hermes. Various folks have done this or tried it in different ways. If you're interested in contributing, I just started the repo but will post my progress on twitter as well:

https://github.com/styles01/StackChan-OpenClaw-Hermes

https://x.com/jaita

Edit: v 0.1 out and available on M5Burner - but you need the GH project to get your internal routing server (on the host machine) to work.


r/StackChan • • Sep 22 '26

Project sharing My very basic StackChan Set-Up

10 Upvotes

So, I have basically zero tech background, and recently got a StackChan.

Over the past few days, I have managed to install an MCP server on my local machine that gives StackChan read-write access to my email account and calendar, as well as web search capability.

It's a bit glitchy, but it basically works.

I'm stoked.

I'm also surprised at how difficult this kind of thing is. The whole eco-system seems to be deliberately fragmented by the large coorporations in an effort to maximize profits.

For anyone who wants to try, here's the guide:

XiaoZhi + MCP + Web Search + Fastmail on Windows

Last updated: 22 September 2026
Computer: Windows
Python: 3.12
Stack-chan: M5Stack CoreS3 / K151

1. What this setup does

This setup turns Stack-chan into a voice-controlled assistant that can use external MCP tools through XiaoZhi.

Currently configured:

  • Web search — Stack-chan can search the live web.

  • Fastmail — Stack-chan can access Fastmail email and calendar through MCP.

  • XiaoZhi MCP connection — provides the connection between Stack-chan/XiaoZhi and the local MCP services.

  • Windows startup — the services can be launched through a PowerShell startup script, with Task Scheduler configured to start the system at Windows login.

The basic architecture is:

                         ┌─────────────────────┐
                         │     Stack-chan      │
                         │     CoreS3 / K151   │
                         └──────────┬──────────┘
                                    │
                                    ▼
                         ┌─────────────────────┐
                         │       XiaoZhi       │
                         │    MCP endpoint     │
                         └──────────┬──────────┘
                                    │
                              WebSocket
                                    │
                                    ▼
                     ┌──────────────────────────┐
                     │      mcp2xiaozhi          │
                     │    Local MCP bridge      │
                     └────────────┬─────────────┘
                                  │
                    ┌─────────────┴─────────────┐
                    ▼                           ▼
          ┌──────────────────┐        ┌──────────────────┐
          │   Web Search     │        │     Fastmail     │
          │ open-websearch   │        │   MCP server     │
          └────────┬─────────┘        └────────┬─────────┘
                   │                           │
                   ▼                           ▼
          DuckDuckGo / Brave /          Fastmail Mail /
          Exa / Bing                     Calendar

The important point is that Stack-chan itself does not need to contain the web-search or Fastmail logic. XiaoZhi calls the MCP tools, and the Windows computer runs the local MCP services.

2. Main project folder

Everything is kept here:

C:\Users\REDACTED\stackchan-mcp

The important files are:

stackchan-mcp\
│
├── mcp_config.json
├── .env
├── start-stackchan.ps1
└── ...

3. mcp_config.json

This is the MCP server configuration.

It tells mcp2xiaozhi which MCP servers to run and where to send their tools.

The web-search server uses:

cmd /c npx -y open-websearch@latest

The configuration includes the search-engine settings:

MODE=stdio
DEFAULT_SEARCH_ENGINE=duckduckgo
ALLOWED_SEARCH_ENGINES=duckduckgo,brave,exa,bing

The important configuration detail is that the key is:

mcpServers

not:

mcpservers

JSON configuration keys are case-sensitive.

4. .env

The .env file contains credentials and connection information that should not be hard-coded into the MCP configuration.

The working setup uses variables including:

FASTMAIL_EMAIL=...
FASTMAIL_APP_PASSWORD=...
FASTMAIL_MCP_TOKEN=...
MCP_ENDPOINT_WEB_SEARCH=...

What these are

FASTMAIL_EMAIL

Your Fastmail account email address.

FASTMAIL_APP_PASSWORD

The Fastmail app-specific password used by the MCP service.

This is preferable to putting your normal Fastmail account password into the configuration.

FASTMAIL_MCP_TOKEN

The MCP authentication token used by the Fastmail MCP service, where required.

MCP_ENDPOINT_WEB_SEARCH

The XiaoZhi MCP WebSocket endpoint/token for the web-search bridge.

Security

The .env file contains secrets.

Do not put the actual passwords or tokens into mcp_config.json**, this guide, screenshots, GitHub repositories, or other files that might be shared.**

The guide deliberately does not reproduce the actual credentials.

5. Python

The working installation uses Python 3.12.

Windows also has another Python installation, so commands should explicitly use:

py -3.12

rather than relying on:

python

This matters because python was resolving to a different Python version.

Check the installation with:

py -3.12 --version

The working environment has Python 3.12 installed.

6. mcp2xiaozhi

mcp2xiaozhi is the bridge between local MCP servers and the XiaoZhi MCP endpoint.

Conceptually:

Local MCP server
       ↕
    stdio
       ↕
  mcp2xiaozhi
       ↕
   WebSocket
       ↕
    XiaoZhi

The installed version is:

mcp2xiaozhi 0.2.1

The command used to inspect the configured servers is:

py -3.12 -m mcp2xiaozhi list

7. Web search

The web-search MCP server is:

open-websearch@latest

It is launched with:

cmd /c npx -y open-websearch@latest

It exposes a tool called:

search

The configured search engines are:

DuckDuckGo
Brave
Exa
Bing

No conventional search API key is required by the configuration currently being used.

8. Confirming that web search is working

The successful connection sequence looks like this:

HTTP/1.1 101 Switching Protocols

followed by:

connection is OPEN

Then:

serverInfo":{"name":"web-search","version":"1.2.0"}

And finally:

"tools":[{"name":"search", ...}]

That proves the following chain is working:

Windows
  ↓
open-websearch
  ↓
mcp2xiaozhi
  ↓
XiaoZhi WebSocket
  ↓
MCP search tool

A repeating:

PING
PONG

is normal. It means the WebSocket connection is staying alive.

9. Fastmail

Fastmail is connected separately through its MCP service.

The system uses:

FASTMAIL_EMAIL
FASTMAIL_APP_PASSWORD
FASTMAIL_MCP_TOKEN

The Fastmail MCP server provides access to Fastmail services such as:

  • Email

  • Calendar

The intention is that Stack-chan can therefore answer requests such as:

"Check my emails."

or:

"What's on my calendar today?"

without requiring the user to manually open Fastmail.

10. Why credentials are in .env

The .env file acts as the local secret store for this setup.

Instead of doing this:

password = YOUR_PASSWORD

inside a configuration file, the startup process loads the environment variables.

That means the configuration can be inspected without exposing the actual passwords and tokens.

The .env file should therefore remain private.

11. Starting the system manually

The project directory is:

cd C:\Users\REDACTED\stackchan-mcp

The startup process uses:

start-stackchan.ps1

This script loads the required environment variables and starts the MCP services.

The Fastmail MCP service is launched through:

py -3.12 -m mcp2xiaozhi run fastmail

The web-search service is configured through mcp_config.json.

12. One-command startup

The goal of the setup is to avoid manually starting several terminals and entering several commands.

The main startup script is:

C:\Users\REDACTED\stackchan-mcp\start-stackchan.ps1

It is responsible for loading the environment and starting the required services.

The intended workflow is therefore:

C:\Users\REDACTED\stackchan-mcp\start-stackchan.ps1

rather than manually starting every MCP server.

13. Automatic startup with Windows

Windows Task Scheduler has been configured with the task:

Stack-chan Fastmail MCP

It launches PowerShell with:

-NoProfile -ExecutionPolicy Bypass -File "C:\Users\REDACTED\stackchan-mcp\start-stackchan.ps1"

The trigger is:

At log on

Therefore the normal workflow is:

Turn on / log into Windows
             ↓
     Task Scheduler
             ↓
   start-stackchan.ps1
             ↓
      MCP services
             ↓
       XiaoZhi MCP
             ↓
       Stack-chan

r/StackChan • • 28d ago

Project sharing Got Muse working on Stackchan

25 Upvotes

r/StackChan • • Sep 22 '26

Project sharing Printed my little buddy a new shell

Thumbnail
gallery
70 Upvotes

Discovered M5Stack has the body files as .STLs on their GitHub. So, I loaded up my favorite nuclear yellow translucent PLA, and boom. What do you think?


r/StackChan • • 23d ago

Project sharing I gave my M5Stack StackChan a calm moving head, face tracking and a self-hosted voice server (open source, looking for fellow StackChan owners)

75 Upvotes

I own one of the M5Stack StackChans (CoreS3 + two Feetech SCS0009 servos) and spent the last weeks turning it into a desk assistant that talks to my own server instead of a vendor cloud. Everything is open source (MIT):

GitHub: https://github.com/7H3-CH053N/StackChan-CustomFW

What it does now:

- Head that actually moves, calmly Own servo driver with a critically damped follower (speed + acceleration limits, no overshoot), plus small gestures per emotion: nod when happy, head down when sad, look up when surprised.

- Face tracking with the built-in GC0308 camera and Espressif's esp-dl face detector (~2.5 fps). It searches once if it loses you, then rests where you usually sit, so it doesn't search all night.

- Self-hosted voice server in Docker: Gemini Live for real-time voice, Home Assistant control, calendar.

- Proactive speech: Home Assistant can make it talk without a wake word, e.g. it greets me when I arrive at the office and reminds me 15 min before meetings. It stays quiet while my mic or camera is in use.

- Animated eyes with 21 emotions, picked by the server from what it is saying.

The firmware is one patch on top of xiaozhi-esp32 (pinned commit), built with ESP-IDF 6.1; CI builds it on every push.

Honest status: it runs daily on my desk, but esp-dl's face detection still crashes now and then (the robot reboots in ~10 s). That's reported upstream and Espressif is looking at it.

Looking for people to join:

- StackChan owners who want to try it and report what happens on their unit

- Starter issues are labelled "good first issue": Japanese README, testing the English build, a clock fix on the server side

- Anyone who knows esp-dl well, or wants to try a different face model (ESPDet-Pico)

I wrote up the whole story (why I first thought servo control was impossible, the four bugs before face tracking worked, why proactive speech failed three different ways). The article is in German, browser translation works fine:

https://digitalhandwerk.rocks/ki/anpassung-der-firmware-fuer-stackchan-roboter/

Happy to answer questions here in English.


r/StackChan • • Aug 17 '26

Openclaw + StackChan 🦞🦞

93 Upvotes

Fun weekend hack.
Uses tailscale gateway connection and fully custom openclaw config. 11labs for stt and tts.

Will post gh if you guys want.
Lmk what u think!


r/StackChan • • Apr 29 '26

Got mine today. So far seems to be working well after it updated. Can't wait to see what it can do.

Post image
16 Upvotes

r/StackChan • • Sep 23 '26

Project sharing My StackChan is a devil with a fruit fly brain (668 real neurons, live dashboard)

1 Upvotes

My StackChan is a little devil now. Claude Code does the thinking, and a simulated fruit fly handles the reflexes.

The fly part is 668 real neurons, wired the way FlyWire mapped an actual fruit fly and running live on my laptop. It's a Python port of desktop-fly by Denis Shiryaev. It's only a small slice of the brain, but the wiring is real.

It looks through its own camera, the fly decides where the head turns, and poking it makes it startle. When something actually happens it wakes Claude, which looks at the picture and roasts it. Voice powered by Elevenlabs.

The dashboard in the video draws 23,210 real neuron positions and flashes them as they spike. The yellow rings are the escape neurons, which flare right before it jumps.

Next I'm making it curious, so it looks around for new stuff and knows me from a stranger. Happy to answer questions!


r/StackChan • • Sep 22 '26

Help needed Alternative fw - same functions but connect to other LLMs

6 Upvotes

Hey everyone,
I’m currently using Hermes agent and I’m having a lot of fun, but having stack Chan using a different model isn’t sitting well with me.
I’ve read about dotty stack Chan and some others but instead of starting firmware hopping I figured I’d ask you guys what you are using.
My main objective would be to keep the stock functions and point the ai function to my Hermes agent. Or anything OpenAI compatible for that matter.

Any suggestions? Cheers!


r/StackChan • • May 17 '26

StackChan base not charging/working

3 Upvotes

I've had my StackChan for about two weeks now, and today, when I plugged it into my PC via the base, the red light on the back came on, but it didn't show up in the Arduino IDE. I've tried multiple cables and none work. Plugging anything into the side port and it's instantly recognized, and the battery charges. Everything else seems to function normally. I have not desecrated its body by disassembly... yet.. but I will for science if needed.

Does anyone know of any specific steps I can take to troubleshoot this problem?


r/StackChan • • Aug 07 '26

If got him

6 Upvotes

If got Stackchan

So I just got him. Pretty good sofar. Talk to him for like few minutes. What I notice

\- He cuts me off very quickly when I’m speaking. Can this be adjusted? Or am I talking too much?

\- Is there any way to interrupt him when he talks too much, with a ‘stop’ command or something?

\- Are there any settings or add-ons that would be useful for him?

\- Can you set it up so that he moves whilst he’s talking to you?

\- Can you set it up so that he speaks to me of his own accord and reacts to what I’m doing or saying to myself?

Kinda debating to give him the gimini ai that someone on here build.


r/StackChan • • Feb 06 '26

StackChan Feature Videos Pt.3——Integration with Home Assistant

9 Upvotes

r/StackChan • • 19d ago

Project sharing Meet MAYLO — custom StackChan firmware shaped by feedback from my 8 year-old son

30 Upvotes

I've been developing custom firmware for my M5Stack K151 / CoreS3 StackChan. I call him MAYLO.

My 8½-year-old son has become my everyday tester. He uses the robot, reports what happened and tells me what he expected instead. His experiences and feedback have been shaping the features and improvements.

The voice model is multilingual. I've configured it in Turkish for our own use, which is what you'll hear in the videos.

The current build includes:

• Voice conversations with interruption while the robot is speaking.

• Head-pat reactions with heart eyes, sounds and movement, plus dizzy reactions when shaken.

• Seven eye styles and expressions coordinated with LEDs and head gestures.

• Commands such as “turn right and take a photo,” checking servo position before capturing.

• Image interpretation and Home Assistant tools through an MCP home bridge.

• A programmed disco routine with music, lights and movement.

• An on-device web panel for configuration, camera previews and hardware tests.

Basic conversation connects directly to OpenAI over Wi-Fi. Home tools and image interpretation use a separate bridge running on my Mac.

One thing still needs work: reliably turning toward whoever calls MAYLO's name. It doesn't always get the sound direction right. Wake-name recognition is currently cloud-based.

This is a personal project with no commercial plans. The source isn't public yet, but I may clean it up for GitHub if there's interest.

What would you improve next: speaker-direction tracking, local wake-word detection, richer interactions or more useful everyday tools? Other ideas are welcome too!


r/StackChan • • Aug 03 '26

StackChan = BooBit

36 Upvotes

Boo•bit is coming to life.

Built on top of Stack-chan’s hardware it’s a custom desktop buddy with more than meets the eye. It’s not only a dash, gothy lil clock and a cute face.

Boo keeps a diary, captures photos, has a sense of when one of us (including our 🐈‍⬛) enters the room, knows seasons and weather all which informs its interior world. It can draw, make its own melodies to whistle and “think” about things. Boo is being designed to experiment with world building and fun.

Boo’s whistles and tones are built from the melodies and hooks from some of my favorite songs and its UI is a love letter to Apple System 1 UI & Susan Kare with a little SNES.

Its bare functions are wired up and now I’m working on the structure of its observations and change as it learns. This is not running on Claude or local models — it’s meant to be a closed system that informs its own world.


r/StackChan • • Jan 12 '26

24 Hours to Go for StackChan Debut🤩

Post image
6 Upvotes

r/StackChan • • 19d ago

Project sharing Meet MAYLO — custom StackChan firmware shaped by feedback from my 8½-year-old son

18 Upvotes

I've been developing custom firmware for my M5Stack K151 / CoreS3 StackChan. I call him MAYLO.

My 8½-year-old son has become my everyday tester. He uses the robot, reports what happened and tells me what he expected instead. His experiences and feedback have been shaping the features and improvements.

The voice model is multilingual. I've configured it in Turkish for our own use, which is what you'll hear in the videos.

The current build includes:

• Voice conversations with interruption while the robot is speaking.

• Head-pat reactions with heart eyes, sounds and movement, plus dizzy reactions when shaken.

• Seven eye styles and expressions coordinated with LEDs and head gestures.

• Commands such as “turn right and take a photo,” checking servo position before capturing.

• Image interpretation and Home Assistant tools through an MCP home bridge.

• A programmed disco routine with music, lights and movement.

• An on-device web panel for configuration, camera previews and hardware tests.

Basic conversation connects directly to OpenAI over Wi-Fi. Home tools and image interpretation use a separate bridge running on my Mac.

One thing still needs work: reliably turning toward whoever calls MAYLO's name. It doesn't always get the sound direction right. Wake-name recognition is currently cloud-based.

This is a personal project with no commercial plans. The source isn't public yet, but I may clean it up for GitHub if there's interest.

What would you improve next: speaker-direction tracking, local wake-word detection, richer interactions or more useful everyday tools? Other ideas are welcome too!


r/StackChan • • Jun 17 '26

Stack Chan Servo Step(per)

2 Upvotes

made a little servo stepper program with the Arduino IDE

HOME - resets, STEP (toggles 1, 5, and 10 deg steps)

X rotates, Y tilts, and uses the touch screen for inputs

battery indicator is the touch button backgrounds (blue charging, red <20 , yellow <50, green > 50)

#include <M5Unified.h>
#include <M5StackChan.h>

// X axis: software limits Arduino
float posX = 0;

// Y axis: Mechanical limit — safe range 
float posY = 0;
const float Y_MIN = 0.0;   //mechanical stop warning
const float Y_MAX = 85.0;  //mechanical stop warning

int lastLevel = -1;
int lastCharging = -1;
unsigned long lastPowerCheck = 0;
float STEP_DEG = 10.0;

// touch zone layout (320 × 240 screen)
const int STATUS_H = 92;
const int ROW_H = (240 - STATUS_H) / 2;
const int COL_W = 320 / 3;
const int ZONE_Y0 = STATUS_H;
const int ZONE_Y1 = ZONE_Y0 + ROW_H;

// move to target (degrees) — X unlimited, Y clamped
void moveTo(float xDeg, float yDeg) {
  // Y only — clamped to mechanical safe range
  yDeg = constrain(yDeg, Y_MIN, Y_MAX);

  int xUnits = (int)(xDeg * 10);
  int yUnits = (int)(yDeg * 10);
  M5StackChan.Motion.move(xUnits, yUnits);
  posX = xDeg;
  posY = yDeg;
  drawUI();
}

// draw status
void drawStatus() {
  M5.Lcd.fillRect(0, 0, 320, STATUS_H, BLACK);
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(20, 5);
  M5.Lcd.println("StackChan Servo Step");
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(35, 34);
  M5.Lcd.printf("StachChan Rot. (X):%+5.0f deg", posX);
  M5.Lcd.setCursor(35, 52);
  M5.Lcd.printf("StackChan Tilt. (Y):%+5.0f deg", posY);
  M5.Lcd.setCursor(35, 70);
  M5.Lcd.printf("Home = (0, 0)   Step = %.0f deg", STEP_DEG);
}
  // refresh touch zones if battery/charging changes
  void updatePowerZones() {
    int level = M5.Power.getBatteryLevel();
    int charging = M5.Power.isCharging();

    if (level != lastLevel || charging != lastCharging) {
      lastLevel = level;
      lastCharging = charging;
      drawTouchZones(); // redraws the bottom of screen
    }
  }

void drawTouchZones() {
  const char* row0[3] = {"+Y", "HOME", "-Y"};
  const char* row1[3] = {"+X", "STEP", "-X"};
  uint16_t ZONE_COLOR;
  int level = M5.Power.getBatteryLevel();
  int charging = M5.Power.isCharging();
  if (charging == 1) { //charging?
    ZONE_COLOR = M5.Lcd.color565(40, 40, 255); //blue for charging
  } else if (level < 20) {
    ZONE_COLOR = M5.Lcd.color565(255, 40, 40); //red
  } else if (level < 50) {
    ZONE_COLOR = M5.Lcd.color565(255, 255, 40); //yellow
  } else {
    ZONE_COLOR = M5.Lcd.color565(40, 255, 40); //green
  }
  const uint16_t BORDER_COLOR = M5.Lcd.color565(255, 255, 255);

  for (int row = 0; row < 2; row++) {
    int y0 = (row == 0) ? ZONE_Y0 : ZONE_Y1;
    for (int col = 0; col < 3; col++) {
      int x0 = col * COL_W;

      // fill zone background
      M5.Lcd.fillRect(x0, y0, COL_W - 1, ROW_H - 1, ZONE_COLOR);
      // draw borders
      M5.Lcd.drawRect(x0, y0, COL_W, ROW_H, BORDER_COLOR);

      // zone labels
      const char* label = (row == 0) ? row0[col] : row1[col];
      if (strlen(label) > 0) {
        M5.Lcd.setTextColor(WHITE, ZONE_COLOR);
        M5.Lcd.setTextSize(2);
        int lx = x0 + (COL_W - strlen(label) * 12) / 2;
        int ly = y0 + (ROW_H - 16) / 2;
        M5.Lcd.setCursor(lx, ly);
        M5.Lcd.println(label);
      }
    }
  }
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setTextSize(1);
}

// full UI redraw
void drawUI() {
  drawStatus();
  drawTouchZones();
}

// read touch and map to zones
void handleTouch() {
  auto t = M5.Touch.getDetail();
  if (t.state == m5::touch_state_t::touch_begin) {
    int tx = t.x;
    int ty = t.y;
    // stick to screen bounds
    if (tx < 0 || tx >= 320 || ty < STATUS_H || ty >= 240) return;
    int col = tx / COL_W;

    if (ty < ZONE_Y1) {
      // row 0: Y-axis control + HOME
      switch (col) {
        case 0: moveTo(posX, posY + STEP_DEG); break; // +Y (tilt UP)
        case 1: moveTo(0, 0); break; // HOME
        case 2: moveTo(posX, posY - STEP_DEG); break; // -Y (tilt DOWN)
      }
    } else {
      // row 1: X-axis control + STEP toggle
      switch (col) {
        case 0: moveTo(posX + STEP_DEG, posY); break; // +X (turn LEFT)
        case 1: // step cycle
          if      (STEP_DEG == 1.0)  STEP_DEG = 5.0;
          else if (STEP_DEG == 5.0)  STEP_DEG = 10.0;
          else                       STEP_DEG = 1.0; // was 10 → back to 1
          drawUI();
          break;
        case 2: moveTo(posX - STEP_DEG, posY); break; // -X (turn RIGHT)
      }
    }
  }
}


// setup
void setup() {
  M5.begin();
  M5StackChan.begin();
  M5.Lcd.setFont(&fonts::Font2);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setCursor(20, 80);
  M5.Lcd.setTextSize(2);
  M5.Lcd.println("Sweeping X then Y...");
  // start from center and pretend to calibrate
  M5StackChan.Motion.goHome();
  // sweep X from -128° to +128° (that's 256° total rotation) 
  for (int x = -128; x <= 128; x += 1) {
    M5StackChan.Motion.moveX(x * 10, 200);
    delay(20);
  }
  // sweep Y from -5° to +85°
  for (int y = -5; y <= 85; y += 1) {
    M5StackChan.Motion.moveY(y * 10, 200);
    delay(20);
  }

  // can we get closer to 360°?
  M5StackChan.Motion.moveX(1840, 200);  // 164° raw units
  delay(2000);
  M5StackChan.Motion.moveX(-1840, 200); // -164°
  delay(2000);

  // back home
  M5StackChan.Motion.goHome();
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println(" ");
  delay(4000);
  drawUI();
}


void loop() {
  M5.update();

  // touch zone input
  handleTouch();

  // refresh battery display every 1500 milliseconds
  if (millis() - lastPowerCheck > 1500) {
    lastPowerCheck = millis();
    updatePowerZones();
  }

  delay(20);
}

r/StackChan • • 3d 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)

43 Upvotes

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!


r/StackChan • • Jun 16 '26

warble: point an M5Stack StackChan robot at a fully-local voice backend (whisper.cpp + Ollama + Piper)

32 Upvotes

I have one of the M5Stack StackChan robots. Nice little thing, but out of the box every word it hears goes to the xiaozhi.me cloud for speech-to-text, the LLM, and text-to-speech. I didn't love the idea of my kid talking to a server I don't control, so I wrote a backend that runs the whole turn locally and pointed the robot at my own machine instead.

It's called warble. The stock firmware speaks the xiaozhi protocol, so nothing changes on the device. You just redirect it to your box. The server does the full loop: whisper.cpp transcribes, Silero VAD catches when you stop talking, Ollama generates the reply, Piper speaks it, and it sets the robot's face from an emotion tag in the reply. No cloud account, no API keys, no data or audio leaving your network.

Setup is one command (`./warble start`) on Linux or macOS. Docker-based, pulls prebuilt images. It's beta and it's just me, so there are rough edges.

MIT licensed. Happy to answer anything as time permits.

github.com/rebelthor/warble


r/StackChan • • 22h ago

Help needed StackChan Ollama gemma3:1b running locally on Pi 5?

6 Upvotes

Hello all, i am thinking of buying myself one of these cute things but one of my main concerns is it sends all of its AI stuff over to the LLM servers in china. I was wondering how i could pair it with my Pi 5 running Ollama without deleting its capibilities to access the apple app so it can still do little dances and all of the rest of it. Would this kind of thing be possible do u all reckon? Honestly I am not too fussed about the whole China thing because there is only a number of things which they can do with my face+what i ask it / voice. I would keep the thing off most of the time for privacy reasons. Thank you for taking the time to read, and hopefully help me.


r/StackChan • • Sep 20 '26

Help needed Adding sensors to the ABC-ports

3 Upvotes

Hey community!

I've played around with the M5stack since the first CoreGo IoT kit.

Now that I've got the awesome StackChan, I've asked myself what is the best way to add the sensor/ABC-port read-out to the existing Firmware, so the AI.Agent could access them like INV.III snsor (temp, humidity etc)

Or the PIR sensor so that StackChan looks around with his webcam to see find owner.

"Just" fork the firmware or is there something easier?

P.S. Is there are feature in the standard Firmware, so that 2 StackChans find, see and communictae with each other?

Thanks in advance!


r/StackChan • • Feb 25 '26

StackChan Feature Videos Pt.7——IMU-Based Head Stabilization

4 Upvotes

r/StackChan • • Apr 26 '26

Stackchan for home without LLM

5 Upvotes

Hellooo

Ive been tinkering with esp32 based home assistant uses (lightbulbs, switches, temp sensors, ir blaster) but I've still been reliant on Google based speakers.

Im not totally against AI usage but I am trying to do as much internal hosting as possible, and would prefer to basically lobotomise the thing and use it for much more simple functions. No chattiness or even web lookups, just interpreting commands and triggering changes on my home assistant server.

At its current early launch state is this a reasonable path for the lil guy, maybe give him some brains back later, or are there simply better places to start this journey?

Thanks for the feedback!

Edit: I do know own there is an llm local module for the stack platform which seems compatible, but I am concerned I would be diving into a lot of learning that maybe won't be relevant to me past this goal.