Context Mode tiene 30.231 estrellas y una promesa del 98% que reproduje de dos formas distintas: el paquete npm congelado desde el 29 de junio, una insignia que cuenta descargas como usuarios y la pasarela de 49 dólares al mes que hay detrás

La API de GitHub devuelve 30.231 estrellas, 2.127 forks y solo 111 watchers para mksglu/context-mode. Su paquete npm publicó 223 versiones entre el 23 de febrero y el 29 de junio, y ninguna en los 110 días siguientes. Reproduje el benchmark del propio proyecto en el HEAD actual (98% en un arnés, 94% en otro y una fila desviada por 52x), leí el workflow update-stats que convierte 633.680 descargas en una insignia de '687,9k+ usuarios', y seguí el rastro del trabajo real: una empresa británica, MKSF LTD, vendiendo una pasarela de 49 dólares al mes cuya CLI lleva 1.589 descargas.

Context Mode es el plugin MCP que promete mantener la salida cruda de las herramientas fuera de tu ventana de contexto: 315 KB de salida se convierten en 5,4 KB, una reducción del 98%. Tiene 30.231 estrellas, numera sus versiones por centenares y su README declara su filosofía en un párrafo sin matices: «Nada sale de tu máquina. Sin telemetría, sin sincronización en la nube, sin seguimiento de uso, sin cuenta obligatoria… La optimización de contexto debería ocurrir en el origen, no en un panel detrás de una suscripción por asiento.»

Ese es el README que se guardaron esas 30.231 personas. Este es el resto del cuadro, medido hoy en lugar de citado:

Señal (API de GitHub, 2026-10-17)Valor
Estrellas30.231
Forks2.127
Watchers (subscribers_count)111 (0,37% de las estrellas)
Issues abiertas358
Creado2026-02-23 (hace 236 días)
Fichero de licenciaElastic License 2.0 (ELv2) — código disponible, no open source según la OSI
Último commit humano en main2026-06-29 21:17
Commits en main desde 2026-07-01174, todos de github-actions[bot]
Paquete npm context-mode223 versiones, la última 1.0.169 el 2026-06-29, ninguna después

Un paquete npm que publica 223 versiones en 127 días y luego nada durante 110 días no está en una pausa normal de mantenimiento. La pregunta interesante no es si está abandonado —el desarrollo continúa a la vista—, sino dónde se fue ese trabajo y qué cuentan realmente los números de la portada del repositorio.

La promesa del 98%, reproducida en el HEAD actual

La afirmación es lo bastante concreta como para probarla, así que no la acepté por fe: cloné el repositorio en su HEAD (último commit 2026-10-16T12:06Z), ejecuté npm install y lancé los arneses de benchmark del propio proyecto con npx tsx.

Arnés (ejecutado en local, 2026-10-17)CrudoAl contextoAhorro agregado
tests/live-benchmark-v04.ts, 13 escenarios193,1 KB12,2 KB94%
tests/context-comparison.ts195,0 KB4.339 B98%

Dos arneses del mismo repositorio, ejecutados con minutos de diferencia en la misma máquina, discrepan en cuatro puntos, y el 98% vive en el segundo. El BENCHMARK.md del propio repositorio es más prudente que sus insignias: su tabla general dice 96%, y lo desglosa en 98% para el subtotal de ctx_execute_file (315 KB → 5,5 KB) y 82% para el subtotal de ctx_index / ctx_search (60,3 KB → 11,0 KB). La cifra titular es la mejor mitad de un benchmark de dos partes, no el benchmark.

Los ficheros de prueba sí son honestos, y merece la pena decirlo: los tamaños se reproducen byte a byte desde los datos incluidos — access.log son 46.216 bytes (declarado 45,1 KB), analytics.csv son 87.517 bytes (declarado 85,5 KB), build-output.txt son 6.594 bytes (declarado 6,4 KB). Solo una fila no se reprodujo:

  • BENCHMARK.md declara Analytics CSV (500 filas): 85,5 KB → 222 B, 100% ahorrado.
  • Mi ejecución en el HEAD actual produjo 11.519 B para el mismo fichero de 85,5 KB: 87%.

Es una diferencia de 52x en el mayor fichero de la tabla. También es la forma honesta de este tipo de benchmark: el ratio de resumen depende de lo que decida imprimir el script de análisis generado, así que un escenario puede oscilar entre el 100% y el 87% según la ruta de código. La misma ejecución imprimió NaN% saved en la fila de npm ls, porque la salida cruda era de cero bytes: un bug visible en un arnés que se usa como evidencia comercial.

El límite que el autor reconoció, en un patrón de hook

La verificación más útil del 98% no vino del mantenedor, sino de un comentarista de Hacker News en febrero, que lo probó empíricamente y leyó el código:

«Confirmado: context-mode no puede interceptar respuestas de herramientas MCP. El hook PreToolUse solo coincide con Bash|Read|Grep|Glob|WebFetch|WebSearch|Task. Cuando llamé al obsidian_list de mi MCP de Obsidian, la respuesta fue directa al contexto: cero entradas en la base FTS5 de context-mode.»

El autor no lo discutió. Reconoció que el límite existe: Context Mode trabaja el lado de salida de las herramientas integradas y de los wrappers de CLI, y los servidores MCP de terceros tendrían que aplicar el mismo patrón de resumen más almacenamiento en su propio lado. Es un alcance coherente y justo. También es un alcance que reduce de forma material lo que significa «el 98% de tu ventana de contexto» para quien tiene el problema en servidores MCP de terceros, que es buena parte del ecosistema.

El mismo hilo contiene la crítica que mejor ha envejecido. Preguntado por si reducir el contexto cambia la calidad de la tarea, el mantenedor respondió:

«Todavía no hemos hecho benchmarks formales de calidad de respuesta; nos centramos sobre todo en medir el ahorro de tokens.»

Los comentaristas llamaron a esas cifras «ruido sin benchmarks del rendimiento del arnés con y sin context mode». Eso era febrero.

Qué pasó entre el 29 de junio y el 17 de octubre

El historial de git es inequívoco cuando se mira más allá de la rama por defecto. main tiene 2.235 commits, 198 etiquetas, y su etiqueta más reciente es v1.0.169 del 2026-06-29. Commits mensuales en main:

MesCommits en mainCommits que no son del bot
2026-029797
2026-03544544
2026-04412412
2026-05740740
2026-06268268
2026-07530
2026-08510
2026-09410
2026-10290

Todos y cada uno de los 174 commits en main desde el 1 de julio son de github-actions[bot] escribiendo ci: update install stats. El propio README no cambia desde el 2026-06-24; package.json, desde el 2026-06-29. No existe ningún workflow de publicación o release en .github/workflows/: las publicaciones eran manuales y la última llegó en junio.

El trabajo no se detuvo: se movió. La rama v2-design acumula 391 commits solo en octubre, 366 del mantenedor, y el repositorio ya tiene 29 ramas remotas, 25 de ellas llamadas impl/* — impl/M0-T0-tests, impl/M1-M1-T1-contracts y así, las primeras del 2026-10-14. Es una reconstrucción completa organizada en ramas por hito. Su CI acumula 10 ejecuciones fallidas consecutivas el 16 y el 17 de octubre.

Así que la descripción correcta no es «abandonado». Es: el artefacto publicado está congelado mientras una reescritura v2 ocurre fuera de la rama por defecto, y las 30.231 estrellas apuntan al artefacto congelado.

Qué cuenta de verdad la insignia de «687,9k+ usuarios»

La primera insignia del README dice users: 687.9k+. El repositorio contiene el workflow que la genera, y son tres líneas de aritmética:

# .github/workflows/update-stats.yml
NPM_TOTAL=$(curl -sf "https://api.npmjs.org/downloads/point/2000-01-01:$(date +%Y-%m-%d)/context-mode" | jq -r '.downloads // 0')
CLONES=$(gh api repos/${{ github.repository }}/traffic/clones | jq -r '.uniques // 0')
TOTAL=$((NPM_TOTAL + CLONES))

«Usuarios» es descargas acumuladas de npm más clonadores únicos de GitHub en los últimos 14 días. Se ejecuta cada seis horas y después purga a la fuerza las cachés de jsDelivr y shields.io.

Medido directamente en el registro de npm: context-mode acumula 633.680 descargas (hasta el 2026-10-12, el último día que la API informa), que es de donde sale la insignia npm: 633.6k+. Esa cifra es una suma de 236 días de instalaciones, incluidas las de pipelines de CI, imágenes de contenedor y npx lanzados por las mismas personas. No son 633.680 humanos, y no pueden serlo: el paquete tiene 111 watchers en GitHub.

La curva de descargas es la señal más informativa, porque es la única métrica que un README no puede mover:

Mes (descargas npm)2026-0304050607080910 (12 días)
Descargas43.74350.223122.969116.74784.85580.84487.39243.848

Las descargas alcanzaron su máximo en mayo, con 122.969, y nunca han vuelto a ese nivel, mientras el contador de estrellas seguía subiendo hasta 30.231. Y el 46,9% de todas las descargas históricas (296.939) llegaron después de la última publicación en npm: el paquete no solo está congelado, además sigue instalándose en un futuro que nadie está publicando.

El otro producto

La portada de Context Mode ya no es la de un plugin. Es la de una pasarela: npx @context-mode/cli reescribe la URL base de tu agente hacia gateway.context-mode.com y añade una cabecera con clave de dispositivo, de modo que las peticiones pasan por el punto final de la empresa. El operador es MKSF LTD, sociedad británica (Suite 8805, 5 Brayford Square, Londres E1 0SG).

PlanPrecioIncluye
Free0 $1.000 peticiones, una vez, todas las funciones, sin tarjeta
Pro49 $/mes o 490 $/año50.000 peticiones al mes, paquetes de 25.000
Teampor asiento (2 o más)50.000 peticiones al mes por asiento, una política común
Enterprisea medida, anualinstancia dedicada o tu propia cuenta de Cloudflare

Tu propia cuenta de Anthropic u OpenAI sigue pagando el modelo; la cuota es por la pasarela. Dos detalles de licencia merecen leerse juntos: el motor del repositorio es ELv2 (código disponible — el README explica sin rodeos que eligieron ELv2 en vez de MIT para impedir «reempaquetar el código como un SaaS competidor de código cerrado») y prohíbe ofrecer el software como servicio alojado o gestionado. El nuevo paquete @context-mode/cli, publicado desde el 2026-09-24, es MIT con dos dependencias: 10 versiones, la última 0.7.0 el 2026-10-15 y 1.589 descargas en 23 días.

Esa es la forma del negocio: un motor local y gratuito bajo ELv2 que no se puede revender como servicio, y una pasarela de pago que es la única vía a las funciones nuevas (Recall, política Protect para equipos, la consola Insight alojada). Es un modelo coherente, y el sitio es inusualmente transparente al respecto: el aviso está en la portada. Pero no es el modelo que describe el README, porque el README dejó de editarse el 24 de junio, tres meses antes de que existiera la CLI. El párrafo que dice «sin cuenta obligatoria» y advierte contra «un panel detrás de una suscripción por asiento» sigue siendo lo primero que lee quien llega desde GitHub.

La pregunta de calidad, por fin respondida — con su propio asterisco

Aquí está la parte realmente notable, y la razón de que este análisis no sea una demolición. Siete meses después de que le dijeran que el ahorro de contexto sin benchmarks de calidad es ruido, el proyecto publicó exactamente eso: pruebas A/B emparejadas de Claude Code directo contra la pasarela, con los planes registrados antes de que se ejecutara el primer par.

Medición (Opus 5.5, publicada 2026-09-29 / 10-03 / 10-04)DirectoContext Mode
Tareas cortas, 168 pares / 10 tareas28,28 $23,16 $ (−18,1%)
Pares que costaron menos—155 de 168 (13 costaron más)
Tareas completadas, ambos brazos168 de 168168 de 168
Sesión larga de código, ventana de 1M7,20 $2,49 $ (−65,5%, 4 de 4)
Los mismos 30 pasos, ventana de 200K4,86 $3,04 $ (−37,6%, 3 de 3)
Respuestas de memoria, ventana de 200K4 de 10 (compactó 3 veces)9 de 10 (nunca compactó)
Respuestas de memoria, ventana de 1M10 de 1010, 10, 10 y 8 de 10
Ahorro por tarea, por categoría—15–29%

La lectura honesta corta en dos direcciones. Con una ventana de 200K el caso es sólido: un 37,6% más barato y mejor recuerdo de los hechos propios de la sesión, porque la compactación directa tiraba las respuestas. Con una ventana de 1M el brazo directo sacó 10 de 10 en memoria mientras Context Mode sacó entre 8 y 10, y el titular del 65,5% proviene de una sesión en la que el agente no podía buscar en su archivo. El ahorro agregado en tareas cortas normales es de ~18%, no del 98%.

Y la publicación declara su propia construcción: «Esta página muestra las cargas de trabajo donde el coste fue menor; los prerregistros marcan dónde se retiraron cargas de trabajo.» Trece pares de un conjunto publicado costaron más, y las cargas sin resultado favorable simplemente no están en los ficheros publicados. Está declarado, no escondido, pero significa que 155 de 168 es un número sobre un conjunto seleccionado, y los nombres de los ficheros dicen qué selecciones hubo.

Qué significa esto si vas a instalarlo

  • Fija una versión y mira qué estás instalando. npm install context-mode hoy te da una compilación del 29 de junio con 110 días de correcciones sin publicar detrás, en v1.0.169. El motor funciona —ejecuté sus arneses—, pero su historial de publicación se ha detenido.
  • Conoce el límite de intercepción antes de contar con el ahorro. Herramientas integradas, wrappers de CLI y todo lo reproducible en un subproceso: cubierto. Servidores MCP de terceros: no cubierto, por diseño, como confirmó el autor.
  • Decide la ruta de datos de forma deliberada. El motor local guarda los datos en una base SQLite del directorio personal. La pasarela del plan gratuito enruta las peticiones de tu agente por gateway.context-mode.com con una clave de dispositivo. Son dos posturas de privacidad distintas y solo una mantiene literalmente la promesa del README.
  • El plan gratuito es realmente usable. 1.000 peticiones, todas las funciones, sin tarjeta, y al agotarse tus peticiones van directas al modelo en vez de fallar. Para una persona que quiera comprobar la promesa de coste con su propio tráfico, esa es la forma correcta de evaluarlo: mide tu mezcla de trabajo, no el benchmark de otro.
  • Si pensabas revenderlo, lee la licencia. ELv2 permite uso, forks, modificación y distribución, y prohíbe ofrecerlo como servicio alojado o gestionado y eliminar los avisos de licencia. Si tu plan asumía MIT, el plan es ilegal.
  • La reescritura v2 es real pero no está probada. 391 commits en octubre en v2-design y el CI en rojo durante 10 ejecuciones consecutivas. Sigue esa rama, no el contador de estrellas, para juzgar si el plugin tendrá una segunda vida.

Preguntas frecuentes

¿Context Mode es open source? Es código disponible. El fichero de licencia es Elastic License 2.0, que permite uso, modificación, forks y distribución, pero prohíbe ofrecer el software como servicio alojado o gestionado y eliminar los avisos de licencia. No es una licencia aprobada por la OSI, y es una decisión deliberada que el README explica.

¿Por qué el repositorio tiene 30.231 estrellas y solo 111 watchers? Los watchers son la señal de intención más fuerte que expone GitHub: personas que pidieron recibir notificaciones. El 0,37% es muy bajo; en la misma medición sobre los diez proyectos más grandes de GitHub, los creados antes de 2020 rondan el 3–4%. Un repositorio puede acumular estrellas en un solo día de portada —este logró 570 puntos en Hacker News el 2026-02-28— y seguir con casi nadie siguiendo sus commits.

¿Las 633.680 descargas de npm son 633.680 usuarios? No. Es una suma acumulada de descargas desde el 2026-02-23, y el propio update-stats.yml del repositorio le añade los clonadores únicos de 14 días antes de imprimir «usuarios». Las descargas incluyen pipelines de CI, contenedores, reinstalaciones y ejecuciones de npx. El paquete tiene 111 watchers y el 46,9% de sus descargas históricas llegaron después de su última publicación.

¿Entonces la promesa del 98% es falsa? Es real pero está acotada de forma selectiva. El propio BENCHMARK.md dice 96% global, 98% para el procesamiento de ficheros en el sandbox y 82% para su ruta de base de conocimiento FTS5; mis dos ejecuciones locales en el HEAD actual dieron 94% y 98%. Mide bytes de salida de herramientas que no entran en la ventana de contexto, no coste ni calidad de tarea. Los benchmarks de coste del mismo fabricante muestran entre 15% y 29% de ahorro por tarea corta.

¿Debo usar el plugin local o la pasarela? La pasarela es donde está el trabajo nuevo (Recall, Protect, política de equipo, la consola) y cuesta 49 $/mes en el plan Pro, además de tu propio gasto en modelos. El plugin local es gratuito, está congelado y sigue funcionando, con una licencia ELv2 que impide revenderlo. Si tu objetivo es solo evitar que la salida de npm test se coma tu contexto, la versión congelada ya lo hace hoy.

¿Por qué importa todo esto? Porque el contador de estrellas es la métrica de salud más leída del open source y la menos fiable. Las preguntas que resolvieron este artículo fueron: en qué rama se está haciendo commit, cuándo salió la última versión, qué cuenta la insignia de versiones y qué te permite hacer la licencia. Las cuatro son públicas y ninguna son las estrellas.

Conclusión

Context Mode no es una estafa y esto no es una demolición. La ingeniería es real —la ejecuté, los ficheros de prueba cuadran, el ahorro se reproduce y los benchmarks de coste emparejados publicados en octubre son un nivel de transparencia poco común en este sector—. La documentación del propio proyecto es más honesta que sus insignias: 96% global y 82% en una de las dos mitades frente al 98% titular; 13 pares perdedores en un conjunto de 168; cargas de trabajo retiradas en silencio de la página publicada, declaradas en una línea de letra pequeña.

Lo que los números no sostienen es la impresión que da la página de GitHub. El desarrollo no continuó sobre lo que 30.231 personas se guardaron: el último commit humano en main fue el 29 de junio, la última edición del README fue el 24 de junio, la última publicación en npm fue el 29 de junio y la insignia de arriba cuenta descargas como usuarios. El trabajo se trasladó a una rama de reescritura con el CI en rojo y a una pasarela de 49 $/mes cuya CLI lleva 1.589 descargas, operada por una sociedad limitada británica, vendiendo el conjunto de funciones contra el que el README argumentaba.

Dale una estrella al repositorio si te gusta la idea. Y luego mira la fecha de la última publicación, la rama y la licencia antes de construir encima: esos tres campos habrían contado esta historia entera en menos de un minuto.