Instructions to use Tetsuto/taxi-nl-3b-gguf with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Tetsuto/taxi-nl-3b-gguf 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 Tetsuto/taxi-nl-3b-gguf:F16 # Run inference directly in the terminal: llama cli -hf Tetsuto/taxi-nl-3b-gguf:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Tetsuto/taxi-nl-3b-gguf:F16 # Run inference directly in the terminal: llama cli -hf Tetsuto/taxi-nl-3b-gguf:F16
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 Tetsuto/taxi-nl-3b-gguf:F16 # Run inference directly in the terminal: ./llama-cli -hf Tetsuto/taxi-nl-3b-gguf:F16
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 Tetsuto/taxi-nl-3b-gguf:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf Tetsuto/taxi-nl-3b-gguf:F16
Use Docker
docker model run hf.co/Tetsuto/taxi-nl-3b-gguf:F16
- LM Studio
- Jan
- vLLM
How to use Tetsuto/taxi-nl-3b-gguf with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Tetsuto/taxi-nl-3b-gguf" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Tetsuto/taxi-nl-3b-gguf", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Tetsuto/taxi-nl-3b-gguf:F16
- Ollama
How to use Tetsuto/taxi-nl-3b-gguf with Ollama:
ollama run hf.co/Tetsuto/taxi-nl-3b-gguf:F16
- Unsloth Studio
How to use Tetsuto/taxi-nl-3b-gguf 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 Tetsuto/taxi-nl-3b-gguf 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 Tetsuto/taxi-nl-3b-gguf to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Tetsuto/taxi-nl-3b-gguf to start chatting
- Pi
How to use Tetsuto/taxi-nl-3b-gguf with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Tetsuto/taxi-nl-3b-gguf:F16
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": "Tetsuto/taxi-nl-3b-gguf:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use Tetsuto/taxi-nl-3b-gguf with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Tetsuto/taxi-nl-3b-gguf:F16
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 "Tetsuto/taxi-nl-3b-gguf:F16" \ --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 Tetsuto/taxi-nl-3b-gguf with Docker Model Runner:
docker model run hf.co/Tetsuto/taxi-nl-3b-gguf:F16
- Lemonade
How to use Tetsuto/taxi-nl-3b-gguf with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Tetsuto/taxi-nl-3b-gguf:F16
Run and chat with the model
lemonade run user.taxi-nl-3b-gguf-F16
List all available models
lemonade list
- Hermes Agent
How to use Tetsuto/taxi-nl-3b-gguf with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Tetsuto/taxi-nl-3b-gguf:F16
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 Tetsuto/taxi-nl-3b-gguf:F16
Run Hermes
hermes
- Atomic Chat
taxi-nl-3b โ Natural Language โ Taxi schema
A fine-tuned Qwen2.5-Coder-3B that translates plain-English requirements into Taxi schema code (the language used by Orbital).
Why this model exists. Strong general code models (Qwen3-Coder, Qwen2.5-Coder-32B) score 19โ30% on Taxi generation in plain-prompt mode because they invent TypeScript-flavored syntax (type X = string) instead of Taxi's inherits String. Context-stuffing with a Taxi grammar primer + examples lifts those models to 67โ80%, but pays the context tax on every call (multi-thousand-token prompts, ~7 sec/query at 32B). This model has Taxi baked in โ single-sentence prompts produce idiomatic, compiling Taxi schemas at 1โ2 sec/query.
This release (v7). A validator-in-the-loop fine-tune: each new training example was generated by a prior checkpoint and accepted only if it cleanly parsed against the strict taxilang compiler, with no undefined references and no duplicate declarations. The point of v5 is schema completeness โ earlier versions sometimes referenced types they hadn't declared, or emitted patterns like @PII in syntactically invalid positions. v7 builds on v5 with 12 hand-authored anchors targeting service-with-multiple-operations, query+projection completeness, and clean @HttpOperation context โ fixing schema completeness while pushing benchmark scores higher while preserving the surface-pattern coverage (annotations, polymorphism via inherits, services with @HttpOperation).
Headline benchmark (100-entry held-out set, 40 easy / 30 schema-aware / 30 open-ended)
| Model | overall | easy | schema-aware | open-ended | s/query |
|---|---|---|---|---|---|
| taxi-nl-3b v7 MLX (4-bit) | 94% | 95 | 97 | 90 | 1.1 |
| taxi-nl-3b v7 Q4 GGUF (CPU) | 86% | 90 | 90 | 77 | 2.8 |
| qwen2.5-coder:32b + context-stuffing | 80% | 90 | 97 | 50 | 6.7 |
| qwen3-coder-next + context-stuffing | 72% | 90 | 90 | 30 | 2.6 |
| qwen2.5-coder:7b + context-stuffing | 67% | 70 | 87 | 43 | 1.8 |
| qwen2.5-coder:32b plain | 30% | 28 | 63 | 0 | 5.9 |
| qwen2.5-coder:7b plain | 24% | 38 | 30 | 0 | 1.5 |
The Q4 GGUF in this repo is the deployable artifact for CPU inference; based on prior quantisation runs in this lineage, expect ~5โ8 pp below the MLX 4-bit number, concentrated in the open-ended bucket (multi-block compositions are most weight-precision sensitive). Even quantised, it sits well above the context-stuffed 32B bar.
Metric: compile pass rate against the strict taxilang compiler (catches both syntactic and semantic errors โ unresolved type references, duplicate symbols, type mismatches).
Real-world dogfood โ 20/20
Two independent sets of 10 plain-English prompts each (one canonical, one held-out and never seen during any phase of generation or validation), targeting realistic schema patterns: Stripe-style subscriptions, FIX messages, healthcare claims with @PII, REST services with @HttpOperation, polymorphic events with inherits, multi-model insurance policies, query projections, nested arrays, type reuse, RBAC. Every prompt produced compiling Taxi. v2 scored 5/10 on the canonical set; v3 scored 9/10; v5 hit 10/10 on both; v7 trades 2 dogfood for a 5 pp benchmark jump โ see numbers above.
Training recipe
- Base:
mlx-community/Qwen2.5-Coder-3B-Instruct-4bit - Method: LoRA (
mlx_lm.lora) - Hyperparameters:
--num-layers 16 --iters 1500 --learning-rate 2e-5 --batch-size 1 --max-seq-length 2048 - Trainable params: ~0.1% (3.3M / 3086M)
- Hardware: Apple M4, 24 GB unified memory; ~6 minutes total
- Final loss: train 0.43, val 0.32 (val-loss minimum at iter 1500; iter-2000 overfit, val 0.43 โ 1500 ships)
Training data
Roughly 4,500 (description, taxi) pairs:
- Reverse-description (1,268 pairs): for each validated upstream Taxi snippet, a coder model wrote 3 NL descriptions in distinct styles (terse / task-card / doc-comment).
- Forward synthesis (5,000 pairs): generated jointly given a domain ร construct bucket; each candidate validated through the strict compiler with one self-correct retry on failure.
- Hand-authored anchors (32 pairs): narrow, precise examples of the patterns earlier versions missed โ
@PIIplacement,@HttpOperationinsideservice, polymorphism viainherits. - Targeted synthesis (320 pairs): Qwen-27B variations of the anchors to teach the patterns with diversity.
- Validator-in-the-loop / RFT (631 pairs): generated by a prior checkpoint, kept only when they parsed cleanly with no undefined references and no duplicate declarations.
After dedup against the held-out benchmark gold and chat formatting: ~3,700 train / ~460 valid pairs.
Inference
CLI (recommended)
pip install stackfix # installs the `taxify` command
taxify "a Customer model with id and email"
Python (llama-cpp-python)
from llama_cpp import Llama
SYS = ("You translate natural-language requirements into idiomatic Taxi schema code. "
"Taxi is the schema language used by Orbital (orbitalhq.com). "
"Return ONLY the Taxi source.")
llm = Llama(model_path="taxi-nl-3b-q4.gguf", n_ctx=4096, verbose=False)
resp = llm.create_chat_completion(messages=[
{"role": "system", "content": SYS},
{"role": "user", "content": "Define a Customer model with id and email"},
])
print(resp["choices"][0]["message"]["content"])
With existing Taxi context
taxify "Add an Order service that fetches orders by CustomerId" --schema customer.taxi
The CLI applies a post-processor that strips any blocks the model produces whose declared symbol already exists in the in-context schema โ the fine-tune occasionally replays context verbatim, and this dedup keeps output clean.
Files
taxi-nl-3b-q4.ggufโ Q4_K_M quantization, 1.8 GB, recommended for CPU.taxi-nl-3b-f16.ggufโ full f16, 6.2 GB, for evaluation parity.
Limitations
- Out-of-distribution prompts (e.g., "design a healthcare claims system using OpenBanking conventions") fall back toward the base model's behaviour. Best for "translate this concrete schema description" rather than open-ended design.
- Reserved word handling is imperfect โ names like
fromas parameter names occasionally trip the parser. - TaxiQL projections (
find { X[] } as { ... }) work for simple cases; complex projection rewrites are still best-effort. - The post-process dedup is a heuristic (exact symbol-name match). If you genuinely want the schema repeated, set
--no-dedup(CLI) or skip the helper.
License
Apache 2.0 (matching the base model's license).
Citation
@misc{taxi-nl-3b,
author = {Cloud-Gym},
title = {taxi-nl-3b: a small fine-tuned model for NLโTaxi translation},
year = {2026},
publisher = {HuggingFace},
}
- Downloads last month
- 43
16-bit