Sobre el proyecto

Bolo es una aplicación de dictado push-to-talk para macOS que transcriba el habla y pega el texto resultante en cualquier campo de texto activo, incluidos Slack, Notion, Gmail, VS Code, terminales y navegadores. El nombre proviene del hindi, donde "bolo" significa "habla". Está dirigido a macOS 12+ y Rust 1.88+ y se publica bajo la licencia MIT, con un sitio web del proyecto enumerado en el README. Configuración y permisos: install.sh crea un entorno de ayuda de Python privado en ~/.bolo/venv, construye el binario de Rust, busca una clave de API de Telnyx existente en ~/.codex/.env o en el entorno (solicitando y guardando en ~/.bolo/env cuando no se encuentra ninguna), registra a Bolo como un elemento de inicio de sesión y lo inicia. En el primer lanzamiento, un diálogo de incorporación pregunta qué tecla mantener para el dictado, ofreciendo opciones como Right Option, Right Control, F19 y Caps Lock; la elección se almacena en ~/.bolo/env. Luego, Bolo necesita los permisos de Micrófono y Accesibilidad de macOS, este último otorgado al intérprete de Python administrado en ~/.bolo/venv/bin/python3 que realiza la inserción de pegado. El README también proporciona un prompt que se puede entregar a un agente de codificación para recorrer la instalación y el otorgamiento de permisos. Flujo de dictado: mantén la tecla de acceso rápido configurada, habla y suelta. El texto se inserta en el cursor usando el portapapeles, y el contenido anterior del portapapeles se restaura por defecto. Un icono de la barra de menú expone las transcripciones recientes para copiar manualmente, además de comandos como Borrar historial de transcripciones, Ejecutar comprobación de salud, Reescribir texto seleccionado, Agregar término de vocabulario, Agregar alias de vocabulario, Agregar regla de corrección y Comprobar actualizaciones. Configuración: la configuración se lee del entorno o de ~/.bolo/env. Las opciones incluyen TELNYX_API_KEY; BOLO_HOTKEY para la tecla push-to-talk (right_option, right_control, right_shift, fn, f1 a f19, caps_lock); BOLO_PASTE_LAST_HOTKEY para volver a pegar la última transcripción; BOLO_MICROPHONE; BOLO_MAX_RECORDING_SECONDS, con un valor predeterminado de watchdog de 30 segundos que libera automáticamente las grabaciones largas; BOLO_STT_MODEL y BOLO_STT_FALLBACK_MODEL; BOLO_STT_LANGUAGE para sugerencias de idioma o acento, con una caída a inglés (EE. UU.) si una sugerencia no estadounidense resulta lenta; BOLO_STT_FALLBACKS para una cadena de proveedores separada por comas que puede incluir telnyx:model, xai y assemblyai; BOLO_STT_STREAMING, que controla el streaming de Deepgram Nova-3 frente a la transcripción por lotes; BOLO_PRESERVE_CLIPBOARD; BOLO_LLM_CLEANUP; BOLO_AUTO_UPDATE; y BOLO_LOG_TRANSCRIPTS, desactivado por defecto para que el texto dictado se redacte de /tmp/bolo.log. Limpieza, vocabulario y correcciones: la limpieza de LLM tiene como valor predeterminado automático, omitiendo dictados cortos y limpios y activándose para dictados más largos o desordenados; el README señala Telnyx Qwen/Qwen3-235B-A22B con el pensamiento desactivado, o Kimi-K2.5 cuando LiteLLM está configurado, y afirma que MiniMax no se usa intencionalmente para la limpieza. La limpieza puede leer la aplicación frontal y el texto cercano al cursor a través de Accesibilidad para el espaciado y la capitalización. Los comandos de voz incluyen "scratch that", "actually ...", "polish that" y "prompt that", protegidos para que actúen solo cuando el dictado anterior aún esté inmediatamente antes del caret y coincida exactamente. El vocabulario personal vive en ~/.bolo_vocabulary.json y admite objetos de alias para malentendidos comunes; las reglas de reemplazo deterministas viven en ~/.bolo/replacements.json; los estilos de limpieza por aplicación se almacenan en ~/.bolo/prompt_bindings.json con los perfiles default, email, chat y notes. Privacidad e historial: el audio se envía a las API de Telnyx para la transcripción y se procesa solo en memoria, según el README, y las transcripciones no se usan para el entrenamiento. Las diez transcripciones más recientes se almacenan localmente en ~/.bolo/transcripts.json, manteniendo las variantes sin procesar y limpiadas cuando la limpieza cambia el texto, y se pueden eliminar desde la barra de menú. Limitaciones y mantenimiento: Bolo requiere una conexión a Internet, el dictado corto funciona bien hoy en día, mientras que el dictado más largo y la latencia aún se están mejorando, y la limpieza es intencionalmente conservadora para preservar el significado literal. Las actualizaciones se verifican al iniciar o a pedido y se omiten cuando los archivos locales tienen cambios no confirmados, GitHub es inaccesible, falta Rust o el checkout no puede avanzar rápidamente de forma limpia. Se incluye un pequeño arnés de evaluación basado en frases (eval_dictation.py con comandos prompt, init y score), y la solución de problemas se centra en /tmp/bolo.log, la presencia de la clave de API, los permisos para el intérprete administrado y restart.sh.