Skip to content

Releases: drowzeys/keys-ghost-machine-audio-visual-agent

v0.3.0: TensorFold 1.1.5

Choose a tag to compare

@drowzeys drowzeys released this 26 Oct 00:12

Boo moves to TensorFold 1.1.5. Bolt on a DGX Spark now runs on the stock TensorFold 1.1.5 release. The keys builds move to 1.1.5 as well: Bolt and Cosmos3-Edge on the Mac (one tensorfold-native with libbolt.dylib), and Cosmos3-Edge on CUDA.

To update, run the install command again, then kgm restart. In Docker, run docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.3.0.

  • Same answers, same speed. Measured on an M5 Ultra against the 1.1.4 builds with the same flags:
    • Bolt's greedy replies are identical (7 of 7). Its first token is 77–81 ms on 1.1.5 and 79–80 ms on 1.1.4, at about 96 tokens a second on both.
    • Cosmos3-Edge's camera answers are identical (7 of 7), with a 78 ms first token on both.
  • The Mac's Drama 3 stays on the 1.1.4-keys.1 engine. The Mac archive ships it as bin/tensorfold-drama.
    • Stock 1.1.5 can read the NVFP4 pruned checkpoint on Metal and reuse a voice's reference prefill. Its first audio in a named voice, however, was 107–343 ms, against a steady 67–79 ms for the keys engine.
    • The DGX Spark's Drama 3 is unchanged: plotarmordev's NVFP4 fork with the voice-prefix cache and the silence guard.
  • The v0.2.2 fixes stay. The DGX Spark no longer speaks a Drama 3 keep-warm line, and the TensorFold engines in the Docker image keep cuBLASLt 13.1.

Mac voice to voice (16 synthetic questions): Full 0.45–0.71 s, Lite 0.53–0.57 s.

Assets: keys-boo-tensorfold-1.1.5-macos-arm64.tar.gz and keys-boo-tensorfold-1.1.5-linux-aarch64.tar.gz, each with its .sha256. These are unofficial community builds of TensorFold (Apache-2.0); each archive has its own README, change list, licences and SHA256SUMS.

v0.2.2 (superseded by v0.3.0): DGX Spark Full voice ~0.5 s voice to voice

Choose a tag to compare

@drowzeys drowzeys released this 25 Oct 22:49

Superseded by v0.3.0.

A speed fix for v0.2.1: the DGX Spark's Full voice (Drama 3) answers in about 0.47–0.55 s voice to voice instead of 1.0–1.1 s. Update by running the install command again (it pulls the new code and keeps your models), then kgm restart; in Docker, pull 0.2.2.

Fixes

  • No Drama 3 keep-warm line on the DGX Spark. While you spoke, Boo kept Drama 3 busy with a throwaway "Mm.". The Spark's CUDA Drama 3 runs one synthesis at a time, so when you stopped, the reply's first sentence waited (503, retried) until that line ended, and the extra speech also slowed speech recognition and Bolt. On CUDA Drama 3 starts fast from idle anyway (~115 ms first audio), so the Spark profile now sets "keep_warm": false on the voice. Bolt is still kept warm; the Mac is unchanged. Applies to native installs and Docker.
  • Docker: Drama 3 is back on its fast kernel. The base image's cuBLASLt 13.6 made the Spark Drama 3 build turn its one-row tower kernel off. The TensorFold engines in the image now get the cuBLASLt 13.1 they are qualified with; PyTorch keeps the image's own.

Measured on one DGX Spark in Docker, 7 synthetic questions, two passes each, 0.5 s and 8 s between turns:

v0.2.1 v0.2.2
Voice to voice, median 1.01–1.13 s 0.47–0.55 s
Speech recognition 53–61 ms 28–30 ms
Bolt first token (from end of speech) 182–189 ms 92–96 ms
First audio (from end of speech) 880–1001 ms 308–422 ms

Install

curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash                    # Drama 3
curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite  # Kokoro-82M
docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.2

Image: ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.2 (also latest), digest sha256:db11ca335e08f033a669900316563bde8bd6c80843db52d53c50e51262e0adc0.

Builds

The two engine archives are the v0.2.0 files, unchanged (same SHA-256), re-attached here so the installer finds them:

  • keys-boo-tensorfold-1.1.4-macos-arm64.tar.gz: 409b8572896316c66ff9e91d778aeab9ba8c85191fed629441698160a7874b8d
  • keys-boo-tensorfold-1.1.4-linux-aarch64.tar.gz: 0b95dd1d83ca2c4df3f557e7495ef1e1ac8a039e2b82ed6129b22670b670a545

Their contents, licences and sources are described in the v0.2.0 release and the README.

v0.2.1 (superseded by v0.2.2): fresh DGX Spark installs connect again; no "(Boo says)"

Choose a tag to compare

@drowzeys drowzeys released this 25 Oct 20:20

Superseded by v0.2.2: the DGX Spark Full voice answers in ~0.5 s instead of 1.0-1.1 s. Use v0.2.2 and image 0.2.2.

A fix release for v0.2.0. Update by running the install command again (it pulls the new code and keeps your models), then kgm restart; in Docker, pull 0.2.1.

Fixes

  • Fresh DGX Spark installs could not connect. After Parakeet warmed up, NeMo's CUDA-graph decoder wrote a NUL into Python's shared b" " object (an empty NVRTC log read into b" " * 1). That broke uvicorn's status lines and websockets' parser, so the page never connected, and left damaged .pyc files. Boo now gives NVRTC its own buffer. (The v0.2.0 Docker image was not affected.)
  • "(Boo says)" at the start of a reply. After a Full/Lite or voice switch, the sample line went into the conversation as "(Boo says) Hi, this is how I sound now.", and Bolt could copy the label, or the whole line, into its next replies. The sample is no longer kept, Boo's own short lines are kept without a label, and a leading stage direction such as "(Boo says)" is dropped before a reply is spoken or stored.
  • Docs: the Mac's Drama 3 first audio in the speed table is ~60 ms on TensorFold 1.1.4 with the engine warm, as in a conversation. It said 122 ms, which is the figure after the engine has sat idle.

Install

curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash                    # Drama 3
curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite  # Kokoro-82M
docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.1

Builds

The two engine archives are the v0.2.0 files, unchanged (same SHA-256), re-attached here so the installer finds them:

  • keys-boo-tensorfold-1.1.4-macos-arm64.tar.gz: 409b8572896316c66ff9e91d778aeab9ba8c85191fed629441698160a7874b8d
  • keys-boo-tensorfold-1.1.4-linux-aarch64.tar.gz: 0b95dd1d83ca2c4df3f557e7495ef1e1ac8a039e2b82ed6129b22670b670a545

Their contents, licences and sources are described in the v0.2.0 release and the README.

Keys Ghost Machine v0.2.0 — Kokoro Lite voice + fixes, powered by TensorFold 1.1.4

Choose a tag to compare

@drowzeys drowzeys released this 25 Oct 19:15

Superseded by v0.2.1 (fixes fresh DGX Spark installs).

Keys Ghost Machine v0.2.0: Kokoro Lite voice and stability fixes, powered by TensorFold 1.1.4

Kokoro Lite, a second voice for smaller machines. Kokoro-82M
(hexgrad, Apache-2.0) can now speak for Boo instead of Drama 3, or beside it with a switch in the page. It is for
memory-constrained hardware: a DGX Spark that shares its memory with other work, or a Mac at the low end of the
requirements. Everything else (Bolt, Cosmos3-Edge, Parakeet, Eyes of Kai, Hermes) stays the same.

  • Install Lite, DGX Spark (about 48 GB free memory):
    curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite
  • Install Lite, Mac (Apple silicon, macOS 26+; 96 GB comfortable, 64 GB tight): the same command,
    curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite
  • Docker, Lite (DGX Spark, no Drama 3 mount needed):
    docker run --gpus all --rm -p 8095:8095 -e VOICE_ENGINE=lite -e KAI=1 \
      -v ~/keys-ghost-machine/models/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB:/models/bolt \
      -v ~/keys-ghost-machine/models/cosmos3-tf:/models/cosmos3 -v ~/models/hf-cache:/models/hf-cache \
      ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0
  • Both, with a Full/Lite toggle: install with --voice both (or -e VOICE_ENGINE=both in Docker, with the
    Drama 3 mount) and the page shows a Full / Lite switch per conversation; the voice list follows the engine.
    On an existing install, kgm voice full|lite|both switches. Pick a Kokoro voice in the page's Voice list
    (bf_emma by default, af_heart is Kokoro's best rated) or set KOKORO_VOICE=af_heart in Docker.
  • Trade-off: on a DGX Spark Lite answers in about 0.33–0.40 s voice to voice (Full 0.55–0.77 s) and uses about
    40 GB less memory. On a Mac it is about as fast as Full and saves about 9 GB. Lite speaks English only in Boo and
    has no voice cloning, emotion control or the 14 Drama 3 voices.

Kokoro Lite vs Drama 3 (4-bit)

Kokoro Lite Drama 3 4-bit (NVFP4)
Model 82M parameters, ~330 MB Billions of parameters, 4-bit NVFP4
Voice-engine memory: DGX Spark ~3.5 GB ~42 GB
Voice-engine memory: Mac ~0.8 GB ~10 GB
Voice starts: Spark 33–40 ms 112–121 ms
Voice starts: Mac 51–54 ms ~60 ms
Voice to voice: Spark 0.33–0.40 s 0.55–0.77 s
Voice to voice: Mac 0.49–0.64 s 0.43–0.61 s
Naturalness (UTMOS) 4.35 (bf_emma) – 4.52 (af_heart) 4.53 (Vesper)
Voices 54 built in 14 custom, incl. Vesper
Voice cloning No Yes
Emotion/style control No Yes
Long-line stalls None Occasional; fixed by the silence guard + resume in v0.2.0
Streaming Whole sentence (<0.13 s) Streams within a sentence
Languages EN, ES, FR, IT, PT, HI, JA, ZH Wider, incl. German
Licence Apache-2.0 Fish Audio Community License (hosted commercial use needs a Fish licence)

Spark: Lite is twice as fast and frees ~40 GB. Mac: same speed, so run both and keep Vesper with a Lite toggle.
Choose Drama for a signature voice, cloning, emotion or German; choose Kokoro for small or shared hardware, an Apache
licence or the lowest delay.

Fixes

  • Drama 3 long-line stalls: a long reply that went quiet after its first sentence (on about 1 in 5 paragraph-length
    lines) is now caught. The DGX Spark's Drama 3 build gains TensorFold 1.1.4's silence guard (new in the v0.2.0
    Linux archive and the Docker image), the Mac build already had it, and Boo itself drops a stalled take's quiet tail
    and asks for the unspoken rest.
  • Never deaf after a fast short reply: a quick reply such as "I'm on it." could leave Boo marked as still
    speaking, and the session stopped listening. Fixed (64 of 64 turns heard in testing).
  • Drama 3 "speech output capacity is full" (503): the keep-warm loop no longer outlives its page or a stopped
    microphone (it stops on disconnect, after 2 s without audio and after 60 s), warms with one "Mm." at a time and never
    while anything is being said; a refused line is asked again for up to retry_s (6 s) instead of being lost; a
    stopped turn frees its speech slot at once.
  • DGX Spark installs: the page could not connect after Parakeet warmed up. NeMo's CUDA-graph decoder wrote a NUL
    into Python's shared b" " object (an empty NVRTC log read into b" " * 1), which broke uvicorn's status lines and
    websockets' parser and left damaged .pyc files. Boo now gives NVRTC its own buffer (the Docker image was not
    affected).
  • Bolt repetition loops: a reply that starts repeating a sentence it already said ends there, unsaid.
  • Interrupted replies stopped before their first word no longer leave "(interrupted)" in the history for the
    brain to copy.
  • The reference Mac now runs voice_engine: both, with the Full/Lite toggle tested live.

Assets

File Platform Contents
keys-boo-tensorfold-1.1.4-macos-arm64.tar.gz Apple silicon, macOS 26+ Unchanged from v0.1.0: one tensorfold-native for Bolt (with libbolt.dylib), Drama 3 NVFP4 with named voices, the voice-prefix cache and 1.1.4's silence guard, and Cosmos3-Edge on Metal
keys-boo-tensorfold-1.1.4-linux-aarch64.tar.gz DGX Spark (GB10), CUDA 13 Updated: tensorfold-drama3-nvfp4 now has TensorFold 1.1.4's silence guard flags (drowzeys/TensorFold drama3-cuda-voices-guard, 240ab0fb; good takes byte-identical, first audio unchanged); tensorfold-cosmos3 unchanged. Bolt uses the stock TensorFold 1.1.4 release

Each archive has README.md, CHANGES.md, LICENSE, NOTICE, THIRD_PARTY_NOTICES.md, LICENSES/ and SHA256SUMS; check it against its .sha256 file. These are unofficial community builds of TensorFold (Ash Hart, Apache-2.0), not official releases. Model weights are not included. The one-shot installer now fetches v0.2.0 and, on a re-run, replaces a v0.1.0 build.

Docker (DGX Spark)

docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0
docker run --gpus all --rm -p 8095:8095 \
  -v ~/models/bolt:/models/bolt -v ~/models/drama:/models/drama -v ~/models/cosmos3:/models/cosmos3 \
  -v ~/models/hf-cache:/models/hf-cache -e KAI=1 \
  ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0

-e VOICE_ENGINE=lite (no Drama mount) or -e VOICE_ENGINE=both (Full/Lite switch); KOKORO_VOICE picks the Kokoro voice. :latest now points at 0.2.0. See docker/README.md.

Upgrading

  • One-shot install: run the installer again (it takes the code from main, which also has the DGX Spark connection fix made right after tagging; add --voice lite or --voice both to change the voice); it updates the code and the DGX Spark build, and keeps your models.
  • Docker: docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0.

Verified

  • Docker 0.2.0 on a DGX Spark in all three modes: full (Drama 3 with the silence guard on, Vesper first audio ≈ 135 ms), lite (Kokoro-82M, a sentence in ≈ 45 ms), both (a spoken turn in each engine, switched over the page's Full/Lite message); /health reports the engines.
  • The DGX Spark Drama 3 build with the guard: byte-identical audio to v0.1.0's on a 15-line stall set when no take stalls, same first audio.

Credits

Kokoro-82M, kokoro and misaki by hexgrad (Apache-2.0); mlx-audio by Prince Canuma (MIT); spaCy and en_core_web_sm by Explosion (MIT); espeak-ng (GPL-3.0); StyleTTS 2 (Yinghao Aaron Li et al., MIT); TensorFold (Ash Hart, Apache-2.0); the NVFP4 Drama 3 engine and checkpoint by plotarmordev; Nemotron 3.5 Bolt, Cosmos3-Edge and Parakeet v3 by NVIDIA; Drama 3 by Fish Audio (Fish Audio's licence applies to Drama 3 and its outputs); Eyes of Kai by tonyd2wild; Hermes by Nous Research. Full list in CREDITS.md.

Questions and bug reports: GitHub Issues.

Keys Ghost Machine v0.1.0 — powered by TensorFold 1.1.4

Choose a tag to compare

@drowzeys drowzeys released this 25 Oct 01:12

Superseded by v0.2.0 — please use v0.2.0 (fixes Drama 3 long-line stalls with the silence guard on the DGX Spark and stall resume, the deafness after fast short replies, Drama 3 503 "speech output capacity is full" errors, Bolt repetition loops and interrupted replies in the history; adds the Kokoro-82M Lite voice). Docker: ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0.

Keys Ghost Machine v0.1.0: a hands-free audio/visual agent, powered by TensorFold

Meet Boo: talk to it from your phone, show it things through your camera, and let it hand real work to a tool-using agent, with no keyboard and no terminal. It runs entirely on your own hardware, on a DGX Spark or an Apple silicon Mac, and you reach it from anywhere on your private Tailscale network.

▶ 46-second demo: https://github.com/drowzeys/keys-ghost-machine-audio-visual-agent/blob/main/docs/media/promo-45s.mp4

What it does

  • Speech in, speech out: Parakeet v3 hears you, Nemotron 3.5 Bolt answers, Drama 3 speaks, starting about half a second after you stop talking on a Mac.
  • Sees through your camera: Cosmos3-Edge describes what's in front of you, reads text, and tells your left from your right on a selfie camera; the hand tracker counts fingers exactly.
  • Live facts in seconds: questions about the president, the weather or the news are looked up on the web in the same turn.
  • Real work in the background: "ask Hermes…" hands a task to a tool-using agent, which asks you out loud before running anything that changes your machine.
  • Remembers: camera captions every 1 s to 15 min while the camera is on, kept 1 day to 1 week.
  • Yours to shape: name it, pick one of 14 voices (Vesper is the default), and turn on the Futuristic effect.

Measured (TensorFold 1.1.4)

Apple silicon Mac DGX Spark
Voice to voice 0.47–0.60 s 0.55–0.77 s
Camera answer (first token) 79 ms 103 ms
Voice starts (Vesper) 122 ms 121 ms

Requirements

  • Mac: Apple silicon with 96 GB unified memory minimum (128 GB+ recommended).
  • DGX Spark: one Spark (128 GB), about 64 GB free.
  • Disk: about 50 GB for the models.

Get it

Built on the work of many people: NVIDIA (Bolt, Cosmos3-Edge, Parakeet), Fish Audio (Drama 3) and plotarmordev's NVFP4 build, Ash Hart (TensorFold), tonyd2wild (Eyes of Kai), Nous Research (Hermes), the qwen-audio-agent design, Silero, MediaPipe, Three.js and more. The full list is in the Credits section of the README. These are unofficial community builds of TensorFold, not official releases.

Questions and bug reports: GitHub Issues.


Build details

Prebuilt TensorFold builds and a Docker image for Boo, built on TensorFold 1.1.4.

These are unofficial community builds of TensorFold by drowzeys (Apache-2.0), not official TensorFold releases. Model weights are not included.

Assets

File Platform Contents
keys-boo-tensorfold-1.1.4-macos-arm64.tar.gz Apple silicon, macOS 26+ One tensorfold-native that serves Nemotron 3.5 Bolt (with libbolt.dylib), Drama 3 NVFP4 with named voices and the voice-prefix cache, and Cosmos3-Edge on Metal
keys-boo-tensorfold-1.1.4-linux-aarch64.tar.gz DGX Spark (GB10), CUDA 13 tensorfold-cosmos3 (Cosmos3-Edge on CUDA, 1.1.4) and tensorfold-drama3-nvfp4 (plotarmordev's NVFP4 Drama engine + voice-prefix cache). Bolt uses the stock TensorFold 1.1.4 release

Each archive has README.md (requirements and run commands), CHANGES.md (every commit on top of upstream), LICENSE, NOTICE, THIRD_PARTY_NOTICES.md, LICENSES/ and SHA256SUMS. Check the archive against its .sha256 file.

Docker (DGX Spark)

docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.1.0
docker run --gpus all --rm -p 8095:8095 \
  -v ~/models/bolt:/models/bolt -v ~/models/drama:/models/drama -v ~/models/cosmos3:/models/cosmos3 \
  -v ~/models/hf-cache:/models/hf-cache -e KAI=1 \
  ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.1.0

See docker/README.md.

Source

https://github.com/drowzeys/TensorFold branches bolt-metal-114, drama3-metal-voices-114, cosmos3-metal-114, cosmos3-cuda-114, drama3-cuda-voices.

Verified

  • macOS (M5 Ultra): Bolt answers greedy chat identically to the source build; Drama 3 audio is byte-identical to the live build; Cosmos3-Edge serves text and images.
  • DGX Spark: Drama 3 audio is byte-identical to the live Spark build; Cosmos3-Edge gives the same answers as the live server and matches the transformers reference (cosine 0.9998).

Credits

TensorFold (Ash Hart, Apache-2.0); the NVFP4 Drama 3 engine and checkpoint by plotarmordev; Nemotron 3.5 Bolt, Cosmos3-Edge and Parakeet v3 by NVIDIA; Drama 3 by Fish Audio (Fish Audio's licence applies to Drama 3 and its outputs); Eyes of Kai by tonyd2wild. Full list in CREDITS.md.