Pretype — Tu Mac termina tus frases

pre·type /ˈpriː.taɪp/ · s.
texto que existe antes de que lo escribas.
52 ms · local
La mejor interfaz es invisible — vive en tu cursor.
Tabpalabra ⇧Tabfrase Escdescartar escritos 0 caracteres · subidos 0 bytes
qué es esto

Tu editor de código termina líneas por ti. Pretype lo hace con todo lo que escribes en tu Mac.

Tú escribes la mitad oscura — un modelo en tu propio chip escribe la gris.

La mejor interfaz es invisible — vive en tu cursor.

tinta = tú azul = el cursor, donde se encuentran gris = el modelo
y todo lo demás

El texto fantasma es la idea entera, pero no la app entera. Todo lo de abajo es el mismo modelo local en el mismo cursor — en teclas donde ya tienes las manos.

  • Tab

    Corrige la errata

    El diccionario de macOS, flotando sobre la palabra — en el idioma que lee alrededor del cursor. Esc lo descarta, y nunca vuelve a preguntar por esa misma palabra.

  • Tab

    Deletrea el emoji

    macOS ya conoce todos los nombres Unicode, así que miles de atajos aparecen en esa misma píldora sin incluir ninguna tabla.

  • ⌥Tab

    Reescribe lo torpe

    Gramática y redacción arregladas ahí mismo, con tu propio tono — o la palabra que acabas de escribir, si no hay nada seleccionado. Siempre en vista previa, nunca a tus espaldas.

  • ⌥⇧Tab

    Escribe la respuesta entera

    Ante un chat vacío lee la conversación en pantalla y redacta tu siguiente mensaje como un solo fantasma. Opcional, con OCR en el propio Mac y solo con este acorde.

  • por su cuenta

    Aprende tus palabras

    Tus nombres, tu jerga, la frase que escribes diez veces al día — desde un modelo de tu propia escritura, construido en este Mac, que responde antes de que arranque el LLM. Se borra, y se apaga.

  • por su cuenta

    Sabe cuándo callarse

    Nunca en terminales ni gestores de contraseñas, nunca mientras macOS informa de entrada segura. En una app donde lo ignoras siempre, deja de ofrecer — y lo dice en el menú, con un clic para reanudar.

en todas partes

Tab funciona aquí. Y en cualquier otro campo de texto de tu Mac — sin un plugin por app.

Mail
Messages
Slack
Notes
Safari
VS Code
Telegram
Obsidian
Claude
Xcode
Linear
cada campo
Se engancha al propio campo de texto — apps nativas, Electron, web views. Deliberadamente mudo en terminales, gestores de contraseñas y durante la entrada segura.
cómo funciona

Siguen siendo tus palabras. Solo que ya escritas.

1

Instala

Arrástralo a Aplicaciones. Sin cuenta, sin asistente — un icono en la barra de menús, un aviso de Accesibilidad y un modelo descargado una vez (≈2 GB).

Aplicaciones
2

Escribe

Escribe como siempre. El texto fantasma aparece en el cursor, con la tipografía del propio campo. ¿Falló? Sigue escribiendo.

Mail
Para: legal@ — Re: cifras del Q3
Gracias por la rapidez — las cifras cuadran, hoy lo envío a legal.
3

Tab

Tab toma una palabra, ⇧Tab la frase. Lo que tomará el próximo Tab se ve un tono más oscuro. Si no hay sugerencia, Tab es solo Tab.

Slack — #eng
Mensaje a #eng
¿alguien revisa el #4821? es pequeño — dos archivos, casi todo tests.
modelos

Completado, correcciones y respuestas se miden cada uno con su propio eval — y el predeterminado se ajusta a la memoria de tu Mac. Puedes simplemente no preocuparte.

El texto fantasma que Tab termina. Once modelos sobre las mismas frases reservadas, ordenables por el idioma en el que realmente escribes.

La selección reparada en su sitio. Este atajo no corre sobre el modelo que elegiste, sino sobre su hermano instruct: por eso estas seis filas son los hermanos, y cada una dice qué modelos acaban en ella.

Un mensaje entero redactado a partir de la conversación en pantalla. Los mismos seis hermanos que en la corrección — y casi el orden inverso.

Precisión de primera palabra, % de todos los casos cobertura Latencia, p50
1 Gemma 4 E4B 8-bit 8.6 GB 23% 82% 145 ms
2 Gemma 4 E2B 8-bit 5.7 GB por defecto · 24 GB 22% 82% 75 ms
3 Gemma 4 E4B 6-bit 6.8 GB por defecto · 32 GB + 22% 81% 129 ms
4 Gemma 4 E2B 4-bit 3.5 GB por defecto · 16–18 GB 20% 81% 127 ms
5 Qwen3.5 2B 1.6 GB por defecto · 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

Tamaño del punto = memoria residente (hueco = integrado en macOS) · cobertura = casos con respuesta · ± = este idioma frente a la media de 17

Precisión de primera palabra con el silencio contado como fallo, celdas emparejadas (OpenSubtitles · Tatoeba · Leipzig) · las celdas por idioma son finas (±5–10 pp): compara modelos dentro de un idioma, no cifras entre idiomas · 07-2026

Restauración exacta, % de 510 líneas propuesto Latencia, p50
1 Gemma E4B-it 4-bit 5.0 GB · lo usan Gemma E4B tiers · E2B 8-bit 65% 89% 1523 ms
2 Gemma E2B-it 4-bit 3.5 GB · lo usan Gemma E2B 4-bit 50% 90% 378 ms
3 Qwen3.5 2B 1.6 GB · se corrige a sí mismo 32% 74% 255 ms
4 Ternary Bonsai 4B 1.1 GB · se corrige a sí mismo 21% 43% 324 ms
5 Qwen2.5 0.5B-it 0.4 GB · lo usan Qwen2.5 0.5B 11% 41% 185 ms
6 MiniCPM5 1B-it 2.2 GB · lo usan MiniCPM5 1B 4% 28% 668 ms

Bigote = intervalo del 95% · marca roja = con qué frecuencia reescribe una línea que ya era correcta (170 controles limpios) · propuesto = líneas en las que propuso algo · tamaño del punto = memoria residente

Una errata real por línea, 17 idiomas, a través de la misma tubería que se envía — la puerta de edición mínima ya está dentro de las cifras. Una corrección acertada pero formulada de otro modo cuenta como fallo, así que la utilidad real queda por encima de este listón. Las celdas por idioma son 30 líneas: lee el bigote, no el número. Los niveles E4B 8-bit y 6-bit corren sobre el hermano de 6 bits, que el barrido no cubrió; la fila de 4 bits es su mínimo medido. Apple Intelligence no está en este barrido · 07-2026

Borrador utilizable, % de 570 charlas respondió Latencia, p50
1 MiniCPM5 1B-it 2.2 GB · lo usan MiniCPM5 1B 56% 94% 1801 ms
2 Qwen3.5 2B 1.6 GB · se corrige a sí mismo 46% 100% 448 ms
3 Qwen2.5 0.5B-it 0.4 GB · lo usan Qwen2.5 0.5B 38% 94% 345 ms
4 Gemma E4B-it 4-bit 5.0 GB · lo usan Gemma E4B tiers · E2B 8-bit 33% 100% 532 ms
5 Gemma E2B-it 4-bit 3.5 GB · lo usan Gemma E2B 4-bit 32% 100% 356 ms
6 Ternary Bonsai 4B 1.1 GB · se corrige a sí mismo 21% 91% 324 ms

Bigote = intervalo del 95% · respondió = casos en los que redactó algo · tamaño del punto = memoria residente · ± = este idioma frente al total de 19 del modelo

Un borrador cuenta como utilizable si está en el idioma de la conversación y no repite la pantalla — es un suelo de utilidad, no una nota de calidad; la similitud con la referencia resultó demasiado ruidosa. 19 idiomas con 30 conversaciones cada uno, así que las celdas por idioma son anchas: lee el bigote. Apple Intelligence no está en este barrido · 07-2026

la app

Cada ajuste muestra su coste medido.

Tres paneles — presentación, modelo, personalización. Pasa el cursor por cualquier control y Pretype muestra qué mejora y qué cuesta, con mediciones reales.

Texto fantasma en línea o panel flotante, atajo de aceptación, visibilidad con vista previa en vivo — y desactivación por aplicación.

Ajustes de Pretype, panel General: modos de presentación, atajo de aceptación, visibilidad del texto fantasma y exclusiones por aplicación.
la ideología

Tus palabras son tuyas.

la vía de la nube
escribes » su servidor » su modelo » sus logs
una suscripción, una cuenta, una API key
una política de privacidad que hojeas esperando lo mejor
autocompletado que deja de funcionar en un avión
la vía pretype
escribes » tu chip » texto fantasma
0 $ — gratis, licencia MIT, sin cuenta
una política de privacidad que puedes compilar
funciona en modo avión, para siempre
todo lo que pretype pone jamás en la red
tu texto, tus pulsaciones
» a ninguna parte
0 bytes, siempre — por arquitectura
pesos del modelo ≈1,6–2,2 GB
« Hugging Face
una vez, en el primer arranque
comprobación de versión, sin datos
» GitHub Releases
diaria · se apaga en Ajustes
honesto por defecto — necesita el permiso de Accesibilidad, el mismo que pediría un keylogger. Exactamente por eso la ruta de entrada es abierta — y tan corta que se lee en un café:
el código

No te fíes de la privacidad por fe — toda la ruta de entrada son tres archivos. Léelos antes de confiar en ellos.

AXText.swift 570 líneas · lee el campo
/// 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 líneas · captura Tab
/// 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 líneas · lo escribe de vuelta
/// 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)
    }
  }
}
Fig. 1 — literal del repo. 716 líneas entre tus teclas y el texto fantasma. gratis · MIT · sin cuenta github.com/nikiomori/Pretype

Una tecla entre tú y el final de la frase.

macOS · Apple Siliconmodelo de ≈1,6–2,2 GB, descargado una vezgratis · MIT · sin cuenta