Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,6 @@ jobs:
if: failure()
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
REPO: ${{ github.repository }}
REF: ${{ github.ref_name }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
Expand All @@ -167,8 +166,3 @@ jobs:
run: |
payload=$(jq -cn --arg t ":x: *CI failed* · \`${REPO}\` · \`${REF}\` — ${RUN_URL}" '{text: $t}')
curl -fsS -X POST "$SLACK_WEBHOOK_URL" -H 'Content-Type: application/json' -d "$payload"
- name: Post Discord notification
if: env.DISCORD_WEBHOOK_URL != ''
run: |
payload=$(jq -cn --arg c ":x: **CI failed** · \`${REPO}\` · \`${REF}\` — ${RUN_URL}" '{content: $c}')
curl -fsS -X POST "$DISCORD_WEBHOOK_URL" -H 'Content-Type: application/json' -d "$payload"
13 changes: 0 additions & 13 deletions .github/workflows/firmware-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,16 +142,3 @@ jobs:
fi
payload=$(jq -cn --arg t ":x: *Firmware build failed* · \`${REPO}\` · \`${REF}\` — ${RUN_URL}" '{text: $t}')
curl -fsS -X POST "$SLACK_WEBHOOK_URL" -H 'Content-Type: application/json' -d "$payload"
- name: Post Discord notification
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
REPO: ${{ github.repository }}
REF: ${{ github.ref_name }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
if [ -z "$DISCORD_WEBHOOK_URL" ]; then
echo "DISCORD_WEBHOOK_URL not set, skipping Discord notification"
exit 0
fi
payload=$(jq -cn --arg c ":x: **Firmware build failed** · \`${REPO}\` · \`${REF}\` — ${RUN_URL}" '{content: $c}')
curl -fsS -X POST "$DISCORD_WEBHOOK_URL" -H 'Content-Type: application/json' -d "$payload"
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

**Your self-hosted [StackChan](https://github.com/m5stack/StackChan) robot assistant — kid-minded by default, hackable by design, private by architecture.**

> ⚠️ **Heads up: this is not a stable project yet.** Dotty is buggy, frequently broken, and actively changing day-to-day. End-to-end behaviour works on the maintainer's hardware but regressions land all the time, the API and config surface shifts without notice, and a fresh deploy on someone else's gear has not been verified. Treat this as a hobby-grade work-in-progress, not a polished product. Bugs, PRs, and "this didn't work for me" issues all very welcome. 🍺☕ If you do try a fresh end-to-end deploy, please get in touch — I'll buy you a beer or a coffee. The best place to ask questions, get help, or show off a build is the [Dotty community Discord](https://discord.gg/SVnkfkH4Gh).
> ⚠️ **Heads up: this is not a stable project yet.** Dotty is buggy, frequently broken, and actively changing day-to-day. End-to-end behaviour works on the maintainer's hardware but regressions land all the time, the API and config surface shifts without notice, and a fresh deploy on someone else's gear has not been verified. Treat this as a hobby-grade work-in-progress, not a polished product. Bugs, PRs, and "this didn't work for me" issues all very welcome. 🍺☕ If you do try a fresh end-to-end deploy, please get in touch — I'll buy you a beer or a coffee.
>
> **Known rough edges:** face emoji rendering is missing visual differentiation for 4 of 9 emotions (sad / surprise / love / laughing); sound-direction localizer has a hardware-AEC-related left-bias on M5Stack CoreS3 (energy detection works, direction is unreliable); kid-voice ASR accuracy on SenseVoice has a kid-speech gap that whisper.cpp will close in a follow-up.

Expand Down Expand Up @@ -90,6 +90,10 @@ Then:
- [`docs/quickstart.md`](./docs/quickstart.md) — 15-minute happy path: flash, configure, first turn. Includes placeholder substitution table, deployment layout, endpoints, reboot survival, and common ops snippets.
- [`docs/troubleshooting.md`](./docs/troubleshooting.md) — symptom-first lookup for common (and obscure) failure modes.

## Support

Questions, bugs, or "this didn't work for me" → [open a GitHub issue](https://github.com/BrettKinny/dotty-stackchan/issues). That's the best way to reach me. Occasional updates also go up on [r/stackchan](https://www.reddit.com/r/stackchan/).

## Deeper reference

For what the stack *is* underneath — hardware specs, protocol docs, model facts, and features we aren't using — see [`docs/`](./docs/README.md):
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ v0.1 is the first tagged release — early-feedback alpha. Everything in this li
- **Single-host deployment** -- all four server services (xiaozhi-server, dotty-pi, dotty-behaviour, bridge.py) run as Docker containers on one machine
- **`make setup` wizard** -- interactive first-run: name your robot, fetch models, validate config
- **MkDocs Material docs site** -- architecture, protocols, quickstart, troubleshooting, FAQ
- **Kid Mode channel routing** -- voice channels are kid-safe by default; the kid-mode sandwich (English-pin, emoji prefix, topic blocklist, jailbreak resistance) only applies when the inbound `channel` is in `VOICE_CHANNELS`, so messaging-platform channels (Discord, Telegram, etc.) skip it automatically
- **Kid Mode channel routing** -- voice channels are kid-safe by default; the kid-mode sandwich (English-pin, emoji prefix, topic blocklist, jailbreak resistance) only applies when the inbound `channel` is in `VOICE_CHANNELS`, so messaging-platform channels (Telegram, etc.) skip it automatically
- **`/xiaozhi/admin/*` endpoints** -- live-session control surface on xiaozhi-server: `set-state`, `set-toggle`, `set-face-identified`, `set-head-angles`, `inject-text`, `abort`, `take-photo`, `play-asset`, `songs`, `say`, `devices`. See [`architecture.md`](https://brettkinny.github.io/dotty-stackchan/latest/architecture/#admin-surface-two-services-two-prefixes)
- **Smart-mode** -- smart-mode flips ambient/behaviour only. The inner-loop **model-swap is v2 scope and not wired** on the live `PiVoiceLLM` path. (The instant in-process model-swap once provided by the now-removed `Tier1Slim` provider — added in `b73f583`, removed in the 2026-05-29 alignment pass — is gone.)
- **llama-swap voice/coding matrix** -- `qwen3.5:4b` (voice inner loop) + `qwen3.6:27b-think` (think_hard target) co-resident under the `voice` matrix set; `qwen3.6:27b` for `pi` CLI runs alone under `coding`. See [`cookbook/llama-swap-concurrent-models.md`](https://brettkinny.github.io/dotty-stackchan/latest/cookbook/llama-swap-concurrent-models/)
Expand Down
9 changes: 0 additions & 9 deletions community/discord/.env.example

This file was deleted.

2 changes: 0 additions & 2 deletions community/discord/.gitignore

This file was deleted.

95 changes: 0 additions & 95 deletions community/discord/README.md

This file was deleted.

Loading
Loading