Purge for Mac: Free, Open-Source Mac Cleaner
Free open-source Mac cleaner for caches, Xcode junk, and app leftovers. Trash-first, no telemetry. Install with Homebrew or download for macOS 13+.
My private voice OS
Translation pending
OtherPython · TypeScriptGitHub @timothylokOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A private, Cantonese-capable voice OS: speak Cantonese into an iPhone, and a home Windows PC transcribes it, routes it through a command allowlist, and speaks the answer back — weather, buses, tides, fuel, bins, news, a morning briefing, and free-form chat, all without sending a word to a cloud AI service.
The name comes from the Cantonese idiom 雞同鴨講 ("a chicken talking to a duck") — two parties talking past each other. Fitting for the years voice assistants spent not understanding Cantonese.
Mainstream voice assistants treat Cantonese as an afterthought — they either don't support it, force Mandarin, or mangle the 口語 (spoken register) that real Cantonese speakers actually use. And the ones that do listen send everything to someone else's cloud.
We wanted a voice assistant that speaks Hong Kong-style Cantonese back, knows about life in Auckland, New Zealand (not a generic "your local weather"), and keeps the speech, the transcripts, and the AI entirely on hardware we own.
Say something in Cantonese to an iOS Shortcut and it speaks the answer back:
Anything that isn't a command falls through to a local LLM that replies in genuine Hong Kong 口語 — and by design its output can never trigger a command.
The same commands also work from a keyboard: @mention the bot in Slack and the answer comes back in the channel — same allowlist, same security model, and every command is tagged with the channel it came from (voice / automation / Slack). A public, unauthenticated bilingual web chat (Cantonese/English, at /chat.html) offers the same safe read-only subset for anyone without Slack access — no chat fallback, no destructive or personal commands.
[iPhone mic] → HTTPS → [Vercel gateway] → [Cloudflare Tunnel] → [Win11 GPU ASR] → [Command router / local LLM] → spoken reply
gateway/api/voice.ts): timing-safe bearer auth, content-type validation, a 4 MB body cap, and per-instance rate limiting. It forwards audio to the tunnel with Cloudflare Access service-token headers.initial_prompt built from the command vocabulary biases decoding toward the exact allowlisted phrases. Started on stock medium; now a Cantonese+English fine-tune of small, chosen by benchmarking candidates on real captured phone recordings.asr/router.py). Adding a command is one dict entry; the recognition prompt rebuilds itself from it. NZ data commands shell out to vetted open-source NZ data connectors (Auckland Transport, LINZ tides, Gaspy fuel, Auckland Council bins, NZ news RSS).gemma3:4b, chosen after a bake-off for producing the most natural spoken Cantonese; it powers the chat fallback, live headline translation, and reminder extraction, warmed at service startup.gateway/api/slack.ts): @mention the bot and the signature-verified event forwards the text through the same authenticated gateway path, with the Cantonese reply posted back to the channel. Mentions only, and Slack's delivery retries are acked and ignored so a slow command never runs twice. A burst of mentions is throttled per channel (three commands a minute) with an immediate "too fast" reply — nothing ever fails silently.gateway/public/chat.html + gateway/api/webchat.ts): no shared secret, so it's locked down instead by scope — a fixed allowlist of 13 safe, read-only commands, no chat fallback, no destructive or personal-data commands, and its own per-IP rate limit.yue token only exists in large-v3, which doesn't fit in 4 GB of VRAM. Counter-intuitively, language=zh on medium transcribes spoken Cantonese well (it produces real 口語 like 講嘢) — accuracy came from the command-vocabulary prompt, not model size.ops/asr_bench.py) replays them against candidate models measuring the metric that actually matters — did it route to the right command? A community Cantonese+English fine-tune of Whisper small scored 100% command routing where stock medium managed 58%, with a third of the latency — and swapping it into production was a single env var, because the model was never hard-coded.PATH rather than add_dll_directory, and NSSM's stderr defaults to cp1252 — which turns Cantonese logs into escape soup and killed subprocesses with UnicodeEncodeError on macrons like Whangārei.