Instructions to use kaiish/capynode 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 kaiish/capynode 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 kaiish/capynode:Q4_K_M # Run inference directly in the terminal: llama cli -hf kaiish/capynode:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf kaiish/capynode:Q4_K_M # Run inference directly in the terminal: llama cli -hf kaiish/capynode:Q4_K_M
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 kaiish/capynode:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf kaiish/capynode:Q4_K_M
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 kaiish/capynode:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf kaiish/capynode:Q4_K_M
Use Docker
docker model run hf.co/kaiish/capynode:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use kaiish/capynode with Ollama:
ollama run hf.co/kaiish/capynode:Q4_K_M
- Unsloth Desktop
- Pi
How to use kaiish/capynode with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kaiish/capynode:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "kaiish/capynode:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use kaiish/capynode with Docker Model Runner:
docker model run hf.co/kaiish/capynode:Q4_K_M
- Lemonade
How to use kaiish/capynode with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull kaiish/capynode:Q4_K_M
Run and chat with the model
lemonade run user.capynode-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use kaiish/capynode with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kaiish/capynode:Q4_K_M
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 kaiish/capynode:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use kaiish/capynode with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kaiish/capynode:Q4_K_M
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 "kaiish/capynode:Q4_K_M" \ --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"
cat-translate-0.8b-travel-gguf
Offline ENβJA travel translator, Q4_K_M GGUF, runs fully on-device via llama.cpp / PocketPal.
Fine-tuned from cyberagent/CAT-Translate-0.8b
(itself built on sbintuitions/sarashina2.2-0.5b)
via LoRA domain adaptation on a curated travel corpus, then converted to GGUF via a
patched convert_hf_to_gguf.py and quantized with
importance-matrix (imatrix) calibration on travel data.
Files
| File | Size | Notes |
|---|---|---|
cat-translate-0.8b-travel-Q4_K_M.gguf |
503.7 MB | RECOMMENDED β iPhone target |
cat-translate-0.8b-travel-Q5_K_M.gguf |
569.2 MB | Alternate |
cat-translate-0.8b-travel-Q8_0.gguf |
806.2 MB | Near-lossless reference |
All three files are imatrix-calibrated PTQ (importance-matrix post-training quantization),
calibrated on a 534-example travel corpus weighted toward emergency (134 examples, all
available) and food (200 examples) domains. Quantized with llama-quantize --imatrix.
Intended Use & Scope
Target use case: consumer travel translation β ordering food, navigating transportation, accommodation, shopping, and emergency communication in Japan.
Food and emergency domains are explicitly weighted in both fine-tuning (food is 42.5% of training pairs) and in the importance matrix calibration (emergency is the heaviest-weighted domain by proportion). The motivating scenario is a foreigner with no internet access facing a Japanese-only emergency line β "Please call an ambulance" and "I am having an allergic reaction" must be correct.
This model is a credible demonstrator with rigorous safety-aware evaluation. It is not a deployable medical, legal, or defense product. The consumer travel app is the near-term target. See the safety architecture note below for how life-critical phrases are handled in the intended deployment.
Not in scope: medical advice, legal documents, regulated translation workflows, or any context where a confident-wrong output carries high-stakes consequences.
Safety Architecture
The intended deployment is a hybrid phrasebook + LLM system:
- Deterministic, human-verified phrasebook handles life-critical phrases: calling an ambulance, reporting an allergic reaction, "I can't breathe", "I'm lost". These are fixed strings β no probability, no hallucination risk.
- The LLM handles the open-ended long tail: menus, negotiations, descriptions β anything that formulaic phrases don't cover.
A 4-bit quantized LLM alone must not be relied on for life-critical phrases. Confident-wrong is the worst failure mode in an emergency; the phrasebook is the safety net.
Evaluation
Measured on a 156-item held-out gold test set (78 ENβJA + 78 JAβEN), food- and emergency-weighted, with all 44 emergency references human-verified. Evaluated at the desktop inference stage using llama-server with plain-text prompts on stock llama.cpp b9716.
| Label | Size (MB) | COMET (all) | Ξ vs bf16 | food COMET | emerg COMET | BLEU enβja | BLEU jaβen |
|---|---|---|---|---|---|---|---|
| bf16 | 1,515.2 | 0.9001 | Β±0.0000 | 0.8960 | 0.8913 | 48.87 | 39.99 |
| Q8_0 | 806.2 | 0.9022 | +0.0021 | 0.8971 | 0.8925 | 49.79 | 40.35 |
| Q5_K_M | 569.2 | 0.9000 | β0.0001 | 0.8933 | 0.8925 | 48.92 | 41.32 |
| Q4_K_M | 503.7 | 0.8988 | β0.0013 | 0.8892 | 0.8986 | 47.96 | 38.97 |
COMET model: Unbabel/wmt22-comet-da.
BLEU tokenizers: char for ENβJA (sacrebleu), 13a for JAβEN (sacrebleu).
Why Q4_K_M: COMET delta β0.0013 vs bf16 is inside the 0.005 negligible threshold, at 67% smaller. Emergency gate clears: Q4 emerg COMET 0.8986 vs bf16 0.8913 β zero emergency degradation at 4-bit (the small apparent gain is within n=44 noise; the honest claim is no degradation). The entire quant ladder sits within ~0.003 COMET; quant choice collapses to smallest-that-fits-the-phone.
Read these caveats before drawing conclusions
- COMET β parity is the reliable signal. Do not read small BLEU swings between quant levels as quality conclusions β the variation is within small-sample noise.
- These 156-item numbers are NOT comparable to Phase 3 (fine-tune) numbers. The earlier 40-item eval set contained shorter, more formulaic sentences. The 156-item set includes longer, more varied sentences; BLEU naturally drops on harder sets. The difference is not a regression.
- ENβJA BLEU uses
chartokenizer; JAβEN uses13a. Mixing tokenizers makes numbers incomparable. If you re-evaluate, pin these tokenizers explicitly.
Differentiation
The value proposition is pragmatics, not BLEU. Incumbent offline NMT (Google Translate offline ~47 MB, Apple ~100 MB) wins literal character-BLEU. This model's edge:
- Pro-drop resolution β correctly inferring dropped subjects/objects from context in Japanese
- Keigo β appropriate politeness register for service interactions (restaurant, hotel, shop)
- Cultural and food context β menu descriptions, allergen terms, regional food vocabulary
Do not frame this as a BLEU race against Google or Apple. Frame it on pragmatic correctness in travel scenarios that require cultural and register awareness.
Critical Tokenizer Note
This GGUF was built with a patched convert_hf_to_gguf.py and tokenizes correctly only
in llama.cpp builds that use the resulting tokenizer.ggml.model = "t5" path.
Background: cyberagent/CAT-Translate-0.8b uses a SentencePiece Unigram tokenizer
(inherited from sbintuitions/sarashina2.2-0.5b). The stock llama.cpp conversion script
hardcodes tokenizer.ggml.model = "llama" for all SPM models, routing the runtime into the
greedy-merge SPM path. SPM greedy-merge β Unigram Viterbi β it produces silently wrong token
splits. All known community GGUFs of this model family (mradermacher, mmnga-o) have this
bug.
The fix (applied at conversion time): llama.cpp/conversion/base.py::_set_vocab_sentencepiece()
was modified to (1) detect tokenizer.json β model.type == "Unigram" and emit
tokenizer.ggml.model = "t5", routing llama.cpp into its LLAMA_VOCAB_TYPE_UGM Viterbi
path; and (2) selectively promote BYTE tokens to NORMAL type only for byte characters that
have no existing NORMAL token β so control characters like \n tokenize correctly without
triggering the duplicate-text assertion crash (GGML_ASSERT(id_to_token.size() == token_to_id.size())).
Validation on stock llama.cpp b9716 (2026-06-19): /tokenize on the template string:
25/25 tokens match HF output exactly, including \n\n = [25, 25]. Broad parity test over
30 diverse strings: all match. COMET β HF parity in both directions on the 40-sentence eval.
Verify your build: run /tokenize on a Japanese string and compare against HF tokenizer
output. If your llama.cpp or PocketPal build uses an unpatched conversion (model string
"llama" instead of "t5"), tokenization will be silently wrong and translation quality
will degrade. PocketPal validation on a real device remains a required gate before any app
deployment β b9716 desktop testing is a strong proxy, not a guarantee.
Usage
llama-cli
llama-cli \
-m cat-translate-0.8b-travel-Q4_K_M.gguf \
--no-warmup \
-p "Translate the following English text into Japanese.\n\nI'd like a table for two."
llama-server (OpenAI-compatible)
# Start server
llama-server -m cat-translate-0.8b-travel-Q4_K_M.gguf --port 8080
# Query
curl http://localhost:8080/completion \
-H "Content-Type: application/json" \
-d '{"prompt": "Translate the following English text into Japanese.\n\nI have a peanut allergy.", "n_predict": 128}'
Use plain-text prompts only β no chat template, no system message. Template:
"Translate the following {src_lang} text into {tgt_lang}.\n\n{source}"
For JAβEN: "Translate the following Japanese text into English.\n\nζζ₯θ»γεΌγγ§γγ γγγ"
PocketPal (iOS / Android)
Open PocketPal β Models β Add Model β enter the Hugging Face repo ID
kaiish/capynode β select cat-translate-0.8b-travel-Q4_K_M.gguf.
Enable airplane mode after download to confirm fully offline operation.
Running in a chat app (PocketPal, etc.)
This model is single-turn and uses no system message. Chat UIs that wrap input in a default system prompt, or that accumulate conversation history across turns, will break it β the model drops out of translation mode and responds conversationally instead. This is expected behaviour: CAT-Translate is invoked purely by the instruction in a single user turn, not by a persistent persona or context.
Recipe validated working fully offline on iPhone 11 in PocketPal:
- System prompt: empty β clear any default system message in the model settings.
- One translation per conversation β start a fresh chat for each translation; do not carry history between requests.
- Temperature 0 (greedy) for clean, deterministic output.
- Jinja chat-template ON β use the embedded template (enabled by default in PocketPal
when the GGUF contains a
tokenizer.chat_templatekey, which this one does).
For app integration, the cleaner path is to call the model with the instruction as a single user turn (or as a raw text completion) and no history β which is natural for a translation app since each translation is independent anyway.
Validated offline on iPhone 11 (4 GB) via PocketPal: correct ENβJA and JAβEN including emergency and food/allergen phrases; UGM tokenizer confirmed intact on the device build.
Training Data Provenance
| Source | Pairs | License |
|---|---|---|
| Gemini distillation (gemini-3.1-pro-preview / gemini-2.5-flash) | ~2,550 | Synthetic, Google AI Studio free tier |
| Tatoeba | ~1,230 | CC BY 2.0 |
| BSD | dropped | CC BY-NC-SA 4.0 β excluded (non-commercial clause) |
Final training corpus: 6,458 train / 718 validation examples (bidirectional, sarashina2.2 instruct template). Domain distribution: food 42.5%, shopping 17.5%, transportation 15%, accommodation 15%, emergency 5%, general 5%.
License & Attribution
License: MIT. See LICENSE for this repository's terms.
This GGUF is built on two upstream MIT-licensed components. Their copyright and permission notices are preserved verbatim in the bundled license files below β these are the authoritative texts that must be carried forward in any distribution or deployment (e.g., in an app's About or credits screen):
LICENSE.sarashina2.2-0.5bβ Copyright (c) 2025 SB IntuitionsLICENSE.CAT-Translate-0.8bβ Copyright (c) 2026 CyberAgent AI Lab
Model Lineage
sbintuitions/sarashina2.2-0.5b (MIT β SB Intuitions, 2025)
β
βββ cyberagent/CAT-Translate-0.8b (MIT β CyberAgent AI Lab, 2026)
β
βββ LoRA fine-tune (travel domain adaptation)
β
βββ imatrix Q4_K_M GGUF (this repo β MIT, Kaito Ishiguro, 2026)
Cleared for: quantizing, re-hosting on HuggingFace, and shipping in a closed-source paid, subscription, or ad-supported app, provided both bundled license files above are preserved.
- Downloads last month
- 23
4-bit
5-bit
8-bit
Model tree for kaiish/capynode
Base model
sbintuitions/sarashina2.2-0.5b