I’m Christoph, and eigenhand is where I build tools that run on infrastructure you control — native apps without middlemen, and AI models that live on your own GPU instead of someone else’s.
The first sound arrives after about 0.4 seconds, and from then on the voice is generated faster than it speaks — sentence by sentence, as text streams in from a chat model. Speed without the usual trade-off: on 130 held-out sentences, Whisper understands the cloned German as well as the real recordings. Built as a LoRA fine-tune of Breeze TTS 2 on 630 hours of speech, with a C++ engine for NVIDIA, AMD and Intel and an MLX runtime for Apple Silicon.
0.4 sto the first sound when streaming (M3 Pro)
2×faster than real time on an RTX 4070
4.2%word error rate (real recordings: 4.4%)
0:13Generated faster than you can listen to it — in a voice the model invented itself, at 1.25× speed. Synthetic speech from Articulatio-DE. Research and non-commercial use only.
WebSocket streaming for chat models — speaks while the text is still arriving
Clone a voice from 5–15 seconds of audio
Runs locally: GGUF on NVIDIA, AMD and Intel, MLX on Apple Silicon
$ articulatio-mlx articulatio-de-mlx --stream \
--text "Guten Morgen!" --ref-audio me.wav --ref-text "…"# M3 Pro: RTF 0.69, first sound after ~0.4 s
A native sync client for the Hetzner Storage Box or any SFTP server. It delivers what the big drives sell as a service, against storage you already rent for a few euros a terabyte.
Finder drive with Files-on-Demand
Version history, thinned over time — every version a plain file
Link sharing with its own web viewer
# the way out, whenever you want it$ rsync -a storagebox:spind/ ~/backup/
in developmentSwiftiOSbring your own modelApache-2.0
An inventory for the iPhone that brings nothing but the interface: your model reads a shelf, a drawer or a box and suggests entries. Nothing lands in the inventory without a tick — and “cannot be determined” is a valid answer.
Suggestions, not entries — every find reviewed
Part numbers and barcodes looked up, never swapped in silently
An AI chat for the iPhone — your model, your search, no middleman.
in developmentSwiftiOSbring your own modelApache-2.0
Speaks the Anthropic and OpenAI wire formats, so it works with almost any provider or your own server. The assistant searches on its own, reads pages and remembers — and if your search API is unusual, Faden writes itself a parser for it and then runs it on the device.
Streaming, tool calls and reasoning
Recipes for Brave, Tavily, Serper, SearXNG, Exa
No external dependencies
→ POST /v1/chat/completions# your endpoint← tools: web_search · fetch_page · remember
The usual clouds are excellent — right up until the subscription ends, the terms change, or the export button stops working. Everything here is built the other way round.
01
Your hardware is the platform
Files live on storage you rent or run yourself, models on your own GPU. The provider stores bytes; the relationship belongs to you.
02
Open protocols, no lock-in
SFTP, plain files, OpenAI- and Anthropic-compatible APIs, GGUF. Leaving takes rsync, not an export wizard.
03
Native, small, handmade
Swift and SwiftUI on Apple platforms, C++ and MLX for the models — real apps, not a browser tab pretending to be software.
04
Measured, not promised
Claims come with numbers and the scripts that produced them. Where something is weak, the README says so.
// toolbox
SwiftSwiftUIC++17ggmlVulkanMetalMLXPythonPyTorchPEFT / LoRAWhisperSFTPWebSocketGGUFHugging FaceSwiftSwiftUIC++17ggmlVulkanMetalMLXPythonPyTorchPEFT / LoRAWhisperSFTPWebSocketGGUFHugging Face
// contact
One developer, building in the open.
Questions, ideas, a bug, or a project that should exist — happy to hear it.