Pretype — Dein Mac schreibt deine Sätze zu Ende
Text, der existiert, bevor du ihn tippst.
Dein Code-Editor beendet Zeilen für dich. Pretype tut das für alles, was du auf deinem Mac schreibst.
Du tippst die dunkle Hälfte — ein Modell auf deinem eigenen Chip tippt die graue.
Das beste Interface ist unsichtbar — es lebt an deinem Cursor.
Der Geistertext ist die ganze Idee, aber nicht die ganze App. Alles hier unten ist dasselbe lokale Modell am selben Cursor — auf Tasten, auf denen deine Finger ohnehin liegen.
- Tab
Korrigiert den Tippfehler
Das macOS-Wörterbuch, über dem Wort schwebend — in der Sprache, die es rund um den Cursor liest. Esc verwirft es, und beim selben Wort fragt es nie ein zweites Mal.
- Tab
Buchstabiert das Emoji
macOS kennt jeden Unicode-Namen bereits, also stehen Tausende Shortcodes in derselben Pille bereit — ohne dass eine Tabelle mitgeliefert wird.
- ⌥Tab
Schreibt Holpriges um
Grammatik und Formulierung an Ort und Stelle repariert, in deinem Ton — oder das gerade getippte Wort, wenn nichts ausgewählt ist. Immer erst als Vorschau, nie hinter deinem Rücken.
- ⌥⇧Tab
Schreibt die ganze Antwort
Vor einem leeren Chatfeld liest es das Gespräch auf dem Bildschirm und entwirft deine nächste Nachricht als einen Geistertext. Optional, OCR auf dem Gerät, nur auf diesen Akkord hin.
- von allein
Lernt deine Wörter
Deine Namen, dein Slang, der Satz, den du zehnmal am Tag tippst — aus einem Modell deines eigenen Schreibens, auf diesem Mac gebaut, das antwortet, bevor das LLM losläuft. Löschbar, und abschaltbar.
- von allein
Weiß, wann es still bleibt
Nie in Terminals oder Passwortmanagern, nie während macOS sichere Eingabe meldet. In einer App, in der du es ständig ignorierst, hört es auf vorzuschlagen — und sagt das im Menü, mit einem Klick zum Fortsetzen.
Tab funktioniert hier. Und in jedem anderen Textfeld deines Macs — kein Plugin pro App.
Immer noch deine Worte. Nur schon getippt.
Installieren
Zieh es in „Programme“. Kein Konto, kein Assistent — ein Menüleisten-Icon, eine Bedienungshilfen-Abfrage und ein Modell, einmal geladen (≈2 GB).
Tippen
Schreib wie immer. Ghost-Text erscheint am Cursor, angepasst an die Schrift des Feldes. Falsch geraten? Einfach weitertippen.
Tab
Tab nimmt ein Wort, ⇧Tab den Satz. Was der nächste Tab nimmt, ist eine Stufe dunkler. Ohne Vorschlag ist Tab einfach Tab.
Vervollständigung, Korrektur und Antwort werden je mit eigenem Eval gemessen — und der Default richtet sich nach dem Speicher deines Macs. Es kann dir einfach egal sein.
Der Geistertext, den Tab zu Ende schreibt. Elf Modelle auf denselben zurückgehaltenen Sätzen, sortierbar nach der Sprache, die du wirklich tippst.
Die Auswahl an Ort und Stelle repariert. Dieser Griff läuft nicht auf dem gewählten Modell, sondern auf dessen Instruct-Geschwister — deshalb stehen hier die sechs Geschwister, jedes mit den Einträgen, die darauf landen.
Eine ganze Nachricht, entworfen aus dem Gespräch auf dem Bildschirm. Dieselben sechs Geschwister wie bei der Korrektur — und fast die umgekehrte Rangfolge.
Punktgröße = residenter Speicher (hohl = in macOS eingebaut) · Abdeckung = Anteil beantworteter Fälle · ± = Sprache vs. 17-Sprachen-Mittel
Erstes-Wort-Genauigkeit, Schweigen zählt als Fehlschlag; gematchte Zellen (OpenSubtitles · Tatoeba · Leipzig) · Pro-Sprache-Zellen sind dünn (±5–10 pp) — vergleiche Modelle innerhalb einer Sprache, nicht Zahlen zwischen Sprachen · 07-2026
Whisker = 95%-Intervall · roter Strich = wie oft eine Zeile umgeschrieben wird, die bereits korrekt war (170 saubere Kontrollen) · vorgeschlagen = Anteil der Zeilen mit irgendeinem Vorschlag · Punktgröße = residenter Speicher
Ein echter Tippfehler pro Zeile, 17 Sprachen, durch die ausgelieferte Pipeline — das Minimal-Edit-Gate steckt bereits in den Zahlen. Eine richtige, aber anders formulierte Korrektur zählt als Fehlschlag, der echte Nutzen liegt also über dieser Latte. Pro-Sprache-Zellen haben 30 Zeilen — lies den Whisker, nicht die Zahl. Die Stufen E4B 8-bit und 6-bit laufen auf dem 6-bit-Geschwister, das der Sweep nicht abdeckte; die 4-bit-Zeile ist dessen gemessene Untergrenze. Apple Intelligence ist in diesem Sweep nicht dabei · 07-2026
Whisker = 95%-Intervall · geantwortet = Anteil der Fälle mit überhaupt einem Entwurf · Punktgröße = residenter Speicher · ± = Sprache vs. 19-Sprachen-Gesamtwert
Ein Entwurf gilt als brauchbar, wenn er in der Sprache des Gesprächs ist und den Bildschirm nicht nachplappert — eine Untergrenze für Brauchbarkeit, keine Qualitätsnote; die Referenzähnlichkeit war zu verrauscht. 19 Sprachen mit je 30 Gesprächen, die Sprachzellen sind also breit — lies den Whisker. Apple Intelligence ist in diesem Sweep nicht dabei · 07-2026
Jede Einstellung zeigt ihren gemessenen Preis.
Drei Bereiche — Darstellung, Modell, Personalisierung. Fahre über ein beliebiges Element und Pretype zeigt aus echten Messungen, was es verbessert und was es kostet.
Ghost-Text inline oder als Panel, Hotkey, Sichtbarkeit mit Live-Vorschau — und Aus-Schalter pro App.
Eine vermessene Karte des ganzen Katalogs: Genauigkeit nach oben, Tempo nach rechts, Blasengröße = Speicher. Ein Klick wechselt das Modell.
Eine Persona plus Stil-Prompts pro App steuern Ton und Formulierung. Alles bleibt auf deinem Mac.
Deine Worte gehören dir.
Nimm Privatsphäre nicht auf Treu und Glauben — der gesamte Eingabepfad sind drei Dateien. Lies sie, bevor du ihnen vertraust.
/// Fallback for apps whose focus
/// notifications never fire (some
/// Electron builds): ask the system-
/// wide element who has focus now.
static func
systemFocusedTextElement()
-> AXUIElement? {
let sys =
AXUIElementCreateSystemWide()
guard CopyAttributeValue(sys,
kAXFocusedUIElementAttribute,
&ref) == .success
else { return nil }
return isEditableTextElement(el)
? el : nil
} /// CGEvent tap on key-down events.
/// The handler returns `true` to
/// swallow the event — used to eat
/// Tab while a suggestion is shown.
final class KeyTap {
func start() {
let mask = CGEventMask(
1 << CGEventType
.keyDown.rawValue)
tapPort = CGEvent.tapCreate(
tap: .cgSessionEventTap,
place: .headInsertEventTap,
options: .defaultTap,
eventsOfInterest: mask,
...)
}
} /// Inserts text by posting synthetic
/// keyboard events — the most app-
/// agnostic path (AppKit, Electron,
/// web views, terminals alike).
enum TextInjector {
/// Tags our synthetic events so
/// the key tap ignores them.
static let magicTag: Int64 =
0x5052_5459 // "PRTY"
static func insert(_ t: String) {
for c in utf16Chunks(t.utf16) {
post(chunk: c, keyDown: true)
post(chunk: c, keyDown: false)
}
}
}