La ronda de julio salió el día 11. Diecisiete días después ya hay material para otra — y esta vez las releases no son solo vecinas: están conectadas.
Dos de ellas ya tuvieron post propio: Octocode enseñó a la búsqueda a pensar con un paso de razonamiento LLM que reordena el código recuperado, y escribimos cómo emparejar esa búsqueda con la memoria de Octobrain para que un agente no solo encuentre código sino que además recuerde lo que decidió sobre él. Este post recoge el resto — y traza los hilos entre ellas.
El hilo esta vez es la verificación. Octocode dejó de fiarse de los scores de similitud y empezó a preguntarle a un modelo si el resultado responde de verdad a la consulta. El supervisor de Octomind dejó de fiarse del "tarea completada" y empezó a verificar los planes contra lo que realmente pasó. Hasta la diarización de Vext dejó de fiarse de las etiquetas de hablante a nivel de chunk y empezó a separar a nivel de palabra. En todo el stack, las primeras salidas ahora son borradores — algo las comprueba antes de que las veas.
Octocode 0.18.1 → 0.19.0 — búsqueda que comprueba sus propios resultados
github.com/muvon/octocode · 0.18.1 → 0.19.0 · 26 de julio
El titular tiene su propio post: un paso opcional de razonamiento LLM que lee los candidatos recuperados, juzga la relevancia real y reordena — fusionado con la búsqueda híbrida mediante RRF ponderado. En el benchmark de 127 consultas que la 0.18.0 volvió reproducible, sube el MRR un +36% y empuja el Hit@5 hasta 0.953.
Aquí va el primer punto que conectar: nada de eso es maquinaria nueva. La fusión RRF es la misma idea que Octobrain 0.9.0 sacó en junio para el recall multi-query de memoria — probada en la capa de memoria, ahora ponderada y llevada a la búsqueda de código. Y los veredictos estructurados del paso de razonamiento van montados sobre el enforcement de response schema que Octolib trajo en la 0.24.0 — la capa de abajo aprendió a garantizar salida parseable del modelo, así que la capa de arriba pudo permitirse poner un LLM en la ruta de ranking. Por eso el stack se distribuye en cinco piezas: una idea aterriza una vez y todas las herramientas la heredan.
Lo que no tuvo post:
- Config v2, con escrituras atómicas. El sistema de configuración se modernizó: un schema v2 con migración automática desde tu config actual, actualizaciones atómicas para que procesos concurrentes no puedan corromperla, y escrituras de archivo endurecidas con una carga más rápida detrás.
- Trabajo de memoria en el indexador. Una pasada por la eficiencia de asignación de memoria en el indexador — menos presión de memoria en repos grandes, continuando la ronda de estabilidad de la 0.18.1.
- Índice de solo lectura sin git. El servidor MCP ya no exige un repositorio git para el acceso de solo lectura al índice — apúntalo a un directorio normal y la búsqueda funciona.
- Ciclo de vida LSP determinista. Los procesos hijos de LSP ahora se recogen de forma determinista — se acabaron los language servers sueltos sobreviviendo a su sesión.
- AGENTS.md. Los archivos de instrucciones se renombran a la convención AGENTS.md que Octomind adoptó en la 0.36.0 — segundo punto: una convención propagándose por el stack release a release.
cargo install octocode --version 0.19.0
# or grab a binary at https://github.com/muvon/octocode/releases
Octobrain 0.9.1 → 0.9.4 — la sincronización de conocimiento se quita de en medio
github.com/muvon/octobrain · 0.9.1 → 0.9.4 · 26 de julio
Tres releases pequeñas con una dirección clara: hacer que la capa de conocimiento multijugador de la 0.9.0 se sienta invisible.
- Operaciones git asíncronas (0.9.4). Las knowledge boxes respaldadas por git ahora sincronizan en segundo plano — un pull o un push ya no bloquea la llamada de memoria que lo disparó. Si tu equipo comparte un repo de conocimiento, el recall sigue siendo rápido aunque el repo no lo sea.
- Schemas de herramientas MCP aplanados (0.9.2). Los schemas de las herramientas se aplanaron y la documentación se refinó — formas más simples que más clientes MCP manejan correctamente. La misma motivación que llevó a Octocode a soltar su requisito de git más arriba: las herramientas saliendo al encuentro de los clientes donde están, en vez de documentar workarounds.
- Arreglo del proveedor de embeddings (0.9.4). Las respuestas de proveedor que llegan como tuplas ahora se manejan correctamente — un arreglo de interoperabilidad para el zoo creciente de backends de embeddings.
Si quieres ver para qué sirve en realidad la combinación de búsqueda más memoria, el post del emparejamiento cablea Octocode y Octobrain juntos en un mismo setup de agente.
cargo install octobrain --version 0.9.4
# or grab a binary at https://github.com/muvon/octobrain/releases
Octolib 0.25.0 → 0.26.1 — el roster se mantiene al día, el contador se mantiene honesto
github.com/muvon/octolib · 0.25.0 → 0.26.1 · 26 de julio
La ronda pasada, Octolib empezó a rastrear el gasto en embeddings junto al de completions. Esta ronda terminó el trabajo y mantuvo el roster de modelos en movimiento — también escribimos lo que nos enseñaron cinco meses construyendo esta capa.
- Pricing de embeddings para Voyage y Jina (0.25.1) — incluido Jina v5 omni. Combinado con el seguimiento de uso de la 0.25.0, el coste de embeddings ahora es un número real para cada proveedor con el que Octocode puede indexar. Tercer punto: este es el mismo mes en que Octocode volvió la calidad del retrieval un número. Calidad por consulta y coste por índice — ambos medibles, ambos en el mismo stack.
- Headers HTTP personalizados en las peticiones LLM (0.26.0). Cualquier header específico de proveedor — esquemas de auth, pistas de routing, flags beta — pasa por la misma ruta de petición unificada. La válvula de escape que evita que "unificado" signifique "mínimo común denominador".
- El roster: Kimi K3, Inkling, Claude Opus 5. El Kimi K3 de Moonshot y el modelo de referencia Inkling aterrizaron en la 0.25.2, y Claude Opus 5 en la 0.26.1 — a los pocos días de cada lanzamiento, igual que todos los meses hasta ahora.
Si llama a un LLM desde Rust, debería pasar por esta capa: un solo trait, los mismos reintentos, la misma contabilidad de coste — completions y embeddings por igual.
Vext 1.3.0 — la release más grande desde el lanzamiento
vext.muvon.io · 1.2.0 → 1.3.0 · 27 de julio
Vext sacó su actualización más grande hasta la fecha, y avanza en tres frentes a la vez.
Toda la app recibió un rediseño glass. Un nuevo sistema de diseño glass con primitivas de movimiento — la UI por fin parece del macOS en el que corre.
La diarización pasó del nivel de chunk al nivel de palabra. La diarización en dos pasadas de la 1.2.0 etiquetaba hablantes por chunk; la 1.3.0 separa a nivel de palabra, así que un intercambio rápido entre dos personas ya no queda pegado a un solo hablante. El reconocimiento y el emparejamiento de hablantes mejoraron con ello, y dos casos límite duros quedan arreglados: las etiquetas en vivo sobreviven cuando la pasada offline colapsa un stream, y ningún chunk se pierde cuando el re-split offline filtra todos los tramos. Ahí está otra vez el hilo de la verificación — la pasada offline existe para comprobar la pasada en vivo, y ahora esa doble comprobación no puede perder datos.
Cancelación de eco hecha de la forma aburrida. Construimos una cancelación de eco acústica propia y luego la reemplazamos por el voice-processing I/O del sistema — el AEC de la plataforma es mejor que el nuestro, así que el nuestro se fue. Junto a ello aterrizó el soporte de vocabulario personalizado, para que la jerga de tu dominio y los nombres sobrevivan a la transcripción.
También en la 1.3.0: alemán y neerlandés, con lo que la UI llega a siete idiomas (EN, ES, DE, NL, RU, HI, TH), una renovación del sistema de hotkeys y una pasada de estabilidad con dos arreglos que merecen mención — los trabajos de transcripción cancelados ya no giran en vacío al 100% de CPU, y la finalización en segundo plano ya no revierte las ediciones que hiciste a la transcripción de una reunión mientras corría.
Todo sigue corriendo completamente on-device — aquí explicamos por qué eso no es negociable para nosotros.
Aguantando, a propósito
Octofs se queda en 0.5.2 — el rework del targeting de líneas de principios de julio está asentado y la capa de filesystem vuelve a ser aburrida, que es su trabajo. Timex aguanta en 1.2.0 y TypeTab en 1.1.0 — aunque Timex sí tuvo un artículo este mes sobre por qué toda la app es un solo archivo SQLite.
Octomind 0.36.0 → 0.39.0 — cubierto en octomind.run
El runtime sacó siete releases en diecisiete días, con Octomind 0.39.0 cortada el 26 de julio: un modo de ejecución de workflows basado en grafos, un flujo de login por autorización de dispositivo (RFC 8628), gestión de cuenta y de uso, y — el hilo una vez más — trabajo del supervisor en la verificación de planes completados y la verificación observacional, donde el supervisor comprueba el progreso declarado contra lo que la sesión hizo en realidad, con cada cambio validado contra el baseline de SWE-bench. Los artículos completos viven en octomind.run.
Cómo encajan
Conecta todos los puntos y el dibujo es un mismo movimiento hecho cinco veces: generar, luego verificar. Octocode recupera, luego un paso de razonamiento reordena. Octobrain hace recall desde varias consultas, luego RRF fusiona. El supervisor de Octomind planifica, luego verifica lo completado contra lo observado. Vext transcribe en vivo, luego una pasada offline vuelve a separar los hablantes — ahora sin perder jamás una palabra. Y Octolib por debajo hace que el paso de verificar sea asequible y medible: salida con schema garantizado entrando, contabilidad de coste saliendo.
- Octolib 0.26.1 — cada llamada LLM, cada modelo del verano, cada coste rastreado
- Octobrain 0.9.4 — memoria persistente, conocimiento que sincroniza sin bloquear
- Octofs 0.5.2 — acceso seguro al filesystem, aburrido a propósito
- Octocode 0.19.0 — búsqueda de código que razona sobre sus propios resultados
- Octomind 0.39.0 — el runtime, ahora verificando su propio progreso
Binarios únicos, Apache-2.0, todos ellos.
Agosto ya está en marcha. Si una de estas piezas desbloquea algo que querías construir, abre un issue — los features pedidos en estas rondas se siguen convirtiendo en los titulares de la ronda siguiente.
— Don



