- Speaks responses aloud via local TTS (sherpa-onnx + Piper voices)
- Listens for push-to-talk dictation via local STT (sherpa-onnx)
- Reacts with a Pixi-rendered creature that responds to your AI's lifecycle
- Anchors itself wherever you drop it — drag the voice anchor around your screen
- Summarizes long responses with an embedded SmolLM2 model
- Integrates with Claude Code via lifecycle hooks (
UserPromptSubmit,Stop, etc.)
- Download the latest DMG
- Open the DMG → drag Tink into Applications
- Strip the quarantine flag (required for unsigned apps):
xattr -cr /Applications/Tink.app
- Launch Tink — it automatically opens System Settings → Privacy & Security → Accessibility
- Add Tink to the Accessibility list and toggle it on
- Voice + STT + summarizer models download automatically on first launch (~200 MB total)
Microphone permission: macOS will prompt the first time you press the push-to-talk key.
git clone https://github.com/jjwallace/tink
cd tink
./setup.sh # downloads voice models, installs deps
bun run tauri devNo special access needed — the creature logic ships as a prebuilt
static library in src-tauri/vendor/<target>/libcreature_core.a.
| Folder | What it is |
|---|---|
src/ |
SolidJS frontend — overlay UI, settings panel, dashboards |
src-tauri/ |
Rust backend — TTS, STT, summarizer, hooks integration |
voice-core/ |
Shared Rust crate — STT/TTS engines + EventSink |
src-tauri/vendor/ |
Prebuilt libcreature_core.a per target |
docs/ |
Architecture and design notes |
┌─────────────────────────────────────────────────┐
│ Tauri Window (transparent, fullscreen overlay) │
│ │
│ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ SolidJS UI │ │ Pixi + Canvas 2D layers │ │
│ │ - Settings │ │ - Creature │ │
│ │ - Speech UI │ │ - Sine waves │ │
│ │ - Voice Anchr│ │ - Particles, VFX │ │
│ └──────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ Rust Backend │ │
│ │ - TTS (sherpa-rs/VITS) │ │
│ │ - STT (sherpa-rs/Zipformer) │ │
│ │ - Summarizer (llama-cpp-2/SmolLM2) │ │
│ │ - Creature runtime (linked from .a) │ │
│ │ - macOS event tap (global hotkeys) │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
Tink integrates with Claude Code via shell hooks at ~/.claude/hooks/.
The narrator hook converts assistant responses → TTS; the start-sound
hook fires on prompt submit. See docs/ for the full hook map.
MIT for the source in this repo.
If you'd like to work on the creature itself — choreography, rendering, the Rust core — message jjwallace about joining the core team.
The libcreature_core.a static library committed in this repo
contains the proprietary choreography brain — state machine, blend
curves, the things that make Tink feel like Tink — and ships as
machine code only.


