Text Generation
Safetensors
GGUF
English
Chinese
qwen2
reasoning-compression
cjk
chain-of-thought
distillation
qwen2.5
conversational
Instructions to use ZelligeAI/tessera-compressor with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use ZelligeAI/tessera-compressor with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="ZelligeAI/tessera-compressor", filename="gguf/compressor-v31-q8_0.gguf", )
llm.create_chat_completion( messages = [ { "role": "user", "content": "What is the capital of France?" } ] ) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use ZelligeAI/tessera-compressor with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf ZelligeAI/tessera-compressor:Q8_0 # Run inference directly in the terminal: llama cli -hf ZelligeAI/tessera-compressor:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf ZelligeAI/tessera-compressor:Q8_0 # Run inference directly in the terminal: llama cli -hf ZelligeAI/tessera-compressor:Q8_0
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf ZelligeAI/tessera-compressor:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf ZelligeAI/tessera-compressor:Q8_0
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf ZelligeAI/tessera-compressor:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf ZelligeAI/tessera-compressor:Q8_0
Use Docker
docker model run hf.co/ZelligeAI/tessera-compressor:Q8_0
- LM Studio
- Jan
- vLLM
How to use ZelligeAI/tessera-compressor with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ZelligeAI/tessera-compressor" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ZelligeAI/tessera-compressor", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ZelligeAI/tessera-compressor:Q8_0
- Ollama
How to use ZelligeAI/tessera-compressor with Ollama:
ollama run hf.co/ZelligeAI/tessera-compressor:Q8_0
- Unsloth Studio
How to use ZelligeAI/tessera-compressor with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for ZelligeAI/tessera-compressor to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for ZelligeAI/tessera-compressor to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for ZelligeAI/tessera-compressor to start chatting
- Pi
How to use ZelligeAI/tessera-compressor with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ZelligeAI/tessera-compressor:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "ZelligeAI/tessera-compressor:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use ZelligeAI/tessera-compressor with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ZelligeAI/tessera-compressor:Q8_0
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default ZelligeAI/tessera-compressor:Q8_0
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use ZelligeAI/tessera-compressor with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ZelligeAI/tessera-compressor:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "ZelligeAI/tessera-compressor:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use ZelligeAI/tessera-compressor with Docker Model Runner:
docker model run hf.co/ZelligeAI/tessera-compressor:Q8_0
- Lemonade
How to use ZelligeAI/tessera-compressor with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull ZelligeAI/tessera-compressor:Q8_0
Run and chat with the model
lemonade run user.tessera-compressor-Q8_0
List all available models
lemonade list
| """ | |
| segmenting.py — Passage segmentation, classification, and fidelity gates for the | |
| tessera-compressor harness. | |
| Extracted from the harness the compressor was accepted under (same functions the | |
| teacher mint used). Pure text processing: no network, no credentials. | |
| Flow: segment -> group_steps -> classify_passage per passage -> model call -> | |
| gate -> rules fallback on failure. A failed passage costs a few dozen tokens of | |
| savings, never content. | |
| """ | |
| import re | |
| CJK = re.compile(r'[一-鿿㐀-䶿]') | |
| NUM = re.compile(r'\d+(?:\.\d+)?') | |
| IDENT = re.compile(r'`[^`\n]+`|\b[A-Za-z]+(?:_[A-Za-z0-9]+)+\b|\b[a-z]+[A-Z][A-Za-z0-9]*\b') | |
| FENCE = re.compile(r'```.*?```', re.DOTALL) | |
| SENT_SPLIT = re.compile(r'(?<=[.!?;])\s+') | |
| _LIST_MARKER = re.compile(r'(?:^|[\n\s(])(\d{1,2})[.)]\s') | |
| _OPS = set('+-*/=<>≤≥≠∈∀∃¬→⇒%^{}[]') | |
| def segment(text): | |
| """Split a reasoning block into ordered segments; code fences are atomic and marked.""" | |
| segs = [] # (kind, text) kind ∈ {'code','prose'} | |
| pos = 0 | |
| for m in FENCE.finditer(text): | |
| before = text[pos:m.start()] | |
| segs.extend(('prose', s) for s in _split_prose(before)) | |
| segs.append(('code', m.group(0))) | |
| pos = m.end() | |
| segs.extend(('prose', s) for s in _split_prose(text[pos:])) | |
| return [(k, s) for k, s in segs if s.strip()] | |
| def _split_prose(text): | |
| out = [] | |
| for line in text.split('\n'): | |
| line = line.strip() | |
| if not line: | |
| continue | |
| out.extend(s.strip() for s in SENT_SPLIT.split(line) if s.strip()) | |
| return out | |
| def group_steps(segs, max_words=160, max_sents=10): | |
| """Merge consecutive prose sentences into step-sized passages; code stays atomic.""" | |
| out, buf, words = [], [], 0 | |
| def flush(): | |
| nonlocal buf, words | |
| if buf: | |
| out.append(('prose', ' '.join(buf))) | |
| buf, words = [], 0 | |
| for kind, s in segs: | |
| if kind == 'code': | |
| flush() | |
| out.append((kind, s)) | |
| continue | |
| buf.append(s) | |
| words += len(s.split()) | |
| if words >= max_words or len(buf) >= max_sents: | |
| flush() | |
| flush() | |
| return out | |
| def facts(s): | |
| """Numbers + identifiers that must survive compression. | |
| List-enumeration markers ("1. Load...") are structure, not facts.""" | |
| nums = set(NUM.findall(s)) - set(_LIST_MARKER.findall(s)) | |
| idents = set(i.strip('`') for i in IDENT.findall(s)) | |
| return nums | idents | |
| def facts_preserved(src, out): | |
| """Substring presence — regex \\b breaks against adjacent CJK chars. | |
| Returns the list of MISSING facts (empty list = all preserved).""" | |
| out_n = out.replace(',', '') | |
| return [f for f in facts(src) if f.replace(',', '') not in out_n] | |
| def classify_passage(seg, seen_facts, ntok): | |
| """'load' = fact-dense or novel-fact-bearing (step-faithful treatment); | |
| 'narr' = search/narrative (stub treatment). | |
| ntok is a callable: text -> token count under your target tokenizer.""" | |
| f = facts(seg) | |
| novel = f - seen_facts | |
| toks = max(ntok(seg), 1) | |
| dens = (len(NUM.findall(seg)) + len(IDENT.findall(seg)) | |
| + sum(seg.count(o) for o in _OPS)) / toks | |
| if novel and (dens >= 0.08 or len(novel) >= 3): | |
| return 'load' | |
| if dens >= 0.15: | |
| return 'load' | |
| return 'narr' | |
| def gate(src_seg, rules_seg, out, ntok, novel=None): | |
| """Deterministic per-passage fidelity gate. | |
| Returns None if the model output is admissible, else a short fail-reason | |
| string; on failure the caller uses rules_seg instead. | |
| novel: the passage's facts that are NOT already in the accumulated chain. | |
| The prompt tells the model never to restate chain content, so only novel | |
| facts are required to survive (matching the acceptance harness). Pass None | |
| to require every fact of the passage (stricter, for chainless use).""" | |
| if not out or not out.strip(): | |
| return "empty" | |
| if '```' in out: | |
| return "fence" | |
| if len(out) > 2 * len(src_seg) + 40: # explanation/blow-up guard | |
| return "blowup" | |
| required = facts(src_seg) if novel is None else novel | |
| out_n = out.replace(',', '') | |
| if any(f.replace(',', '') not in out_n for f in required): | |
| return "facts" | |
| if ntok(out) > ntok(rules_seg): # must not exceed the rules-only version | |
| return "tokens" | |
| return None | |