PiyotaHu
muxiva-dsh-voice
Local-first full-duplex voice for DeepSeek Harness, orchestrated by Muxiva
- Stars
- 1
- Language
- Python
- Created
- Aug 15, 2026
- Updated
- Aug 16, 2026
Introduction
Muxiva Voice for DeepSeek Harness
Local-first, full-duplex voice for the official DeepSeek Harness, orchestrated by Muxiva.
Your microphone, VAD, ASR, sentence scheduling, TTS, playback and interruption path stay on the Mac. DSH remains the stateful Agent harness and keeps its tools, sessions and Web transcript.
Alpha: the integration contract and source-checkout path are testable today. Muxiva 0.1.1 wheels are published for CPython 3.8–3.14, including macOS universal2; npm publication remains the final distribution gate.
What runs where
DSH Web microphone ──PCM16──▶ Muxiva Graph
├─ Silero VAD ──barge-in──┐
├─ Zipformer ──preview─────┤
└─ SenseVoice zh/en final─┼─▶ DSH Session / Agent / Tools
DSH assistant deltas ─────────▶ sentence buffer ─▶ speech formatter ─▶ speech normalizer ─▶ Qwen3-TTS / MLX ─▶ browser speaker
- Muxiva owns the real-time pipeline: typed Frames, bounded queues, backpressure, Signals, cancellation and observability.
- DSH owns the Agent: session history, model selection, tools, permissions and Web UI.
- The plugin owns only the bridge: additive DSH UI, a versioned loopback protocol and project Node Packs. Neither upstream repository is patched.
Quick start from source (Apple Silicon)
Prerequisites: macOS arm64, Node.js 22.19+, Python 3.11–3.13, Rust, Muxiva source at ../muxiva, the muxiva CLI, and an installed official DSH CLI.
git clone https://github.com/PiyotaHu/muxiva-dsh-voice.git
cd muxiva-dsh-voice
# Build the project Python environment and fetch revision- and SHA-256-pinned models.
npm run doctor -- --fix
npm run models
# Install this checkout as a DSH Bundle. No prepare script is executed.
dsh plugin --profile web add .
Start the two supervised processes. Headless mode is the normal low-overhead product path:
# Terminal A
npm start
# Terminal B
dsh --profile web
For local diagnosis, replace npm start with npm run observe. It opens the same
graph.json in Muxiva Studio while keeping the authenticated DSH loopback bridge supervised.
Select Run, then open ◎ Observe for live per-Node latency and throughput, per-Edge queue
age and rates, Node-owned buffers, traces and hotspot verdicts. npm run start:headless is the
explicit non-Studio form; npm start remains headless by default.
Both modes append bridge and Runtime output to .muxiva/runtime.log; use
tail -f .muxiva/runtime.log when diagnosing a headless session.
Open the printed DSH URL, create or open a session, then select the large voice orb above the composer. Its halo follows input energy and the visible status moves through listening, hearing, thinking and speaking. Once connected, the large orb toggles microphone mute without stopping the WebSocket, AudioWorklet or Graph. Muting admits no PCM, explicitly pauses the Muxiva audio Source, and resets VAD/ASR before resume; the small End control performs a full shutdown. VAD onset is only a candidate: playback and the active Agent turn are cancelled only after ASR produces non-empty text. Empty detections return to listening instead of leaving the UI waiting.
The conversational defaults wait for 2 seconds of continuous silence before emitting ASR Final, and use a stricter 0.70 VAD threshold plus a 350 ms minimum speech duration to suppress noise triggers. Qwen3-TTS uses Serena, its warm, gentle young Mandarin female voice, by default.
Published release UX
The public installation path is:
dsh plugin --profile web add @muxiva/dsh-voice
npx @muxiva/dsh-voice setup
npx @muxiva/dsh-voice start
The package is a native DSH Bundle (dsh.bundle) and a dual-face Web plugin (dsh.client). Discovery uses the GitHub dsh-plugin topic; DSH does not currently operate a centralized plugin marketplace.
Security posture
- The speech bridge binds only to loopback and accepts one active client.
- Model artifacts are pinned by immutable revision/URL; the Qwen3-TTS weights and tokenizer are SHA-256 verified.
- No API key, microphone recording or transcript is uploaded by this plugin.
- Browser echo cancellation, noise suppression and automatic gain control are requested.
- Queue capacities are finite; stale TTS and Agent output are fenced after barge-in.
- The DSH plugin adds UI through a documented slot and uses only
Session.prompt/Session.cancel; it never changes the agent loop.
See the security model, protocol, model licenses, and contribution guide.
Development
npm test
npm run pack:smoke
python3 -m compileall -q python .muxiva/nodes
# After setup/models: certifies Qwen3-TTS Chinese loopback and English ASR.
npm run test:e2e
The first certification target is a MacBook Pro with M1 Pro. Latency budgets and the acceptance matrix live in Performance.
License
Apache-2.0. Models remain under their own licenses and are downloaded at setup time; they are not redistributed in the npm package.