read first

LFM3-1.7B: a 1.1 GB agent model on a Mac

Where a 2B model takes a 9B model's seat

LFM3-1.7B handles text among six 2B-class models. The 4-bit file is 1.1 GB, so a Mac or a phone runs it, and filling 128K of context costs 1.6 GB of cache. It trades blows with 9B models on tool use and long tasks, but coding and knowledge lag.

Requirements and key details
  • The 4-bit file is 1.1 GB.
  • Filling 128K of context costs 1.6 GB of KV cache.
  • It trades blows with 9B models on tool use and long tasks.
  • Coding and knowledge still trail the 9B class.

Why a 2B model aims at a 9B seat

Liquid AI published LFM3-1.7B on October 27. Six 2B-class models branch from one backbone, and this one handles text: text goes in, answers and tool calls1 come out.

The way it saves size is the story. Of 24 layers, 13 are short convolutions that read only the last few tokens2, 5 are sliding-window attention3 with a 256-token window, and only 6 are global attention, so long context costs far less.

Pre-training used 22T tokens, and the final 3.5T was a mid-training stage weighted toward agentic traces and tool calls, which is why a 2B model scores this high on tool use.

Six models branched from one backbone
ModelSizeWhat it does
LFM3-1.7B1.7BText and tool calls
LFM3-VL-2B1.9BImage and video understanding
LFM3-Audio-2B2BSpeech recognition, synthesis and dialogue
LFM3-Omni-2B2.2BSees, listens and speaks
d1-2B, d1-Omni-2B2BSpecialised for decisions
A small robot device connected to browser, calendar, and message panels
Agents live or die on how accurately they call tools, and a 2B model now wins some of those fights.

Start from the file and the memory

Start with the file you download: at 4 bits it is a little over 1 GB, so a phone or a Raspberry Pi 5 runs it.

The window opens to 256K, and filling 128K costs 1.6 GB of KV cache4 where Qwen3.5-4B needs 4.3 GB and MiniCPM5-2B 5.6 GB, so the gap shows in long-context work.

Add 1.1 GB of weights to 1.6 GB of cache and you stay under 3 GB, which leaves room on an 8 GB Mac to keep the model loaded while you work.

Which file to download
File nameFile sizeWhen to use
Q4_K_M1.1GBThe default first download
Q8_01.85GBWhen you want a little more quality
BF163.47GBFor conversion and checks
Model weights, context, tool results, and system headroom sharing a finite shelf
A 2B model still costs memory, and the context cache often outweighs the weights.

Serve it with llama.cpp

Pull the GGUF5 and open it with llama-server to get an OpenAI-style API6. Set the window with --ctx-size and put the whole model on the GPU7 on a Mac with --n-gpu-layers 99.

Download and serve
hf download LiquidAI/LFM3-1.7B-GGUF LFM3-1.7B-Q4_K_M.gguf --local-dir ./lfm3

llama-server -m ./lfm3/LFM3-1.7B-Q4_K_M.gguf \
  --ctx-size 32768 --n-gpu-layers 99 --jinja \
  --temp 0.1 --top-k 50 --repeat-penalty 1.1 \
  --port 8080

Sampling is temperature 0.1, top_k 50 and repetition penalty 1.1 for chat and tool use, and temperature 1.0, top_p 0.95, top_k 20 for maths and science.

Tool calling under llama.cpp needs --jinja, because the chat template shipped with the model is what injects the schemas and lets the response be read back as a call. If memory runs short, lower --n-gpu-layers and offload8 part of the model at the cost of slower decoding9, so decide first whether to cut context or layers.

Wire it into an agent

Pass function schemas through tools and the template emits XML-style calls. Append the result as a tool message and keep sending the schemas on later requests.

With thousands of tools, defer_loading keeps their definitions out of the prompt10 until a search tool returns the names. Even a 256K window fills fast if every schema rides along.

Post-training had harnesses such as Hermes Agent, Pi and OpenClaw in mind, and matching the tool-result shape your harness expects is what keeps the loop stable.

A desk where an agent laptop connects to a local inference server on a separate device
Harness and model can be separate: the laptop calls tools while another machine does the compute.

Numbers measured on macOS

MacPaw compared the two on 65 everyday tasks inside real macOS environments: LFM3-1.7B reached 64 percent task success against 48 percent for Qwen3.5-2B, used 58 percent fewer tokens per task, and got stuck in under 1 percent of attempts where the comparison model hit 15 percent.

On-device speed came from llama.cpp at Q4_0 with a 32K window: 1.8 to 2.8 times faster decoding than the next model, with the smallest memory footprint, across two phones, a Raspberry Pi 5, an M4 Max and Ryzen AI.

These are vendor and partner measurements. Matching them locally means matching the quantization11 and the window, and a different harness moves the success rate.

Where it falls short

It is not recommended for agentic coding or complex multi-step reasoning; the model card says so, and SWE-bench Verified lands at 43.40 against 51.20 for Qwen3.5-9B.

Knowledge is narrow too: Humanity's Last Exam scores 7.17 without tools and 13.90 with search, so fill knowledge by retrieval and let the model judge and call.

The licence is the LFM Open License v1.0, which is not an open-source licence, so read the commercial terms yourself.

Scroll sideways to compare all columns.

The comparison published on the model card
BenchmarkLFM3-1.7BLFM2.5-2.6BQwen3.5-9B
LiveClaw (agent)45.6014.7035.77
BFCL V4 (tool use)71.3955.8962.83
SWE-bench Verified43.4018.0051.20
AA-LCR (long context)52.836.0062.00

Terminology notes

  1. Tool call — A structured request from a model for an external function such as reading a file, searching, or running a command. The agent runtime and its permission settings decide whether the request is actually executed.

    Back to the text
  2. Token — A unit into which a model divides input or output for processing.

    Back to the text
  3. Attention — A neural-network operation that calculates relationships between input tokens and combines information from each position into the current representation.

    Back to the text
  4. KV cache — Memory that stores attention keys and values from earlier tokens for reuse during later token generation. Its size depends on context length and batch size.

    Back to the text
  5. GGUF — A file format for model data, widely used by llama.cpp-based tools.

    Back to the text
  6. API — A defined interface that lets other code call a program’s functions.

    Back to the text
  7. GPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.

    Back to the text
  8. Offloading — Moving some model data from GPU memory to system RAM or storage when capacity is limited. This adds data transfer.

    Back to the text
  9. Token decoding — The stage that generates successive output tokens using the input and the response produced so far.

    Back to the text
  10. Prompt — The input text sent to a model. For generative models it describes the desired result and strongly shapes the output.

    Back to the text
  11. Quantization — A way to represent model weights or values with fewer bits, reducing storage and memory use. The coarser representation can also affect accuracy.

    Back to the text

Frequently asked questions

What should you check first in this article?
LFM3-1.7B handles text among six 2B-class models. The 4-bit file is 1.1 GB, so a Mac or a phone runs it, and filling 128K of context costs 1.6 GB of cache. It trades blows with 9B models on tool use and long tasks, but coding and knowledge lag.
How much memory does it need?
Add 1.1 GB of weights to 1.6 GB of cache and you stay under 3 GB, which leaves room on an 8 GB Mac to keep the model loaded while you work.
When is it better not to choose this?
It is not recommended for agentic coding or complex multi-step reasoning; the model card says so, and SWE-bench Verified lands at 43.40 against 51.20 for Qwen3.5-9B.
Where can you check the conditions and sources?
The licence is the LFM Open License v1.0, which is not an open-source licence, so read the commercial terms yourself.