4 puntos por GN⁺ 2025-01-13 | 1 comentarios | Compartir por WhatsApp
  • Tabby es un asistente de codificación con IA autoalojado que se ofrece como una alternativa open source y on-premises a GitHub Copilot, con el objetivo de operar sin servicios en la nube
  • El servidor promueve una configuración autónoma que no requiere DBMS ni servicios en la nube, y está diseñado para integrarse fácilmente con infraestructura existente, como Cloud IDE, mediante una interfaz OpenAPI
  • El entorno de ejecución admite GPU de consumo, y con un solo comando Docker se puede levantar el servidor usando el modelo de código StarCoder-1B y el modelo de chat Qwen2-1.5B-Instruct
  • Las actualizaciones recientes incluyen v0.30, que indexa GitLab Merge Requests como contexto; v0.29, que permite agregar documentación propia mediante una REST API; y v0.28, que convierte mensajes de Answer Engine en Pages compartibles
  • Se ofrecen extensiones para IDE/Editor, documentación de instalación y configuración, y una guía de contribución; si se prepara el entorno de Rust y algunas dependencias, se puede compilar directamente con cargo build

El rol y las características básicas de Tabby

  • Tabby es un asistente de codificación con IA autoalojado, una alternativa open source y on-premises a GitHub Copilot
  • Sus características principales se resumen en tres puntos
    • Al ser autónomo, no requiere DBMS ni servicios en la nube
    • Ofrece una interfaz OpenAPI, lo que facilita su integración con infraestructura existente, como Cloud IDE
    • Admite GPU de consumo
  • El proyecto ofrece enlaces a la documentación, Slack y roadmap
  • La demo en vivo se puede abrir desde el sitio web de Tabby

Cambios recientes

  • 2025-12-12: se ofrece vscode@0.20.0, que vincula issues de GitHub con tareas de Pochi para implementarlas, y permite crear PR desde la barra lateral junto con el análisis de resultados de CI/Lint/Test
  • 2025-07-02: v0.30 incorpora soporte para indexar GitLab Merge Requests como contexto
  • 2025-05-25: se ofrece información para sumarse a la lista de espera de la vista previa privada de Agent
  • 2025-05-20: en v0.29, se puede agregar documentación propia a Tabby mediante una REST API
  • 2025-05-01: v0.28 convierte los mensajes de Answer Engine en Pages persistentes y compartibles
  • 2025-03-31: v0.27 ofrece un menú @ más completo en el panel lateral de chat

Alcance de funciones reflejado en actualizaciones anteriores

  • Answer Engine se presentó en v0.13.0 como un motor central de conocimiento para equipos internos de ingeniería, y entrega respuestas integrándose con datos internos del equipo de desarrollo
  • Tabby ha ido agregando funciones de integración y configuración como GitLab SSO, GitHub/GitLab autoalojados, integración con HTTP API y repo-context en Code Browser
  • El flujo de plugins de IDE incluye actualizaciones para VSCode/Vim/IntelliJ, panel lateral de chat en VSCode, edición mediante comandos de chat, varias opciones de autocompletado en línea y mensajes de commit generados automáticamente
  • El autocompletado de código aprovecha fragmentos locales relevantes, como declaraciones LSP locales y código modificado recientemente; en v0.3.0, el autocompletado de código basado en RAG se activó de forma predeterminada
  • En cuanto al soporte de modelos, se mencionan CodeGemma, CodeQwen, Codestral, soporte experimental para CodeLlama 7B y soporte de inferencia Apple M1/M2 Metal

Cómo empezar y ejemplo de ejecución

docker run -it \
  --gpus all -p 8080:8080 -v $HOME/.tabby:/data \
  tabbyml/tabby \
  serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
  • Las opciones adicionales incluyen configuraciones como el tipo de inferencia y la paralelización, y se pueden consultar en una página de documentación separada

Contribución y compilación

  • La guía completa de contribución está en CONTRIBUTING.md
  • El código fuente se clona junto con los submódulos
git clone --recurse-submodules https://github.com/TabbyML/tabby
cd tabby
  • Si ya clonaste el repositorio, puedes obtener todos los submódulos con el comando git submodule update --recursive --init
  • Los requisitos previos antes de compilar son los siguientes
    • Configuración del entorno de Rust
    • macOS: brew install protobuf
    • Ubuntu/Debian: apt install protobuf-compiler libopenblas-dev
    • Herramientas útiles para Ubuntu: apt install make sqlite3 graphviz
  • Una vez completada la preparación, puedes compilar Tabby con cargo build
  • El flujo de contribución continúa con el envío de un Pull Request después de realizar cambios

1 comentarios

 
GN⁺ 2025-01-13
Opiniones en Hacker News
  • La demo de completar la función findMaxElement en la página principal parece un ejemplo que muestra bien lo que viene, o quizá incluso el estado actual
    Las 6 líneas de Python sugeridas para esa función podrían reemplazarse simplemente con return max(arr), y aunque funcionan, son código totalmente de nivel junior
    Ese código terrible en sí ya da miedo, pero me preocupa más que las personas que lo autocompleten a ciegas dejen de mejorar sus habilidades
    Tal vez puedan ganar story points, pero queda la duda de si realmente mejoraron como desarrolladores

    • Creo que este es un problema que se autocorrige. Código de esta calidad no se puede lanzar como producto, y al final, para pasar las pruebas, hay que entender el último 20–30% de detalles que el LLM no puede resolver
      Pero para entender ese 20%, también hay que entender el 80% que procesó el LLM, así que no me preocupa demasiado, ya que el LLM no puede encargarse de todo hasta el despliegue
    • Por el contrario, esto también podría convertirse en la siguiente capa de abstracción
      Como lenguaje máquina → ensamblador → C → Python → LLM (lenguaje natural), sería como compilar prompts humanos a un código intermedio como Python
      Las primeras versiones de CPython seguramente tampoco eran perfectas y los ingenieros también se habrán sentido inquietos. Con suerte, este nuevo “compilador” también mejorará y se volverá más eficiente, aunque no será perfecto
      Aun así, podríamos terminar pagando un costo similar al que ya pagamos por no tratar directamente con ensamblador
    • Un hábito subestimado al aceptar sugerencias de Cursor es casi siempre preguntar después: “¿hay una mejor forma?
    • Antes uno sabía algunas cosas. Después de que apareció Google, simplemente las buscaba, pero aun así podía hacerlas por cuenta propia
      Ahora apareció la IA y empezamos a pedirle que las haga por nosotros; al final ya no sabemos nada ni podemos hacer nada
    • Ese ejemplo parece mostrar más bien el criterio de la empresa al elegir ese código como demo para la página principal
  • No esperaba que nuestro proyecto llegara a la portada de HN un domingo
    Tabby ha avanzado mucho desde su lanzamiento hace 2 años https://www.tabbyml.com, y ahora se convirtió en una plataforma de desarrollo con IA integral, con completado de código y chat sobre la base de código
    Para uso en equipos/empresas, también admite SSO, control de acceso y autenticación de usuarios https://demo.tabbyml.com/search/how-to-add-an-embedding-api-...
    Los usuarios que lo adoptaron descubrieron que Tabby es la única plataforma que ofrece onboarding autoservicio completo en un esquema on-premise, y como su rendimiento también es comparable con otras opciones del mercado, recomiendo probarlo si tienen curiosidad
    https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ
    https://www.linkedin.com/posts/kelvinmu_last-week-i-introduc...

    • Me pregunto si hay un plugin para MSVC
    • ¿Solo es compatible con Nvidia y Apple? Me pregunto si también funciona con GPU AMD
  • Como alguien que no sabe mucho de IA local pero quiere probarla, me pregunto qué tan cerca está “run tabby in 1 minute” https://github.com/TabbyML/tabby#run-tabby-in-1-minute de, por ejemplo, 4o-mini gratis de ChatGPT
    Quiero saber si al ejecutar el siguiente comando de Docker en una MacBook Pro de gama media puedo usar una IA con velocidad y capacidad similares, o si todavía no llega a ese nivel
    docker run -it --gpus all -p 8080:8080 -v $HOME/.tabby:/data tabbyml/tabby serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
    Veo que hay una página de instrucciones separada para MacBook y más contexto https://tabby.tabbyml.com/docs/quick-start/installation/appl...
    Dice: “La capacidad de cómputo de M1/M2 es limitada, por lo que puede ser suficiente para uso personal, pero si necesitas una instancia compartida para un equipo, considera hosting con Docker basado en CUDA o ROCm”

    • gpt-4o-mini quizá no sea el mejor punto de referencia para juzgar lo que puede hacer un buen LLM con código: https://aider.chat/docs/leaderboards/#aider-polyglot-benchma...
      Los modelos muy pequeños, como 1.5B, son bastante tontos y no son buenos para generar código de forma conversacional, pero incluso los modelos de 3B o menos pueden hacer bastante bien sugerencias de autocompletado con Tab
      También hay modelos “abiertos” más grandes que se pueden correr en local, y los modelos en el rango de 32B–70B pueden ser mucho mejores que gpt-4o-mini en casi todo, incluida la escritura de código. Por ejemplo, llama3.3-70b-instruct y qwen2.5-coder-32b-instruct son bastante buenos
      Si de verdad te falta RAM, qwen2.5-coder-7b-instruct o codegemma-7b-it también pueden servir para tareas simples
      Decir “MacBook Pro de gama media” no alcanza; lo importante es cuánta RAM tiene. Como regla general, se necesita alrededor de 1GB de RAM por cada 1B de parámetros
      Con cuantización fuerte pueden ser 500MB, y con modelos sin cuantizar alrededor de 2GB, pero la cuantización de 8 bits suele rondar 1GB y en general funciona bien
    • Como pregunta adicional, los modelos open source tienden a ser menos “inteligentes” que los modelos cerrados; me pregunto si hay planes para compensarlo ofreciendo mejor contexto, por ejemplo consultando documentación técnica relacionada e incluyéndola en el contexto
  • El “interruptor de telemetry de IDE / extensión” no se puede desactivar en la Community Edition. Da curiosidad saber qué incluye esa telemetría.

    • La información de estado que se recopila tiene más o menos esta estructura
      struct HealthState {
      model: String,
      chat_model: Option,
      device: String,
      arch: String,
      cpu_info: String,
      cpu_count: usize,
      cuda_devices: Vec,
      version: Version,
      webserver: Option,
      }
      https://tabby.tabbyml.com/docs/administration/usage-collecti...
  • Estoy usando Continue.dev y ollama para un propósito similar, y siempre es bienvenido que haya más herramientas en este campo.
    Pero, como de costumbre, para correr un modelo realmente bueno, por ejemplo Qwen2.5-coder 32B, se necesita hardware bastante potente.

  • Todos los ejemplos son código que normalmente uno esperaría encontrar en una biblioteca, y parte del código incluso tiene calidad dudosa.
    ¿Los LLM se van a convertir en bots de spam para las bases de código?

  • Según “cómo aprovechar varias GPU NVIDIA”, Tabby solo admite una GPU, y para usar varias GPU hay que levantar varias instancias de Tabby y configurar CUDA_VISIBLE_DEVICES para CUDA o HIP_VISIBLE_DEVICES para ROCm.
    Entonces me pregunto si no se admite usar para inferencia 2 GPU conectadas con NVLink, o si es una situación distinta porque NVLink trata las dos GPU como si fueran una sola.

  • Es un proyecto genial. Me gusta especialmente la idea de no tener que enviar datos a una gran empresa ni confiar en sus términos.
    La efectividad de un asistente de programación es directamente proporcional a la longitud de contexto, pero los modelos abiertos que se pueden correr en una computadora personal suelen ser mucho más pequeños.
    Sería bueno tener datos que cuantifiquen qué tan útil es en bases de código más complejas.

    • Espero que los asistentes de programación 100% locales se popularicen, pero por ahora la recomendación de que “funciona mejor en una GPU de más de USD 10K” es un obstáculo, así que al final no queda otra que usar a las grandes empresas.
  • Me da curiosidad el hardware recomendado. ¿Hace falta una GPU? ¿Podría correr decentemente en una Ryzen APU vieja (Zen 3 y gráficos Vega 7)?

    • El cuello de botella típico de los LLM autoalojados es el ancho de banda de memoria.
      Tener o no gráficos integrados no hace mucha diferencia, y si se corre solo con CPU, el modelo se ejecuta igual extremadamente lento.
      La razón por la que las Mac son razonablemente buenas para LLM es el ancho de banda de memoria inusualmente alto de Apple Silicon, pero aun así quedan muy lejos de la velocidad de una GPU de gama alta con VRAM muy rápida.
      Para un modelo muy pequeño usado en autocompletado con tabulación, probablemente una CPU AMD vieja pueda manejarlo aceptablemente.
    • Un ejemplo de configuración local con una 3090 se puede ver en https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ.
  • Muy bueno. Me alegra especialmente que tenga cliente para Eclipse https://github.com/TabbyML/tabby/tree/3bd73a8c59a1c21312e812...
    Eso sí, tuve que buscar un poco para encontrar información sobre el cliente de Eclipse. No estaba ni en el README principal ni en la lista de extensiones de IDE de la documentación.
    No sé si es una simple omisión o si todavía no está listo para “lanzarse en serio”.