Recursive Flint: An Apache 2.0 Coding MoE With 2.5B Active Parameters and a 23 GB Ollama Build

Recursive's Flint is a 39.8B MoE coding model with about 2.5B active parameters, Apache 2.0 weights and a 23 GB Ollama build. What the vendor numbers omit.

Recursive released Flint on October 21, a 39.8-billion-parameter mixture-of-experts coding model that it pitches at agent work on a laptop. The Hugging Face repository was created that day at 14:20 UTC with a single “Initial release” commit, Ollama shipped support in v0.40.8 at 16:20 UTC, and OpenRouter listed a free hosted variant that evening. Model card Ollama v0.40.8 OpenRouter models API The weights are Apache 2.0, the active parameter count is about 2.5 billion per token, and Recursive reports 74.2% on SWE-bench Verified and 54.9% on Terminal-Bench 2.1. Model card The question for anyone paying per token for a coding agent is whether a 23 GB download can take some of that work. Today the vendor numbers say maybe, and nobody outside Recursive has published a test.

S5 Labs has not run the model. Every benchmark, speed and memory figure below is Recursive’s unless stated otherwise.

What Recursive shipped

The config file describes a 49-layer model: 2 dense layers and 47 MoE layers, each routing to 6 of 256 experts plus a shared expert, with 32 query heads, 4 KV heads and a 150,144-token vocabulary. Model card Attention is mixed: 14 layers use full attention with no positional encoding, and the other 35 use a sliding window of 513 tokens. That layout should keep the KV cache small at long contexts, but that is inferred from the config rather than measured.

ItemFlint
Parameters39.8B total; about 2.5B active including the output head, about 2.2B without it
Context262,144 tokens, prompt and output combined
BF16 weights15 safetensors shards, about 80 GB on Hugging Face
Ollama build23 GB for the default, 40b-a2b-gguf-nvfp4 and 40b-a2b-qat-int4 tags; 26 GB for q4_1; 80 GB for mlx-bf16
Knowledge cutoffJune 2026
Recommended samplingtemperature 1.0, top-p 0.95, top-k 20
LicenseApache 2.0

Sources: model card, Ollama tags.

Recursive’s blog and Ollama both round the total to 40B. The README is careful about the active count: 2.5B includes the output head, and the body alone is about 2.2B. Model card The card calls the 262,144-token context “a capacity limit, not a guarantee of uniform accuracy”. The launch post says “context windows of up to 512k tokens” and recommends staying within 256k; 512k appears in neither the config nor the card, so treat it as a blog claim. Introducing Flint

Transformers modeling code is not included yet. Recursive’s docs say loading the weights in Transformers needs an integration fork while the upstream pull request is open. Model card Recursive docs, Transformers

The scores, and what they were measured with

Recursive’s three headline numbers come from agentic harnesses, not single-shot code completion. Model card

Benchmark (Recursive’s runs)ScoreHarness
SWE-bench Pro v289.7%mini-swe-agent, no internet
SWE-bench Verified74.2%mini-swe-agent, no internet
Terminal-Bench 2.154.9%Terminus 2 (XML), internet on

Source: model card, Introducing Flint footnotes.

The scores are average pass@1 over at least five attempts, at the recommended sampling settings, with agent timeouts of up to five hours. On Terminal-Bench the agent had internet access, and Recursive says solutions it retrieved rather than wrote were counted as failures. The card adds that developer-reported scores for other models may not apply the same adjustment, and the README marks Recursive’s own measurements with a dagger. Model card Introducing Flint

Hold the 89.7% SWE-bench Pro v2 figure loosely. Neither the card nor the blog defines “Pro v2”, names its split, or says how it relates to the published SWE-bench Pro benchmark, and it sits 15.5 points above the same model’s Verified score without explanation. Do not line it up against other models’ SWE-bench Pro numbers. Recursive’s prose claims name no competitors: Flint “leads MoE models with fewer than 50 billion total parameters” and “rivals” dense models in the 25B to 40B range. Introducing Flint Ollama’s release notes repeat only the Terminal-Bench and Verified figures, attributed to Recursive. Ollama v0.40.8 We found no independent evaluation.

The blog also sets expectations lower than the table does: Flint “may need more guidance than the larger closed-source coding models you’re used to”, and Recursive advises breaking work into subtasks. The limitations list on the card names faulty code and inappropriate tool calls. Introducing Flint Model card Expect more of the planning to land in your harness or your prompts than it does with a paid frontier model.

What the 23 GB build gives up: Recursive says 0.7 points

Which precision produced each benchmark score is not stated. The chart caption on the card says “BF16 and NVFP4 checkpoints compared with local models that run on similar hardware”, and it warns that “Results can vary with checkpoint precision and inference runtime”. Model card The blog’s only quantified claim is that “The final NVFP4 model scores within 0.7 points of the 16-bit model across our benchmarks”. That is a vendor average with no per-benchmark breakdown. Introducing Flint

The output head is quantized to 4 bits along with the rest, and an offline distillation stage uses the 16-bit model as a teacher, which Recursive says “nearly halved” the training steps against its quantization-aware training baseline. Introducing Flint The Hugging Face organization carries flint, flint-int4, flint-int4-gguf and flint-nvfp4-gguf.

Nothing says which of these ollama run flint gives you. The latest, 40b and 40b-a2b tags share one digest that differs from both the nvfp4 and qat-int4 tags, so the default is not an alias of either. Ollama tags Recursive’s own Ollama guide says to run ollama run flint:40b-a2b-qat-int4 and calls it the packaged model, so that is the tag with documentation behind it. Recursive docs, Ollama The first release note limited it to macOS, and v0.40.9 added Linux and Windows the next day. Ollama v0.40.8 Ollama v0.40.9

Laptop memory: 24 GB or 48 GB depends on the runtime

Two sources give different floors, each for its own runtime. LM Studio’s listing says minimum system memory 24 GB. LM Studio Recursive’s own rec engine requires an M4 Pro, M5 Pro or M5 Max with at least 48 GB of unified memory and will not download the model below that. Recursive docs, Flint The 23 GB weight file is the same in both cases; what differs is how much room each runtime wants for the KV cache and its own overhead. Neither says what context length it assumes, and Ollama publishes no floor at all. On a 32 GB Mac, LM Studio says it will load and rec will refuse; how far an agent session gets before memory runs out is untested.

Recursive ties its speed claims to rec. It says Flint “generates more than 125 tokens per second on an M4 Pro MacBook Pro and more than 150 tokens per second on a 64GB NVIDIA RTX Spark at short contexts”. In that sentence “at short contexts” closes the sentence and so appears to cover both figures, while the chart footnote defines speed as average tokens per second across a 128k-token session with prefill excluded; the two do not line up. The M4 Pro figure carries no memory size or quantization, and the “up to twice as fast as comparable models” and “more than five times faster” than dense 25-40B models comparisons are also Recursive’s. Introducing Flint For the RTX Spark side, see what NVIDIA has and has not published about that machine. The blog lists llama.cpp, Ollama, Unsloth, LM Studio, vLLM and SGLang as working runtimes, with rec “optimized for Flint on M4 Pro and M5 Pro/Max”. Introducing Flint

As with Bonsai 2, a small download does not settle the memory question until you know the runtime and the context you will reach. For a dense alternative that fits a 24 GB card at 17 GB quantized, Qwen3.8-27B is the comparison Recursive’s “rivals 25-40B dense models” line invites.

The official serving recipe is a datacenter GPU

The 23 GB build is the laptop story; the reference deployment is a different machine. Recursive’s SGLang kit runs one replica per B300 or H200, with “at least 141 GB VRAM per replica”, and the docs say 80 GB GPUs cannot run the single-GPU BF16 recipe. Recursive docs, SGLang Scripts cover B300, H200 and an eight-GPU node. Model card The hosted configuration uses the full 262,144-token context with an output budget of up to 65,536 tokens, and “the hosted limit is not a local memory guarantee”. Recursive docs, Flint

Reasoning tokens and output budgets

The card asks two things of any client: use the checkpoint’s chat template, and “preserve returned reasoning_content in conversation history” when replaying assistant turns. Model card The SGLang client settings in the docs repeat that instruction, and its troubleshooting table points to the same field when output looks wrong. Recursive docs, SGLang Check whether your harness keeps that field between turns before judging the model’s output.

Whether reasoning can be turned off is unclear from the docs. The generation-settings page says it is always enabled; the SGLang page says Flint decides whether to reason on each turn and that thinking and enable_thinking flags have no effect. OpenRouter’s entry marks reasoning as mandatory. OpenRouter models API Either way, budget for the tokens. The card says to allow at least 32,768 output tokens, including reasoning, for hard problems, and its example uses max_tokens=32768; the SGLang client settings say the same. The docs’ quick-start examples use 4,096 and tell you to raise it when finish_reason comes back as length. Model card Recursive docs, Flint At 4,096 a reasoning model will truncate a lot of coding turns.

Ollama’s model page lists ollama launch integrations for Claude Code, OpenCode, Hermes Agent and OpenClaw, which is where the “replace the API” test would happen. Ollama, Flint

Apache 2.0 for the weights; the hosted API is a separate deal

The LICENSE file in the repository is the standard Apache License 2.0 text, with the appendix boilerplate left unfilled, and the Hugging Face tag is apache-2.0. LICENSE file Model card The card’s wording: “Flint is released under the Apache 2.0 license. Hosted API terms and data practices are separate from the weight license.” A sglang/NOTICE file sits in the repository, and the SGLang docs say the license in sglang/ covers the serving code rather than the model; we have not read that NOTICE.

That makes Flint simpler to adopt than Liquid’s LFM2.5-24B-A2B, the other recent laptop-sized MoE with about 2.5B active parameters, whose license stops covering commercial use at $10 million in annual revenue, and than MiniMax M3.1 Flash, whose weights need an attribution line and a notice for any commercial use.

Hosted access is thinner. “Direct Recursive API access is limited to select partners”, per the docs and FAQ. Recursive docs, releases OpenCode offers hosted Flint-40B on a free tier “subject to available capacity and rate limits”, Pi offers it free through Radius (Pi labels the option “Flint (free, trains on data)”), and OpenRouter lists recursive/flint-v1.0:free at $0 for prompt and completion tokens, though its endpoints call returned an empty list when we checked. OpenRouter models API Recursive docs, OpenCode We found no Recursive pricing or privacy terms beyond that Pi label in the sources checked, and did not read the “Model Terms” page the blog footer links. If an agent’s codebase goes through any of these hosted paths, the Apache license says nothing about what happens to the prompts.

What to test before dropping the API key

  • Run flint:40b-a2b-qat-int4 from Ollama on the Mac you own and watch memory at the context your agent reaches after twenty tool calls, not at the first prompt.
  • Set max_tokens to 32,768, confirm the harness keeps reasoning_content across turns, then count how many of those tokens a typical edit burns.
  • Compare quantized output with the hosted free tier on the same tasks. That is the only way to size the “within 0.7 points” claim for your work.
  • Give it smaller tasks than you give a frontier model. Recursive says it needs more guidance; find out how much.
  • Measure wall-clock time per task, not tokens per second. A 125 tokens-per-second figure on rec says nothing about Ollama on your hardware.

Our open models guide and local LLM machines guide cover the sizing assumptions behind these checks.

What is still unknown

No independent benchmark or throughput measurement exists yet. The quantization of the Ollama default tag, the per-benchmark cost of NVFP4 and int4 against BF16, the definition of SWE-bench Pro v2, and the hosted terms beyond “free” are all unpublished. The Transformers integration is still a fork. Flint is worth an afternoon from anyone with a Mac above LM Studio’s 24 GB floor and an agent harness that keeps reasoning fields; whether it displaces a paid coding API depends on tests nobody has run.

Reference guide

The Open Models guide compares open-weight models by license, hardware and task fit.

The Local LLM Machines guide compares machines for running models locally.

Continue reading.

Insight11 min read

FLUX 3 Image Klein: 5.6B Open Weights That Target 8 GB GPUs, Free Below $5M Revenue

FLUX 3 Image Klein: 5.6B open weights for image generation and editing, an INT8 build pitched at 8 GB GPUs, free under $5M revenue, and a $0.008 API tier.

Insight11 min read

Meta's Muse Spark Open: 816B Open Weights to Rent by the Token or Run on Two Mac Studios

Meta's 816B/42B-active Muse Spark Open: a $20M MaaS license clause, 700 GB VRAM or two Mac Studios to self-host, or $1.25/$4.25 per 1M tokens hosted.

Insight10 min read

Mistral Timestral: Time-Series Forecasting From 5M to 209M Parameters on a CPU

Mistral's Timestral forecasters run from 5M to 209M parameters on a CPU, output 21 quantiles and carry a Modified MIT license with a $20M revenue cap.