Pretype — Dein Mac schreibt deine Sätze zu Ende

pre·type /ˈpriː.taɪp/ · Subst.
Text, der existiert, bevor du ihn tippst.
52 ms · lokal
Das beste Interface ist unsichtbar — es lebt an deinem Cursor.
TabWort ⇧TabSatz Escverwerfen getippt 0 Zeichen · hochgeladen 0 Bytes
was das ist

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.

Tinte = du Blau = der Cursor, wo sie sich treffen Grau = das Modell
und der ganze rest

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.

überall

Tab funktioniert hier. Und in jedem anderen Textfeld deines Macs — kein Plugin pro App.

Mail
Messages
Slack
Notes
Safari
VS Code
Telegram
Obsidian
Claude
Xcode
Linear
jedes Feld
Es hängt sich ans Textfeld selbst — native Apps, Electron, Web-Views. Bewusst still in Terminals, Passwort-Managern und bei sicherer Eingabe.
so funktioniert’s

Immer noch deine Worte. Nur schon getippt.

1

Installieren

Zieh es in „Programme“. Kein Konto, kein Assistent — ein Menüleisten-Icon, eine Bedienungshilfen-Abfrage und ein Modell, einmal geladen (≈2 GB).

Programme
2

Tippen

Schreib wie immer. Ghost-Text erscheint am Cursor, angepasst an die Schrift des Feldes. Falsch geraten? Einfach weitertippen.

Mail
An: legal@ — Re: Q3-Zahlen
Danke für die schnelle Rückmeldung — die Zahlen stimmen, geht heute an Legal.
3

Tab

Tab nimmt ein Wort, ⇧Tab den Satz. Was der nächste Tab nimmt, ist eine Stufe dunkler. Ohne Vorschlag ist Tab einfach Tab.

Slack — #eng
Nachricht an #eng
kann jemand #4821 reviewen? ist klein — zwei Dateien, fast nur Tests.
Modelle

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.

Erstes-Wort-Genauigkeit, % aller Fälle Abdeckung Latenz, p50
1 Gemma 4 E4B 8-bit 8.6 GB 23% 82% 145 ms
2 Gemma 4 E2B 8-bit 5.7 GB Standard · 24 GB 22% 82% 75 ms
3 Gemma 4 E4B 6-bit 6.8 GB Standard · 32 GB + 22% 81% 129 ms
4 Gemma 4 E2B 4-bit 3.5 GB Standard · 16–18 GB 20% 81% 127 ms
5 Qwen3.5 2B 1.6 GB Standard · 8 GB 15% 74% 93 ms
6 MiniCPM5 1B 2.2 GB 13% 72% 49 ms
7 Qwen2.5 0.5B 1.0 GB 12% 74% 79 ms
8 Ternary Bonsai 4B 1.1 GB 12% 72% 102 ms
9 LFM2.5 1.2B 2.2 GB 11% 67% 59 ms
10 Gemma 4 E4B 4-bit 5.0 GB 10% 72% 151 ms
11 Apple Intelligence 0 GB 9% 75% 430 ms

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

Exakt wiederhergestellt, % von 510 Zeilen vorgeschlagen Latenz, p50
1 Gemma E4B-it 4-bit 5.0 GB · für Gemma E4B tiers · E2B 8-bit 65% 89% 1523 ms
2 Gemma E2B-it 4-bit 3.5 GB · für Gemma E2B 4-bit 50% 90% 378 ms
3 Qwen3.5 2B 1.6 GB · korrigiert mit sich selbst 32% 74% 255 ms
4 Ternary Bonsai 4B 1.1 GB · korrigiert mit sich selbst 21% 43% 324 ms
5 Qwen2.5 0.5B-it 0.4 GB · für Qwen2.5 0.5B 11% 41% 185 ms
6 MiniCPM5 1B-it 2.2 GB · für MiniCPM5 1B 4% 28% 668 ms

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

Brauchbarer Entwurf, % von 570 Gesprächen geantwortet Latenz, p50
1 MiniCPM5 1B-it 2.2 GB · für MiniCPM5 1B 56% 94% 1801 ms
2 Qwen3.5 2B 1.6 GB · korrigiert mit sich selbst 46% 100% 448 ms
3 Qwen2.5 0.5B-it 0.4 GB · für Qwen2.5 0.5B 38% 94% 345 ms
4 Gemma E4B-it 4-bit 5.0 GB · für Gemma E4B tiers · E2B 8-bit 33% 100% 532 ms
5 Gemma E2B-it 4-bit 3.5 GB · für Gemma E2B 4-bit 32% 100% 356 ms
6 Ternary Bonsai 4B 1.1 GB · korrigiert mit sich selbst 21% 91% 324 ms

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

die App

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.

Pretype-Einstellungen, Bereich Allgemein: Darstellungsmodi, Hotkey, Ghost-Sichtbarkeitsregler und App-Ausnahmen.
die Ideologie

Deine Worte gehören dir.

der Cloud-Weg
du tippst » deren Server » deren Modell » deren Logs
ein Abo, ein Konto, ein API-Key
eine Datenschutzerklärung, die du überfliegst und hoffst
Autocomplete, das im Flugzeug aufhört zu funktionieren
der Pretype-Weg
du tippst » dein Chip » Ghost-Text
0 € — kostenlos, MIT-lizenziert, ohne Konto
eine Datenschutzerklärung, die du kompilieren kannst
funktioniert im Flugmodus, für immer
alles, was pretype je über die Leitung schickt
dein Text, deine Tastenanschläge
» nirgendwohin
0 Bytes, immer — per Architektur
Modellgewichte ≈1,6–2,2 GB
« Hugging Face
einmal, beim ersten Start
Versions-Check, ohne Payload
» GitHub Releases
täglich · abschaltbar in den Einstellungen
ehrlich per Default — es braucht die Bedienungshilfen-Berechtigung, dieselbe, die ein Keylogger verlangen würde. Genau deshalb ist der Eingabepfad offen — und kurz genug für eine Kaffeepause:
der Code

Nimm Privatsphäre nicht auf Treu und Glauben — der gesamte Eingabepfad sind drei Dateien. Lies sie, bevor du ihnen vertraust.

AXText.swift 570 Zeilen · liest das Feld
/// 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
}
KeyTap.swift 83 Zeilen · fängt Tab ab
/// 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,
      ...)
  }
}
TextInjector.swift 63 Zeilen · tippt zurück
/// 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)
    }
  }
}
Abb. 1 — wörtlich aus dem Repo. 716 Zeilen zwischen deinen Tasten und dem Ghost-Text. kostenlos · MIT · ohne Konto github.com/nikiomori/Pretype

Eine Taste zwischen dir und dem Ende des Satzes.

macOS · Apple Silicon≈1,6–2,2 GB Modell, einmal geladenkostenlos · MIT · ohne Konto