Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Inicia sesión con Google para escribir reseñas.Prototipo · se actualiza cada 30 min
PopNx MCPServidores MCP para quienes usan IA · en palabras sencillas

Sarup

de PHUICMTversión 0.2.0i★ 0iSe ejecuta en tu computadora
Nombre en el registroio.github.PHUICMT/sarup

Cómo instalar

What it does

Thai-first context compression; shrinks long Thai and English text, originals retrievable.

  • Connects Se ejecuta en tu computadora
  • Account or key No key needed
  • Category Otros

Instalación

Elige la app de IA que usas y copia la configuración.

Pasó 3/3 revisiones · Funciona en tu computadora · ✓ Comandos revisados el 14 nov 2026

Primero: ¿qué IA usas?

Elige tu app y los pasos aparecen abajo.

Funciona con Claude, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil

Que la IA lo instale

Copia este mensaje en un chat de Claude. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Sarup para Claude en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "sarup": { "command": "uvx", "args": [ "sarup" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Sarup aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre el archivo de configuración de la app de Claude de escritorio

    SettingsDeveloperEdit Config

  3. Pega esta configuración y guarda el archivo

    {
      "mcpServers": {
        "sarup": {
          "command": "uvx",
          "args": [
            "sarup"
          ]
        }
      }
    }
  4. Cierra Claude y vuelve a abrirlo

  5. Pruébalo

    Usa Sarup y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude dice que está usando Sarup o muestra una herramienta de Sarup en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

ChatGPT todavía no puede conectar Sarup

Sarup se instala en tu computadora, pero ChatGPT solo conecta servidores que funcionan en la web

Lo que puedes hacer en su lugar

A · Usa una app que pueda conectar Sarup

  • Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)

B · Otros en Otros que funcionan con ChatGPT

Elegidos entre los más usados de la misma categoría, solo los que se conectan con una dirección y sin clave

Funciona con Claude Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Claude Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Sarup para Claude Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): claude mcp add --scope user sarup -- uvx sarup 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Sarup aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre la Terminal

    Mac: pulsa Command+Espacio y escribe Terminal · Windows: abre PowerShell

  3. Pega este comando y pulsa Enter

    claude mcp add --scope user sarup -- uvx sarup
  4. Escribe /mcp en Claude Code

    Deberías ver Sarup en la lista como conectado

  5. Pruébalo

    Usa Sarup y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude Code dice que está usando Sarup o muestra una herramienta de Sarup en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con Cursor, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Cursor. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Sarup para Cursor en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "sarup": { "command": "uvx", "args": [ "sarup" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Sarup aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir Cursor

    Abrir en Cursor

    Cursor te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de Cursor en modo Agent

  4. Pruébalo

    Usa Sarup y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Cursor dice que está usando Sarup o muestra una herramienta de Sarup en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Cursor el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con VS Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de VS Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Sarup para VS Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "servers": { "sarup": { "type": "stdio", "command": "uvx", "args": [ "sarup" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Sarup aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir VS Code

    Abrir en VS Code

    VS Code te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de VS Code en modo Agent

  4. Pruébalo

    Usa Sarup y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si VS Code dice que está usando Sarup o muestra una herramienta de Sarup en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de VS Code el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Otras apps que usan MCP, como Windsurf, Zed o Gemini CLI, añaden servidores de forma distinta. Míralo en la lista de apps

Ver todas las apps que usan MCP →

La configuración JSON está en “Para desarrolladores”, abajo

¿Te atascaste? Pregunta a quien usa Sarup💬 Conversación →
Para desarrolladores: comandos de Terminal y configuración JSON

Instalado en tu computadora

Claude Code

claude mcp add --scope user sarup -- uvx sarup

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "sarup": {
      "command": "uvx",
      "args": [
        "sarup"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "sarup": {
      "command": "uvx",
      "args": [
        "sarup"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "sarup": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "sarup"
      ]
    }
  }
}

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

De un vistazo

Descargas por semanai
22/sem
Conexión
Se ejecuta en tu computadora
Última versióni
0.2.0
Categoríai
Otros
Publicado en el registroi
27 oct 2026
Último cambio de códigoi
27 oct 2026
Creador
PHUICMT
Paquetes
pypi: sarup
Estado en el registro
Activo

Qué apps pueden usarlo

Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.

Se ejecutan en tu computadora en

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Todas las apps, con ventajas y desventajas →

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 15 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub PHUICMT, dueña del repo

  • ✓ Superada

    Sigue en mantenimiento

    Último cambio de código: hace 19 días

  • ✓ Superada

    Tiene licencia

    Usa MIT

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Vulnerabilidades publicadas (OSV.dev)

Sin entradas en OSV.dev para sarup@0.2.0

Solo revisa esta versión del paquete, no todas sus dependencias · revisado 15 nov 2026

Qué revisamos → · JSON

Creadores: pedir otra revisión o avisar de un dato erróneo

Conversación

Pregunta, comparte un consejo o avisa de que no funciona. Ordenado por lo que la gente marcó como útil.

Aún no hay publicaciones. Sé la primera persona en preguntar o compartir.

Lo publicado aquí lo escriben usuarios, no el equipo de PopNx.

Inicia sesión para publicar

Reseñas de usuarios

Aún no hay reseñas

Inicia sesión para escribir una reseña

Comparado con otros en Otrosi

  • Más estrellas que el 0% de los otros 19932 servidores de esta categoría
  • Publicado en el registro más recientemente que el 69% de los otros 19932 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 19932 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Sarup?

Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez hace 19 días, y la última versión (0.2.0) llegó al registro hace 19 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu

Alternativas parecidas

Misma categoría, otros creadores, comandos ya revisados. Primero los oficiales, luego por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

de koala73Muy usado★ 90,7 milActualizado ayer

Se ejecuta en la nube✓ del servicio · worldmonitor.app

openstatus

Manage monitors, status pages, incidents and maintenances in your openstatus workspace.

de openstatusHQMuy usado★ 9,3 milActualizado hace 2 meses

Se ejecuta en la nube✓ del servicio · openstatus.dev

Oh My Posh Validator

Validate oh-my-posh configurations and segment snippets against the official schema.

de JanDeDobbeleerMuy usado★ 23,8 mil Estrellas de todo el repositorioActualizado hace 26 días

Se ejecuta en la nube✓ del servicio · ohmyposh.dev

Strata

MCP server for progressive tool usage at any scale (see https://klavis.ai)

de Klavis-AIEn crecimiento★ 5,8 milActualizado hace 14 meses

Se ejecuta en la nubeRepo archivado✓ klavis.ai

Jitsu

Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.

de jitsucomMuy usado★ 5,1 milActualizado hace 4 meses

Se ejecuta en la nube✓ del servicio · jitsu.com
  • World Monitor — Funciona en la nube, sin instalar nada · Sin clave
  • openstatus — Funciona en la nube, sin instalar nada · Sin clave
  • Oh My Posh Validator — Funciona en la nube, sin instalar nada · Sin clave
  • Strata — Funciona en la nube, sin instalar nada · Sin clave
  • Jitsu — Funciona en la nube, sin instalar nada · Sin clave

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

สรุป · Sarup

Thai-first context compression for Claude Code. An MCP server that actually shrinks Thai (50–78% fewer tokens) and caches every original so nothing is ever lost. Measured for what matters too: whether Claude still answers correctly.

*สรุป* means "to summarize." Headroom routes Thai through noop (0% savings) because its

whitespace tokenizer can't find Thai word boundaries. Sarup uses PyThaiNLP segmentation, so it

compresses Thai as well as English — and caches every original so nothing is ever lost.

Contents

  • Highlights
  • Why it's safe — the two-tier guarantee
  • How it works
  • Tools
  • Compression modes
  • Measured results
  • Example
  • Install
  • Register with Claude Code
  • Auto-compression hook
  • Privacy & data
  • Configuration
  • Project structure
  • Tech stack & techniques
  • Testing
  • Roadmap
  • License

Highlights

  • 🇹🇭 Real Thai compression — PyThaiNLP newmm word segmentation, not whitespace.
  • ♻️ Lossless by guarantee — every compress caches the original; verified: true proves a byte-for-byte round-trip.
  • 🎚️ Five modes: from offline 1 ms TF-IDF to a 78%-savings cascade.
  • 🧠 Optional local LLM — embeddings + rewrite via Ollama, with automatic offline fallback.
  • 📏 Honest metrics: a real tokenizer (tiktoken) at runtime; Claude's own tokenizer and a Thai QA eval for the published numbers (Does Claude still get it right?).
  • 🕳️ Visible gaps: […] marks every place sentences were dropped, so Claude retrieves instead of mistaking a nearby fact for the answer.
  • 🔌 Content-aware — JSON compaction, log dedup, and verbatim code-fence preservation built in.
  • 🛟 Can't break Claude — it's an MCP tool, not an API proxy; if the server is down the tools just go away and Claude keeps working.

Why it's safe — the two-tier guarantee

TierWhatGuarantee
Compressed viewthe shrunk text the model works onlossy · small · cheap
Retrieval storethe original, keyed by a stable hashlossless · recoverable

Aggressive lossy compression is safe *because* the original is always one sarup_retrieve(hash) away. This is how "maximum savings" and "100% accuracy" coexist — they live in different tiers.

How it works

Two entry points feed one engine: a cheap compressed view the model reads, and a lossless retrieval store that can restore the original byte-for-byte.

flowchart TD

M["🧑 Manual sarup_compress()"]:::entry --> R A["⚙️ Automatic PostToolUse hook (Read · Bash · Grep)"]:::entry --> R

R{"Sarup compress extractive · semantic · abstractive · pipeline"}:::engine R -- "compressed view 50–78% fewer tokens" --> V["📄 Model context"]:::lossy R -. "cache original" .-> S[("🗄️ Retrieval store hash → original")]:::lossless

V -. "need full detail?" .-> RET["🔑 sarup_retrieve(hash)"]:::lossless RET --> S S == "byte-for-byte ✓" ==> V

classDef entry fill:#e0e7ff,stroke:#6366f1,color:#111 classDef engine fill:#fde68a,stroke:#d97706,color:#111 classDef lossy fill:#fef3c7,stroke:#f59e0b,color:#111 classDef lossless fill:#bbf7d0,stroke:#16a34a,color:#111

  • Manual — the model calls sarup_compress / sarup_retrieve itself.
  • Automatic — the hook intercepts large tool outputs, caches the original to SARUP_DB_PATH, and substitutes the compressed view + a retrieval hash. Source code is skipped; small outputs pass through untouched.

Tools

ToolPurpose
sarup_compress(content, target_ratio?, lossless?, query?, mode?)Compress; returns compressed text, hash, token metrics,verified, token_method.
sarup_retrieve(hash)Recover the original content byte-for-byte.
sarup_stats()Cumulative session savings.

`sarup_compress` arguments

ArgTypeDefaultMeaning
contentstring—Text to compress (required).
target_rationumber0.5Fraction of prose to keep (0.1–0.9).
losslessbooleanfalseOnly apply lossless transforms (whitespace / JSON compact).
querystring""What you need from the text; sentences matching it are kept. Pass it whenever you know: it took the QA eval from 69% to 100% at the same size.
modestringextractiveSee modes below.

Compression modes

ModeHowNeeds OllamaSavings¹Speed¹Output
extractive *(default)*TF-IDF scoring + fact boost + n-gram dedupno52.7%~1 msverbatim subset
semanticEmbedding centrality + cosine dedupyes63.8%~2 sverbatim subset
abstractiveLocal-LLM rewriteyes44.4%~8 sparaphrased
pipelineCascade: semantic → abstractiveyes78.2%~6 sparaphrased
autosemantic if Ollama is up, else extractiveoptional63.8%~2 ssubset

¹ Measured on a 10-sentence Thai paragraph (522 tokens), rewrite model gemma4:12b. Every mode stays 100% recoverable via the store; Ollama modes degrade gracefully to extractive when the backend is down. (gemma4:e4b: pipeline 82.2%; June 2026, gemma3:12b: 88.1%.)

Extractive and semantic output is a verbatim subset of the input sentences, with […] on its own line wherever sentences were dropped. Sentences carrying specifics (numbers, Thai digits, identifiers like X-Api-Key) score higher than general statements, since those are what questions ask about.

Measured results

$ .\.venv\Scripts\python.exe bench\benchmark.py

sample before after savings verify Thai prose 522 247 52.7% OK Thai prose (aggressive) 522 189 63.8% OK English prose 105 60 42.9% OK JSON (lossless) 67 44 34.3% OK Logs 563 300 46.7% OK TOTAL 1779 840 52.8% ALL OK → 100% recoverable

Mode comparison (Thai prose, 522 tok): extractive 52.7% (1ms) · semantic 63.8% (2.1s) · auto 63.8% (2.1s) abstractive 44.4% (8.3s) · pipeline 78.2% (5.8s) ← gemma4:12b

Token counts via tiktoken cl100k_base. That is OpenAI's tokenizer and undercounts Claude, most of all on Thai; bench\benchmark.py --claude adds a column from Claude's own tokenizer (Anthropic count_tokens, needs an API key).

Does Claude still get it right?

Fewer tokens only help if the facts survive. bench\eval_qa.py compresses 8 Thai documents (incident report, meeting notes, API docs, HR policy, product spec, support chat, README, sales report; half line-per-sentence, half dense paragraphs) and asks Claude Opus 5.5 32 questions from the compressed view alone, graded deterministically:

$ .\.venv\Scripts\python.exe bench\eval_qa.py        # uses your local `claude` login

mode claude tok saved correct abstain wrong ────────────────────────────────────────────────────────────── original 4601 0.0% 100% 0% 0 extractive:0.5 3204 30.4% 69% 31% 0 extractive:0.3 1969 57.2% 44% 56% 0 semantic:0.5 3214 30.1% 62% 38% 0 extractive:0.5+q 3207 30.3% 100% 0% 0 abstractive:0.5 2697 41.6% 91% 9% 0 ← gemma4:12b pipeline:0.5 1854 59.8% 59% 41% 0 ← gemma4:12b

(gemma4:e4b scored the same: abstractive 91%, pipeline 59%, wrong 0.)

  • wrong = 0 is the safety property: when a fact was dropped, Claude said so (*abstain*) and in real use would call sarup_retrieve. It did not guess from what was left.
  • abstain is the real cost of blind compression: about a third of specific questions need a retrieval round-trip at 0.5. Know what you're looking for? Pass it as query (+q row).
  • abstractive keeps the most facts per token (91% at 42% saved) because a rewrite can keep every number while dropping words; extraction can only drop whole sentences. It costs seconds per document, so use it through sarup_compress, not the hook.
  • In both evals no paraphrase changed a fact into a wrong one, but 8 documents can't prove a rewrite never will, which is why the original stays one sarup_retrieve away.
  • Token counts here are Claude's own (from the answer calls' usage) and include the ~40-token [sarup: …] footer, which weighs heavily on these short (~570-token) documents and fades on the large outputs the hook actually compresses.
  • 8 documents is a small sample; differences of a couple of questions between modes are noise.

Before the fixes this eval drove (Oct 2026): dense Thai paragraphs were not compressed at all (the sentence splitter's model wasn't installed), extractive:0.5 answered 59% with one confident wrong answer, and semantic:0.5 47%.

Example

A real sarup_compress call on a Thai paragraph (mode="auto", Ollama up → semantic):

// → sarup_compress(content="…518-token Thai paragraph…", mode="auto")

{ "compressed": "จุดเด่นที่สำคัญที่สุดคือมันไม่มีทางทำให้ Claude พัง…", "hash": "caa568140bec0ff734937cf5", "original_tokens": 518, "compressed_tokens": 154, "tokens_saved": 364, "savings_percent": 70.3, "transforms": ["semantic

Solo se muestra el principio; lee el resto en el repo