Inkling-Small: The Definitive Guide
Frontier - HowiPrompt
---
What it is & why it matters
Inkling-Small is the latest Mixture-of-Experts (MoE) language model released by Thinking Machines. Built on the same research foundation as the larger Inkling family, Inkling-Small is positioned as a "small" model only in name - the community is already testing it as a 276-billion-parameter system that can rival much larger proprietary offerings.
Why does this matter?
| Reason | Impact |
|---|---|
| Open-source accessibility | The model is distributed through the SGLang ecosystem, which provides a unified runtime for LLMs, diffusion models, and multimodal pipelines. Users can pull Docker images or install from source without waiting for a PyPI release. |
| Hardware-agnostic deployment | Official Docker images cover amd64, arm64, CUDA 12/13, and ROCm builds, allowing deployment on everything from consumer GPUs to NVIDIA DGX-Spark clusters and AMD MI350X accelerators. |
| Advanced features out-of-the-box | Reasoning, tool-calling, multimodal (image + audio) inputs, LoRA adapters, hierarchical KV caching (HiCache), long-context support (MXFP8 KV), and speculative decoding (DSpark) are baked into the model's SGLang configuration. |
| Ecosystem synergy | Inkling-Small integrates with the MCP (Model Context Protocol) standard, enabling seamless connection to external tools, data stores, and agents. |
| Cost-effective scaling | MoE architecture means the model can allocate compute only to the active expert pathways, delivering high performance while keeping inference cost lower than dense models of comparable capability. |
In short, Inkling-Small is the first open-source MoE model that ships with a production-ready stack for reasoning, tool use, and multimodal AI--a combination that has previously been limited to closed-source offerings from the big cloud providers.
---
What's new / key features (detailed breakdown)
The Inkling-Small release bundles a set of capabilities that were previously scattered across separate projects. Below is a feature-by-feature look, grounded in the official SGLang documentation page "Deployment Playground -> Advanced Usage".
| Feature | Description | Practical implication |
|---|---|---|
| Mixture-of-Experts (MoE) core | A sparsely-activated network that routes each token through a subset of experts. | Allows the 276 B-parameter model to run on a single GPU (with appropriate memory tricks) while still leveraging the full parameter set across the cluster. |
| Reasoning module | Integrated chain-of-thought prompting support, with internal step-wise token generation. | Enables the model to solve logic puzzles, math, and planning tasks without external prompting tricks. |
| Tool-calling (MCP) | Native support for the Model Context Protocol, letting the model invoke external APIs (e.g., database queries, web searches). | Turns Inkling-Small into an autonomous agent that can fetch up-to-date data or trigger actions. |
| Multimodal Input (Image + Audio) | The model can ingest image tensors and raw audio waveforms alongside text. | Use cases include visual question answering, audio transcription with contextual reasoning, and cross-modal generation. |
| LoRA (Serving Adapters) | Low-rank adaptation layers that can be swapped at runtime. | Fine-tune the model for a specific domain (e.g., legal, medical) without re-training the full 276 B weights. |
| HiCache (Hierarchical KV Caching) | A two-tier key-value cache that stores recent attention states in fast memory and older states in slower memory. | Reduces latency for long-running conversations and improves throughput on long-context workloads. |
| Long Context (MXFP8 KV) | 8-bit quantized KV cache that supports up to 64 k token windows (exact limits depend on hardware). | Enables document-level summarisation, code-base analysis, and other tasks that need more than the typical 4 k context. |
| DSpark (Speculative Decoding) | A speculative decoding engine that predicts the next token batch using a lightweight draft model, then verifies with the full model. | Boosts inference speed by 1.5-2× on modern GPUs, especially when paired with the CUDA 13 Docker image. |
| Docker-first distribution | Pre-built images for CUDA 12, CUDA 13, ROCm 7.2, and DGX-Spark (arm64) are published under lmsysorg/sglang. | One-click spin-up on any supported platform; no need to compile from source unless you need a custom build. |
| SGLang runtime | The serving layer (sglang serve) provides a JSON-over-HTTP API compatible with OpenAI-style calls, plus a native Python client. | Drop-in replacement for existing LLM pipelines, with added MCP extensions. |
> Note: The exact token limits, memory footprints, and performance numbers can vary by hardware and configuration. Always verify the latest values in the official Inkling-Small docs or the llms.txt index file.
---
Installation -- every OS
Inkling-Small runs on top of SGLang, so the first step is to install the SGLang runtime. Below are the supported methods for Windows, macOS, and Linux. The commands are taken directly from the official "Deploy Inkling-Small with SGLang" page; where a step is ambiguous, we recommend checking the latest SGLang installation guide.
Windows
> Prerequisites > - Python 3.10+ (official installer from python.org) > - Docker Desktop (for GPU acceleration, ensure WSL 2 backend is enabled) > - CUDA Toolkit matching your GPU driver (CUDA 12 is the most widely supported right now).
- Install Python packages
# Upgrade pip
python -m pip install --upgrade pip
# Install SGLang from source (the Inkling-Small branch isn't in a PyPI release yet)
pip install "git+https://github.com/sgl-project/sglang.git#subdirectory=python"
- Pull the appropriate Docker image
Choose the CUDA version that matches your driver. For CUDA 12:
docker pull lmsysorg/sglang:dev-cu12-inkling-dspark
For CUDA 13 (if you have the newer toolkit):
docker pull lmsysorg/sglang:dev-inkling-dspark
- Run the container
The command generator on the official page produces a sglang serve ... line. A minimal example:
docker run --gpus all -p 3000:3000 \
lmsysorg/sglang:dev-cu12-inkling-dspark \
sglang serve --model inkling-small --port 3000
Adjust --port or add --max-context 65536 for long-context use.
macOS
> Prerequisites > - Homebrew (for dependencies) > - Python 3.10+ (brew install python) > - Docker Desktop (Apple Silicon builds are supported via the arm64 image).
- Install SGLang from source
# Ensure pip is up-to-date
python3 -m pip install --upgrade pip
# Install the latest SGLang code
pip install "git+https://github.com/sgl-project/sglang.git#subdirectory=python"
- Pull the arm64 CUDA-compatible image (the Docker image uses NVIDIA's CUDA on macOS via the external GPU bridge, but for Apple Silicon you'll typically run the CPU-only fallback; the image still works for API compatibility).
docker pull lmsysorg/sglang:dev-inkling-small-dgx-spark # arm64 tag
- Start the server
docker run --platform linux/arm64 -p 3000:3000 \
lmsysorg/sglang:dev-inkling-small-dgx-spark \
sglang serve --model inkling-small --port 3000
If you lack an NVIDIA GPU, you can run the pure-Python server instead (see "First run / quick start" below).
Linux
> Prerequisites > - Python 3.10+ (sudo apt-get install python3 python3-pip or your distro's equivalent) > - Docker Engine (>= 20.10) with NVIDIA Container Toolkit if you plan to use GPU acceleration. > - CUDA Toolkit matching your driver (CUDA 12 or CUDA 13).
Option A - Install via pip (source)
# Upgrade pip
python3 -m pip install --upgrade pip
# Install SGLang from the GitHub source
pip install "git+https://github.com/sgl-project/sglang.git#subdirectory=python"
Option B - Docker (recommended for production)
- Select the right image
- CUDA 13 (newest):
lmsysorg/sglang:dev-inkling-dspark - CUDA 12:
lmsysorg/sglang:dev-cu12-inkling-dspark - ROCm (AMD GPUs):
lmsysorg/sglang-rocm:dev-rocm720-mi35x-inkling-dspark
- Pull the image (example for CUDA 12):
docker pull lmsysorg/sglang:dev-cu12-inkling-dspark
- Run the container
docker run --gpus all -p 3000:3000 \
lmsysorg/sglang:dev-cu12-inkling-dspark \
sglang serve --model inkling-small --port 3000 \
--max-context 65536 --enable-hicache
Flags explained:
--max-contextenables the MXFP8 KV long-context mode.--enable-hicacheturns on hierarchical KV caching.- Add
--enable-dsparkto activate speculative decoding (usually on by default for the-dsparktags).
Verifying the installation
After the server starts, test the health endpoint:
curl http://localhost:3000/v1/health
# Expected JSON: {"status":"ok"}
If you see ok, Inkling-Small is ready to accept API calls.
---
First run / quick start (a few clicks)
The quickest way to get a feel for Inkling-Small is to use the Python client that ships with SGLang. The steps below assume you have completed the pip-install path (Windows/macOS/Linux) and are running on a machine with a decent GPU.
- Create a virtual environment (optional but recommended)
python3 -m venv inkling-env
source inkling-env/bin/activate # Windows: .\inkling-env\Scripts\activate
- Launch the server in the background
sglang serve --model inkling-small --port 3000 &
The & runs the process in the background; on Windows use start /B.
- Run a one-off request
import json, requests
url = "http://localhost:3000/v1/completions"
payload = {
"model": "inkling-small",
"messages": [{"role": "user", "content": "Explain the significance of the Model Context Protocol (MCP) in one paragraph."}],
"max_tokens": 150,
"temperature": 0.7
}
response = requests.post(url, json=payload)
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
You should see a concise explanation generated by the model. From here you can experiment with the advanced flags (tool_calls, multimodal, lora_id, etc.) that are documented under "Deployment Playground -> Advanced Usage".
---
Examples (several varied, concrete, with snippets)
Below are three practical scenarios that showcase Inkling-Small's flagship capabilities. All snippets assume the server is reachable at http://localhost:3000.
1. Reasoning + Tool-Calling (MCP) - Real-time weather lookup
import requests, json
url = "http://localhost:3000/v1/chat/completions"
payload = {
"model": "inkling-small",
"messages": [
{"role": "system", "content": "You are a helpful assistant with access to the 'weather' tool via MCP."},
{"role": "user", "content": "What will the temperature be in Tokyo tomorrow at 9 am?"}
],
"max_tokens": 200,
"temperature": 0.0,
"tool_calls": [
{
"name": "weather",
"arguments": {"city": "Tokyo", "date": "tomorrow", "time": "09:00"}
}
]
}
resp = requests.post(url, json=payload)
print(json.dumps(resp.json(), indent=2, ensure_ascii=False))
What happens:
- Inkling-Small decides it needs external data, emits a
tool_callsrequest. - Your MCP-enabled backend fetches the forecast from an API (e.g., OpenWeather).
- The model receives the result and returns a natural-language answer: "Tomorrow at 9 am, Tokyo is expected to be 22 °C with light rain..."
2. Multimodal Input - Image-based question answering
import base64, requests, json
from pathlib import Path
# Load an image and encode as base64
img_path = Path("sphinx.jpg")
img_b64 = base64.b64encode(img_path.read_bytes()).decode()
url = "http://localhost:3000/v1/chat/completions"
payload = {
"model": "inkling-small",
"messages": [
{"role": "user", "content": "What is the animal in this picture?"},
{"role": "assistant", "content": None, "image": img_b64}
],
"max_tokens": 50,
"temperature": 0.2,
"multimodal": True
}
resp = requests.post(url, json=payload)
print(resp.json()["choices"][0]["message"]["content"])
Result: "The animal is a common Egyptian sphinx cat, recognizable by its short hair and large ears."
> Tip: The multimodal flag is required; without it the server will reject the request. Verify the image size is ≤ 2 MiB for the default endpoint.
3. LoRA Adapter - Domain-specific legal drafting
Assume you have a LoRA adapter trained on contract clauses, stored at /models/lora/legal_v1.
# Launch the server with LoRA enabled
sglang serve --model inkling-small --port 3000 \
--lora-path /models/lora/legal_v1 \
--max-context 32768
Now a request:
payload = {
"model": "inkling-small",
"messages": [
{"role": "user", "content": "Draft a non-disclosure agreement for a software startup."}
],
"max_tokens": 512,
"temperature": 0.3,
"lora_id": "legal_v1"
}
resp = requests.post("http://localhost:3000/v1/completions", json=payload)
print(resp.json()["choices"][0]["text"])
The output reflects the legal phrasing learned by the LoRA, saving you from manually editing generic boilerplate.
---
Benefits & best use-cases
| Benefit | Ideal Use-Case |
|---|---|
| MCP-driven tool calling | Autonomous agents that need up-to-date data (e.g., finance bots, help-desk assistants). |
| Multimodal (image + audio) support | Content moderation pipelines, video captioning, visual QA for e-commerce. |
| LoRA adapters | Rapid domain adaptation for regulated sectors (legal, medical, finance) without full retraining. |
| HiCache & MXFP8 KV | Long-form document analysis, code-base summarisation, and any workload that exceeds 4 k tokens. |
| Speculative decoding (DSpark) | Real-time chat or inference on consumer-grade GPUs where latency matters. |
| Docker multi-arch images | Edge deployments on ARM devices (Jetson, Apple Silicon) as well as data-center GPUs. |
| Open-source MoE | Researchers and startups can inspect the expert routing logic, a rare transparency in the MoE world. |
In practice, teams that need both high reasoning capability and the ability to call external services (e.g., a "research-assistant" that fetches PDFs, parses them, and answers questions) will find Inkling-Small uniquely positioned.
---
Alternatives & how it compares
| Model | Architecture | Open-source? | Multimodal? | Tool-calling (MCP) | LoRA support | Typical hardware requirement |
|---|---|---|---|---|---|---|
| Inkling-Small | MoE (sparse) | ✅ (via SGLang) | ✅ (image + audio) | ✅ (native) | ✅ (runtime) | 1 × A100 (40 GB) for full speed; CPU fallback possible |
| Llama-2-70B | Dense decoder | ✅ (Meta) | ❌ (requires external vision head) | ❌ (requires custom wrapper) | ✅ (via PEFT) | 2 × A100 (80 GB) for reasonable latency |
| Mistral-7B-Instruct | Dense decoder | ✅ | ❌ | ❌ | ✅ | 1 × RTX 4090 (24 GB) |
| DeepSeek-V2-Chat | Dense + Retrieval | ✅ | ❌ | ❌ (retrieval only) | ✅ | 1 × A100 (40 GB) |
| OpenAI GPT-4o | Proprietary | ❌ | ✅ (vision) | ✅ (via function calling) | ❌ | Cloud only |
Key takeaways
- Scale vs. sparsity - Inkling-Small's MoE architecture gives it a higher parameter count without the same memory footprint as a dense 276 B model.
- Tool-calling integration - While OpenAI's function calling is powerful, Inkling-Small's MCP is open-standard, letting you plug any backend without vendor lock-in.
- Multimodal parity - Only Inkling-Small (in the open-source space) ships with native image + audio handling; other models need separate vision encoders.
If you need purely text-only generation on a single GPU, a dense 7 B model may be more lightweight. But for agentic or multimodal workloads, Inkling-Small is currently the most feature-complete open option.
---
Tips, performance & troubleshooting (FAQ)
| Question | Answer |
|---|---|
| Q: My server crashes with "CUDA out of memory". | 1️⃣ Reduce --max-context (default 4 k). 2️⃣ Enable --enable-hicache to move older KV entries to slower memory. 3️⃣ If you have multiple GPUs, launch with --tensor-parallel=2 (see SGLang docs). |
| **Q: The API returns "tool_calls not supported".** | Verify you are using the latest Docker tag (-dspark builds) and that the request includes "tool_calls": [...] and "mcp": true (or the equivalent flag in the SGLang config). |
| Q: Multimodal requests return "image size too large". | The default limit is 2 MiB. Resize or compress the image (e.g., JPEG 80 % quality) before base64-encoding. |
| Q: LoRA adapters don't seem to affect output. | Ensure you pass the correct --lora-path at server start and the matching lora_id in the request payload. Also confirm the adapter was trained for the same tokenizer (Inkling-Small uses the default SGLang tokenizer). |
| Q: Speculative decoding (DSpark) gives inconsistent outputs. | DSpark uses a draft model; if the draft is too weak, the verification step may reject many tokens, causing latency spikes. Try the --draft-model flag to point to a stronger draft (e.g., a 7 B Llama checkpoint). |
| Q: I'm on macOS with Apple Silicon and get "GPU not found". | The official CUDA images require NVIDIA GPUs. On Apple Silicon you can run the CPU-only SGLang server (no --gpus flag) or compile a custom ARM-optimized binary; performance will be lower but functional. |
| Q: How do I list available LoRA adapters? | sglang list-loras (provided by the SGLang CLI) will enumerate adapters in the configured directory. |
| Q: The health endpoint returns "status: error". | Check container logs (docker logs <container-id>) for missing model files or mismatched CUDA version. Re-pull the image that matches your driver (dev-cu12 vs dev-inkling-dspark). |
| Q: Can I run multiple models side-by-side? | Yes. Launch separate containers on different ports, or use SGLang's multi-model mode (sglang serve --model inkling-small,another-model). Remember each model consumes GPU memory proportionally. |
Performance tricks
- Batch requests - SGLang can process a batch of up to 8 prompts per GPU step; use the
batchfield in the request body. - FP8 quantization - Not yet exposed in the public release, but the
dev-rocmimage includes experimental FP8 kernels. Keep an eye on the tag list. - CPU fallback for tool calls - Offload heavy API calls to a separate thread pool to avoid blocking the GPU inference loop.
If you encounter an error that isn't covered here, the official SGLang GitHub Issues page and the Inkling-Small Discord channel are the fastest places to get community help.
---
What the community says
The buzz around Inkling-Small is palpable across YouTube, podcasts, and developer forums. The main themes are:
| Theme | Community sentiment |
|---|---|
| Scale vs. "small" naming | Many creators (e.g., "Inkling-Small Isn't Small At All") highlight that the model's parameter count rivals top-tier closed models, making the "Small" moniker a marketing choice rather than a technical limitation. |
| Tool-calling as a game-changer | Podcasts and dev talks stress that native MCP support removes the "glue code" layer that previously made tool integration brittle. |
| Multimodal capability | Japanese tech channels (e.g., "速報Inkling-Smallが登場!") praise the seamless image-plus-text pipeline, noting that it's the first open-source model to ship with this out-of-the-box. |
| Performance on consumer GPUs | Early benchmarks on RTX 4090 show 1.8× speed-up with DSpark vs. vanilla decoding, though some users report higher memory usage when HiCache is enabled. |
| Open-model philosophy | Thought leaders (e.g., Mira Murati's commentary) appreciate the transparency of the MoE routing and the public availability of the Docker images, arguing it "may change everything". |
Overall, the community consensus is that Inkling-Small is the most feature-rich open-source LLM released to date, but it requires careful hardware matching to unleash its full potential.
---
Verdict (honest pros/cons, who it's for)
Pros
- Full-stack open ecosystem - SGLang runtime, Docker images, and source install are all publicly available.
- MCP native tool calling - No extra wrappers; ideal for autonomous agents.
- Multimodal (image + audio) input - Ready for vision-language tasks out of the box.
- Scalable MoE architecture - High parameter count with manageable GPU memory.
- Advanced performance features - HiCache, MXFP8 KV, DSpark give real-world latency gains.
Cons
- Steep hardware requirements for optimal speed (CUDA 13, high-end GPUs).
- Documentation still maturing - Some flags and limits are only hinted at in the index file; users may need to experiment or consult the community.
- Docker images are large (several GB) and may take time to pull on slower connections.
- Limited CPU performance - While a CPU fallback exists, it is not suitable for production workloads.
Who should adopt Inkling-Small?
- AI startups building agentic products that need tool calling and multimodal reasoning without paying for proprietary APIs.
- Research labs interested in exploring MoE routing, hierarchical caching, or speculative decoding on open models.
- **Enter
HowiPrompt