How to use from
Hermes Agent
Start the MLX server
# Install MLX LM:
uv tool install mlx-lm
# Start a local OpenAI-compatible server:
mlx_lm.server --model "OsaurusAI/Flint-40B-A2.5B-JANG_4M"
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 OsaurusAI/Flint-40B-A2.5B-JANG_4M
Run Hermes
hermes
Quick Links

Osaurus

Runtime: Osaurus 0.25.25 or newer.

OsaurusAI/Flint-40B-A2.5B-JANG_4M

Flint 40B-A2.5B in 23.4 GB, with 96.2% top-1 agreement with the full-precision model. Against Recursive's own Apple Silicon release (RecursiveSI/flint-int4, 22.6 GB), it has 2.3ร— lower KL divergence from the original and 2.1 points higher top-1 agreement, at 0.8 GB more.

This is a JANG bundle of RecursiveSI/flint, Recursive's mixture-of-experts model for coding agents: 49 layers (2 dense, 47 MoE with 256 routed experts, top-6, plus an always-on shared expert), 39.8B parameters with about 2.5B active per token, 35 sliding-window and 14 full-attention layers, a 262k context, reasoning and native tool calls. Text only; the release has no MTP head or draft model.

  • Routed experts: affine 4-bit (group 64), rounded with GPTQ on per-expert Hessians after activation-aware (AWQ) scaling.
  • Everything else: affine 8-bit (group 64), GPTQ-rounded: attention, the shared experts, the two dense MLP layers and lm_head; the embeddings are 8-bit too. Routers, norms and the learned attention sinks stay bf16.
  • Size: 23.37 GB of model shards, 4.70 bits per weight over the 39.8B source parameters.

Quality vs the original model

The test set is 96 held-out sessions (253,155 teacher-forced positions), scored against the BF16 release with top-128 KL. Every scored assistant turn was written by Flint itself; some sessions continue real agent and terminal trajectories. They cover coding in dozens of languages, multi-round agent episodes with tool calls and injected environment errors, terminal sessions, math, science, finance, security, long documents and chat. None of these sessions were used for calibration.

size bits/weight mean KL โ†“ p99 KL โ†“ top-1 โ†‘ ฮ”NLL โ†“
RecursiveSI/flint (BF16, the reference) 79.6 GB 16 0 0 100% 0
RecursiveSI/flint-int4 22.6 GB 4.54 0.0481 0.730 94.1% +0.044
Flint-40B-A2.5B-JANG_4M 23.4 GB 4.70 0.0205 0.333 96.2% +0.017
Flint-40B-A2.5B-JANG_6M 32.8 GB 6.60 0.0057 0.090 98.0% +0.001
Flint-40B-A2.5B-JANGH2 13.2 GB 2.65 0.152 2.36 89.5% +0.149

ฮ”NLL is the change in negative log-likelihood of the actual held-out tokens. For scale: moving every embedding row of the BF16 model by one bf16 step already gives a mean KL of 0.0040 and 98.4% top-1, so even a negligible change to the weights lands near 98% top-1.

RecursiveSI/flint-int4 is Recursive's own MLX release: affine 4-bit (group 64) on every linear layer, including attention, the shared experts and lm_head, with 8-bit embeddings (bit widths measured from its shards). It was scored on the same sessions, the same way.

By area (mean KL ยท top-1):

area positions JANG_4M RecursiveSI/flint-int4
coding 180,831 0.0176 ยท 96.6% 0.0418 ยท 94.6%
reasoning 43,308 0.0255 ยท 95.4% 0.0568 ยท 93.2%
agentic 14,343 0.0270 ยท 95.4% 0.0665 ยท 92.7%
terminal 3,179 0.0115 ยท 97.2% 0.0363 ยท 94.8%
general, creative, long documents 11,494 0.0430 ยท 94.0% 0.0958 ยท 91.2%

Coding: review, refactor, test, port and debug tasks on real files plus generation across dozens of languages, and PyTorch. Reasoning: math, science, finance, office, networking and cybersecurity. Agentic: multi-round tool-use rollouts against a simulated environment (with errors, timeouts, empty or truncated results, permission and rate-limit failures, and mid-task user steering), next turns of real agent trajectories, and edge cases such as tools offered but not needed or prompt injection inside a tool result. Terminal: terminal-agent sessions with a native bash tool and next turns of real terminal and SWE-agent trajectories.

Reasoning and tool decisions

  • Closing reasoning: at the 151 points in the held-out transcripts where Flint closed its reasoning (the first </think> of a turn), the BF16 model's top choice is </think> at 148. JANG_4M: 146. RecursiveSI/flint-int4:
  • Starting a tool call: at the 74 points where Flint started a tool call (<tool_call>), the BF16 model's top choice is the call at 70. JANG_4M: 70. RecursiveSI/flint-int4: 70.

What's in the bundle

All bit widths below were measured from the shard bytes.

  • Routed experts (47 MoE layers ร— gate/up/down ร— 256 experts): affine 4-bit group 64. All 36,096 expert matrices were GPTQ-rounded.
  • 8-bit group 64: attention q/k/v/o (ร—49 each); shared-expert gate/up/down (ร—47 each); the dense MLP gate/up/down of layers 0โ€“1; lm_head; embeddings.
  • bf16: routers (ร—47), all RMSNorms including the per-head QK norms, and the attention sinks.

Serving contract

  • Reasoning: Flint has no thinking switch and no effort levels. It decides each turn whether to reason and writes <think>โ€ฆ</think> itself before the answer; thinking toggles have no effect.
  • Tool calls: the GLM-4.7 XML format, <tool_call>name<arg_key>k</arg_key><arg_value>v</arg_value></tool_call>. Tool results go back as <|observation|> turns.
  • Roles: system, developer, user, assistant and observation each have their own marker; the developer role is native, not an alias for system.
  • Sampling: temperature 1.0, top-p 0.95, top-k 20 (generation_config.json). Flint can reason for a long time on hard problems; allow at least 32k output tokens for them.
  • Stop tokens: <|end_of_text|>, <|user|>, <|observation|>, <|developer|>.
  • Context: 262,144 tokens. The 35 sliding-window layers keep only the last 513 tokens, so the KV cache grows on the 14 full-attention layers only (28 KiB per token).

Build details

  • Calibration: a corpus of 548 sessions (1.80M tokens) of Flint's own outputs, generated by an 8-bit copy of the BF16 model at Flint's default sampling settings. 452 sessions (1.44M tokens) are calibration; the 96 held-out sessions above are disjoint from them. Across the corpus, 134 sessions are multi-turn, with 355 tool rounds, 134 injected environment failures and 31 mid-task user steers; coding spans 47 programming languages; and Flint chose to reason in 871 of 918 assistant turns.
  • Hessians: per-expert input Hessians weighted by the router weight squared, and dense input Hessians for every other linear layer, from a layer-streamed run of the BF16 model.
  • AWQ: fold strength is searched per layer on the Hessian-weighted error, with zero (no fold) allowed. The search folded the down-projection inputs through each expert's up rows in 47 of 47 layers (strength 0.2โ€“0.4) and the expert inputs into the post-attention RMSNorm in 2, with the router and shared expert compensated exactly. The attention-input fold into input_layernorm was kept in 3 of 49 layers. Scales are powers of two, so every fold is exact in bf16.
  • GPTQ: expert Hessians shrink toward the layer's pooled statistics. On held-out data this edged out each expert's own Hessian on mean KL (0.02052 vs 0.02065; top-1 96.20% vs 96.23%). A never-worse-than-round-to-nearest guard applies per expert.
  • Verification: checked from the shards. Every tensor file is aligned, there is one index that matches the shards, every module's bits match the config, and no scale is NaN or infinite.
Downloads last month
385
Safetensors
Model size
40B params
Tensor type
U32
ยท
BF16
ยท
MLX
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for OsaurusAI/Flint-40B-A2.5B-JANG_4M

Quantized
(96)
this model