Ir al contenido
Traducción automática sin revisar. Cómo contribuir a la traducción.

Instalación

Utter funciona en Linux en Wayland: niri y KDE Plasma (KWin) son compatibles de primera clase, otros compositores tienen soporte parcial (dictado, escritura, inicio; sin acciones de ventana), con PipeWire y Python 3.12+. macOS es experimental (consulta macOS). Se recomienda una GPU NVIDIA para los modelos más grandes, pero no es obligatoria. Compilar la aplicación de ajustes requiere Node + pnpm y una cadena de herramientas de Rust. Hoy solo se publican binarios de versión x86_64.

El instalador es un asistente interactivo. Recorre cada componente (el runner y la CLI assistant, tu idioma hablado, la aplicación de ajustes, los servicios en segundo plano, los modelos de voz y el widget opcional de Noctalia) y pregunta si lo quieres. En una terminal, Intro acepta el valor recomendado por defecto. --yes los acepta todos sin interacción. Cada descarga se verifica con el sha256sums.txt de la versión.

El inglés viene incluido: el paso de idioma usa el inglés por defecto y no descarga nada, así que la instalación por defecto no necesita obtener ningún modelo. Los demás idiomas son opcionales: el paso ofrece el modelo de voz multilingüe y la voz correspondientes (con tamaños) y solo descarga lo que aceptes.

Elige la ruta que más te convenga. En un Mac no se aplica ninguna: consulta macOS (experimental) para el .dmg y macos/setup.sh.

Conserva el repositorio e instala desde tu propio checkout:

Ventana de terminal
git clone https://github.com/sujaisubbanna/utter-assistant.git
cd utter-assistant
./install.sh --dry-run # walk the wizard, print the plan, change nothing
./install.sh # install the components you choose

¿Quieres la instalación más pequeña posible, con los paquetes de la distro y el servicio en segundo plano y nada más? Usa el instalador de desarrollo:

Ventana de terminal
install/install.sh --dry-run
install/install.sh --yes

Deshaz cualquiera de las dos con ./install.sh --uninstall. Los detalles, incluido lo que hace paso a paso el instalador de desarrollo, están en Clonar y compilar desde el código fuente.

Sin necesidad de clonar:

Ventana de terminal
curl -fsSL https://utter.sujaisubbanna.com/install.sh | bash
Ventana de terminal
# recommended defaults, no prompts
curl -fsSL https://utter.sujaisubbanna.com/install.sh | bash -s -- --yes
# native package (.deb/.rpm) through your package manager instead of the AppImage (needs sudo)
curl -fsSL https://utter.sujaisubbanna.com/install.sh | bash -s -- --package --yes
# only these components
curl -fsSL https://utter.sujaisubbanna.com/install.sh | bash -s -- --only core,gui --yes

Otros indicadores: --skip <csv>, --with-noctalia, --dry-run, --uninstall. La matriz completa de indicadores y variables de entorno, los diez pasos del asistente y dónde acaba todo están en Instalar desde la web.

El núcleo del asistente es Python solo con la biblioteca estándar; la aplicación de ajustes es Tauri v2 + React + Tailwind CSS v4.

Ventana de terminal
# the assistant core, straight from the checkout
python3 -m utter.daemon --text "open youtube" --dry-run
scripts/verify.sh # unit + e2e + conformance
# the settings app
cd gui-tauri
pnpm install
pnpm tauri build # release binary (and a .deb) in src-tauri/target/release
pnpm tauri dev # ...or run it with hot reload

En Wayland con una configuración de doble NVIDIA, inicia la aplicación compilada con el renderizador DMABUF desactivado. El lanzador utter-gui lo hace por ti:

Ventana de terminal
WEBKIT_DISABLE_DMABUF_RENDERER=1 ./gui-tauri/src-tauri/target/release/utter

Consulta Clonar y compilar desde el código fuente para los servicios, la CLI assistant y el almacén de modelos.

Los scripts de servicio incluidos asumen una GPU NVIDIA compartida por ambos servidores vLLM. Huella por componente:

ComponenteModeloPrecisiónAjuste de memoria de GPUEn disco
Reconocimiento de voz (en proceso)distil-small.enfaster-whisper, float16~0.5 GB—
Cabeza de decisión / planificadorQwen3-4B-Instruct-2507-AWQ-4bitW4A16 (4-bit AWQ)--gpu-memory-utilization 0.303.3 GB
Visión de pantallaUI-TARS-2B-SFTbf16--gpu-memory-utilization 0.559.2 GB

0.30 + 0.55 = 0.85, así que el par por defecto cabe en una GPU de ~24 GB.

NivelQué se ejecutaEstado
24 GBPila completa; planificador ~7.2 GB (0.30), visión ~13 GB (0.55); juntos ~0.85 de la tarjetaCabe en los valores por defecto: las cifras de latencia siguientes se midieron con ambos modelos en una tarjeta de 24 GB
16 GBLos mismos modelos con UTTER_VISION_GPU_MEM_UTIL y UTTER_PLANNER_GPU_MEM_UTIL más bajos (suma por debajo de ~0.9)Previsto; sin probar
8 GBVisión 2B + planificador 4B AWQ con menor utilización (assistant recommend estima 4B AWQ ≈ 3 GB, UI-TARS-2B ≈ 4 GB)Previsto; sin probar
Sin GPU / solo CPUVisión desactivada (solo accesibilidad), STT más pequeñoPrevisto; sin probar

Solo la fila de 24 GB es el objetivo de los valores por defecto; las otras filas no se han probado. Usa assistant recommend para ver qué cabe en tu máquina.

La latencia se midió en una NVIDIA RTX 3090 Ti (24 GB) con los modelos anteriores, el 2026-10-02 (30 llamadas en caliente y 1 llamada en frío por ruta). Variará según la máquina.

RutaEn frío (primera llamada)Caliente p50Caliente p95
Reglas (capa 1, sin modelo)9.2 ms<1 ms<1 ms
Cabeza de decisión (capa 2, LLM local)108.8 ms9.2 ms11.6 ms
Visión (fundamentación de capturas UI-TARS)676.5 ms91.0 ms140.6 ms
Extremo a extremo utter assistant --dry-run114 ms113 ms114 ms
Suspensión → despertar (recarga del planificador hasta listo)~21 s——
  • «En frío» es la primera llamada cuando los servidores están activos pero inactivos (kernels/cachés CUDA en frío), no la carga del modelo.
  • El tiempo extremo a extremo está dominado por el arranque del intérprete de Python (~113 ms), no por la cabeza de decisión (unos 9 ms en caliente).
  • Las cifras de visión incluyen una imagen sintética de 1344×756.

Consulta Modelos para las reglas de recomendación y el almacén de modelos.

Abre la aplicación de ajustes de Utter, configura tus teclas de pulsar para hablar en la página Voz y elige un modelo recomendado en la página Modelos. Luego sigue Primeros pasos.

Ventana de terminal
systemctl --user enable --now utter-runner.service # start the runner
assistant doctor --json # verify deps + plugins
utter-gui # open the settings window