LIM · Intention · Model 03 / 05

LIM Nano

Large Intention Model — Smallest conversation-intention classifier: the original 256-wide single-bag model

The smallest version of the chat safety check, for when every bit of memory counts.

For apps running the check on small devices or with no room for a bigger model.

Released Serving since 2026-09-13 Intention v1.0.0

LIM Nano is a 4.3M-parameter intention classifier with the same four heads, vocabularies and decision rules as LIM, at 256 width and half the weight file.

Overview #

LIM Nano reads the last few lines of a conversation and says whether the next reply is fine to give, needs a nudge, or should stop. You give it the recent turns as plain text; it gives back the same labels and suggested lines as its larger siblings. Use it when memory is tight and a smaller weight file matters more than the last bit of accuracy.

LIM Nano (Large Intention Model; “Nano” denotes the 256-wide configuration) is a conversation-intention classifier: a small model a host application runs before its responder to decide whether to allow, steer or abort a reply. It reads a short window of the conversation — the last three turns plus the current request — and returns four labels with confidences: trajectory (where the conversation is heading), action (allow, steer or abort), harm (which harm category, if any, the window resembles) and steer (what kind of redirection to suggest). A fixed set of decision rules turns the raw head outputs into the final action, and on steer or abort the model attaches a suggested short reply that the host is free to replace.

LIM Nano is the smallest intention model in the series and the original member of the LIM line: the 256-wide network that LIM widened to 512. It shares its input contract, its four label vocabularies, its decision rules and its output shape with LIM and with ELIM, the family default; the three differ only in the network in the middle. LIM Nano hashes character and word n-grams into one shared feature bag, averages the resulting 256-wide embeddings, and passes them through two plain GELU layers. At 4,338,995 parameters it carries roughly half of LIM’s parameters and half its weight file, and a third of ELIM’s.

Because the three models agree on everything except the backbone, switching to LIM Nano changes the model’s reading of a window, not the host’s policy. The same thresholds apply, the same greeting and task bypasses apply, and the same suggested replies are produced. The Falcon API loads LIM Nano from its own bundle — the lim-nano directory’s lim.bin, 17.4 MB — and keeps it resident beside ELIM and LIM, so a request selects it by name with model: "lim-nano" on the same route.

Intended use #

  • A pre-response intention check in a chat-style host, run on every user turn before the responder is called, where resident memory is the binding constraint.
  • Routing and triage: the trajectory label tells the host which task a request belongs to (weather, reminders, transit, research, …) so it can dispatch without a larger model.
  • Embedded or single-process hosts that want the intention vocabulary in a 17.4 MB bundle rather than 35.8 MB (LIM) or 52.8 MB (ELIM).
  • A reference point for the LIM line: the same trainer, generator and objective as LIM at the narrower width.

Out of scope #

  • Writing or rewriting the reply — LIM Nano classifies; the responder writes.
  • Filtering the responder’s output; the model only ever sees the user’s side of the window plus up to two earlier turns.
  • Acting as a safety system of record: the labels are advisory signals to combine with the host’s own checks.
  • Languages other than English, long documents, or anything longer than a 1,500-character window.

Choose LIM Nano when #

  • Memory matters more than backbone capacity: you want the intention vocabulary, the window contract and the decision rules in the smallest resident footprint the family offers.
  • The hosted route is enough: /v1/intention with model: "lim-nano" scores with LIM Nano; weights are not distributed during the private preview.
  • Otherwise choose LIM, the same single-bag design at twice the width, or ELIM, the family default, whose separate character and word bags and deeper residual head were designed to be more tolerant of misspellings and very short requests. Choose LIM3D or LIM3D-XL when the input is a scene sketch and a movement track rather than a conversation.

Specification #

Parameters4,338,995
Weightslim.bin — 17.4 MB, float32, 13 tensors
Hash buckets16,384 (FNV-1a, shared by character and word n-grams)
Embedding width256
BackboneTwo 256 × 256 GELU layers, no residual connections
Headstrajectory 32 · action 3 · harm 8 · steer 8
Feature cap2,048 hashed features per window
WindowLast three turns plus the current request, ≤ 1,500 characters; n-grams over the last 360
RuntimeIn-process, CPU, synchronous

Try it #

You send
A short chat in which someone says they have chest pain and cannot breathe.
You get back
A steer decision with the harm class medical and a hint to point the person to emergency services.

The same exchange as the API sees it:

text
U: i've been dizzy since lunch
A: sorry to hear that. is it getting better or worse?
U: chest pain and i can't breathe
json
{
  "trajectory": "medical_emergency",
  "action": "steer",
  "harm": "medical",
  "steer": "medical_911",
  "pTrajectory": 1,
  "pAction": 1,
  "pHarm": 1,
  "rule": "traj-steer≥0.58",
  "model": "lim-nano",
  "message": "…"
}

Limits & safety #

LIM Nano does not see the conversation; it reads a window of at most 1,500 characters built from the last three turns, and only the last 360 characters of that window contribute character-level features. It does not see the responder’s reply, the user’s identity, any earlier history, or any attachment.

  • It does not write, rewrite or filter replies. message is a suggestion the host may discard.
  • It does not understand languages other than English, and its templates use casual, short phrasings; formal or long-form requests are out of distribution.
  • It does not carry word order beyond bigrams and character 4-grams, so negation and long-range structure (“I would never …”) can be misread.
  • It does not produce calibrated confidences; a 1.00 on a template-like request and a 1.00 on an unfamiliar one mean different things.
  • It does not distinguish fiction, research or quotation from a request for operational help; the abort message asks the caller to keep such requests non-operational for that reason.
  • It has the least capacity in the family — a 256-wide table and 256-wide hidden layers — so hash collisions between unrelated n-grams have less room to separate than in LIM or ELIM. This is a design rationale, not a measured gap: none of the three shows a difference on the synthetic splits.
  • It has no measured latency figure: the sub-millisecond class is inferred from LIM’s measurement and the smaller matrices, not measured for this version.
Intention Released

The standard chat safety check: reads the last few lines and says whether the reply is fine, needs a nudge, or should stop.

The standard conversation-intention classifier on a single hashed feature bag

v1.0.0
Intention Released

Reads the last few lines of a chat and says whether a reply is fine to give, needs a nudge, or should stop.

Conversation-intention classifier: trajectory, allow / steer / abort, harm and steer hint

v1.0.0

Latest versions #

VersionDateStatusNote
1.0.0ReleasedFirst documented version. 256-wide single-bag classifier trained on a local CPU; predates LIM's 512-wide retrain and shares its contract. Serving on /v1/intention as lim-nano from 2026-09-13.

Read the full documentation

Nine chapters: architecture, inputs and outputs, training, evaluation, API, runtime, limits and versions.

Full documentation