Instructions to use migtissera/Tess-4-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use migtissera/Tess-4-27B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="migtissera/Tess-4-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("migtissera/Tess-4-27B") model = AutoModelForMultimodalLM.from_pretrained("migtissera/Tess-4-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use migtissera/Tess-4-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "migtissera/Tess-4-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "migtissera/Tess-4-27B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/migtissera/Tess-4-27B
- SGLang
How to use migtissera/Tess-4-27B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "migtissera/Tess-4-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "migtissera/Tess-4-27B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "migtissera/Tess-4-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "migtissera/Tess-4-27B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use migtissera/Tess-4-27B with Docker Model Runner:
docker model run hf.co/migtissera/Tess-4-27B
Tess-4-27B
Reasoning that scales with the problem. An agentic, thinking-native model that deliberates harder exactly when it matters — and gets out of its own way when it doesn't.
Tess-4-27B is the first Tess release in two years, and the first that reasons. Built on Qwen/Qwen3.6-27B by Migel Tissera, it's post-trained on a deliberate blend: 64K-token long-context agentic traces — real engineering work done with Fable-5, not synthetic generations — with a reasoning style approximated from Fable-5 by a three-model teacher ensemble (Opus-4.8, GPT-5.5, and GLM-5.2) fused into one coherent voice.
The result is a 27B model that thinks like a senior engineer: form a hypothesis, act, verify, and reason with real density on the turns that actually deserve it — not a model that narrates its way to an answer it already had.
Why Tess-4 is different
- 🧠 Weight-scaled reasoning. Tess-4 keeps routine steps tight and pours deliberation into the hard ones — planning, debugging, synthesis, judgment calls. It doesn't ramble; it thinks proportionally to the difficulty of the moment.
- 🛠️ Agentic by design. Native, parallel tool use and disciplined multi-step problem solving. It reads a codebase, builds a real mental model, and acts on it.
- 📏 Long-context, trained at 64K. Post-trained on 64K-token long-context agentic traces, so it holds a large working set without losing the thread.
- 👁️ Multimodal. Inherits Qwen3.6's vision tower — text and image in. (For GGUF, pair with the included vision projector.)
- 🤝 Honest, not sycophantic. Trained to give grounded, evidence-based pushback instead of flattery.
The reasoning traces
Tess-4's signature is how it thinks. The reasoning/thinking traces used to train it were a best-case approximation of Fable-5, produced by a combination of Opus-4.8, GPT-5.5, and GLM-5.2 working together as a team — a multi-model teacher ensemble distilled into a single, coherent reasoning style.
The result is a model that reasons prospectively — predicting, verifying, and weighing alternatives before acting — rather than narrating after the fact.
Prompt format & thinking
Tess-4 uses the Qwen3.5-family chat template with explicit <think> … </think> reasoning blocks. The model reasons privately, then produces its visible answer:
<|im_start|>user
Your prompt here<|im_end|>
<|im_start|>assistant
<think>
… the model's private reasoning …
</think>
… the model's answer …<|im_end|>
Apply it automatically via tokenizer.apply_chat_template(messages, add_generation_prompt=True), or --jinja in llama.cpp.
Available formats
This repo — full-precision weights:
| Format | ~Size | Best for |
|---|---|---|
| BF16 safetensors | 52 GB | transformers · vLLM · SGLang |
GGUF quants → migtissera/Tess-4-27B-GGUF
| File | Format | ~Size | Best for |
|---|---|---|---|
Tess-4-27B-Q4_K_M.gguf |
Q4_K_M | 16.5 GB | smallest — great quality/size · most popular |
Tess-4-27B-Q6_K.gguf |
Q6_K | 22 GB | near-lossless |
Tess-4-27B-Q8_0.gguf |
Q8_0 | 28 GB | effectively lossless |
mmproj-Tess-4-27B-F16.gguf |
vision projector | 0.9 GB | pair with any text GGUF for image input |
Quickstart
llama.cpp / LM Studio (GGUF)
Grab the quant(s) from migtissera/Tess-4-27B-GGUF:
hf download migtissera/Tess-4-27B-GGUF \
Tess-4-27B-Q4_K_M.gguf mmproj-Tess-4-27B-F16.gguf \
--local-dir ./tess-4-27b
# text
llama-cli -m Tess-4-27B-Q4_K_M.gguf --jinja -p "Refactor this function and explain your reasoning."
# with images (multimodal)
llama-mtmd-cli -m Tess-4-27B-Q4_K_M.gguf \
--mmproj mmproj-Tess-4-27B-F16.gguf \
--image photo.png -p "What's in this image?"
LM Studio: put mmproj-Tess-4-27B-F16.gguf in the same folder as the model file — LM Studio auto-detects it and enables image input. (Use a recent runtime; older llama.cpp builds won't recognize the architecture.)
transformers
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
model_id = "migtissera/Tess-4-27B"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForImageTextToText.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True
)
messages = [{"role": "user", "content": "Explain the tradeoffs of LoRA vs full fine-tuning."}]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
out = model.generate(inputs, max_new_tokens=1024)
print(processor.decode(out[0], skip_special_tokens=True))
(Requires a recent transformers with Qwen3.5/3.6 support.)
What it's good at
- Agentic coding — exploring unfamiliar repos, planning changes, and executing multi-step work with tools.
- Long-context work — reasoning over large codebases and documents without dropping context.
- Technical & product judgment — honest, structured analysis that pushes back with evidence rather than agreeing by default.
Credits
Tess-4-27B is built on Qwen/Qwen3.6-27B by the Qwen team — full credit to them for an outstanding base model. Tess-4 inherits its Qwen3.5-family vision-language architecture and its Apache 2.0 license.
License
Released under the Apache License 2.0, inherited from the base model. See LICENSE.
Citation
@misc{tissera2026tess4,
title = {Tess-4-27B},
author = {Migel Tissera},
year = {2026},
howpublished = {\url{https://huggingface.co/migtissera/Tess-4-27B}},
note = {Built on Qwen/Qwen3.6-27B}
}
Tess-4-27B — part of the Tess series by Migel Tissera. Evaluations forthcoming.
- Downloads last month
- -