Only One Task
AI & ML interests
None defined yet.
Recent Activity
OOT — Only One Task
Small models that each do exactly one job, and do it predictably.
Most AI features inside a product are one narrow job repeated millions of times: name a conversation, say what a command does, flag a risky action. A frontier model is overkill for that, and it drifts: it adds quotes, explanations, markdown, or answers the wrong question. OOT models are trained to do one task under a strict output contract, so the result can be used directly with no parsing and no prompt tricks.
Where OOT fits best
1. Conversation titles at scale
Chat apps create millions of new sessions every day, and most of them get their title from a call to the same large model that answers the user. That spends frontier-model tokens, latency and GPU time on a 5-word string. A title is also a small, closed task: read the first message and name the topic, in the user's language.
oot-oneliner does this on a 1.7B base, on CPU if needed, and keeps to the format. On our 100-case arena, 100% of its outputs follow the title/intent contract, against 78% for Claude Haiku 5.5 and 55% for Claude Sonnet 5.5 prompted with the same contract. Your app gets a clean title it can show as-is, and the big model's capacity goes to the answer.
2. Intents for every agent action, without asking the agent
Agent harnesses often make the main model write a human-readable description next to each tool call ("Run the tests", "Check git status") so the user can follow along or approve the step. The large model pays for those tokens on every step, and the description is written by the same model that chose the action. It says what the agent meant to do, not always what the command does.
With OOT, the harness drops that field and sends the action itself (the shell command, SQL, diff or JSON tool call) to oot-oneliner, which returns the intent:
| Action | Intent |
|---|---|
rm -rf build/ |
Deletes the build directory and its contents |
DELETE FROM sessions |
Deletes every row from the sessions table |
git reset --hard HEAD~3 && git push --force origin main |
Hard-resets to three commits back and force-pushes main |
- Cheaper agent turns: the main model emits only the action.
- Independent of the agent: the intent is derived from the action itself, so it can be used to log steps, review them, or gate approvals.
- Destructive effects stated: in our own agent traces, only 41% of agent-written descriptions of destructive commands mentioned the destruction.
oot-onelinerstates the destructive effect in 99.0% of a 399-case held-out destructive slice.
How it works
- One shared base, one adapter per task. Every OOT model is a LoRA adapter on the same unmodified base model (LoRA rank 32 everywhere). One server can host all OOT tasks at once, and the client picks the task with the
modelfield. - OpenAI-compatible. If your app already calls
chat.completions, switching to an OOT model means changingbase_urlandmodel. - Output contract first. Each task has a written output contract. Training data is distilled from a strong teacher, filtered against the contract, and the models are evaluated on held-out sets that are never used for training.
- Built for agents and chat apps. Inputs are the messy real thing: user messages, shell commands, SQL, diffs and JSON tool calls, often wrapped in the client's own prompts.
Models
| Model | Task | Base | Status |
|---|---|---|---|
oot-oneliner |
One-line summary of any input: a title for chat, an intent for commands, SQL, file edits and tool calls | LFM3-1.7B-Base | ✅ v0 (public) |
Each model ships in three formats:
-lora: the adapter, the canonical artifact for shared-base serving.- merged bf16 weights: standalone use with 🤗 Transformers.
-GGUF(Q8_0, Q4_K_M): local and CPU serving with llama.cpp.
oot-oneliner at a glance
The input type decides the output style. There is no mode switch.
| Input | Output |
|---|---|
My Docker build keeps reinstalling all npm packages even when package.json didn't change |
Docker reinstalling npm packages unnecessarily |
Comment configurer un reverse proxy nginx pour plusieurs sous-domaines ? |
Reverse proxy nginx pour plusieurs sous-domaines |
git reset --hard HEAD~3 && git push --force origin main |
Hard-resets to three commits back and force-pushes main |
SELECT customer_id, COUNT(*) FROM orders WHERE year = 2025 GROUP BY 1 |
Counts orders per customer for 2025 |
{"name": "send_invoice", "arguments": {"customer_id": "c_812", "amount": 1200}} |
Sends invoice for 1200 to customer c_812 |
Real outputs of oot-oneliner v0 (Q8_0 GGUF, temperature 0).
Output is one line of plain text with no quotes, prefix or trailing period. Destructive actions (rm, force push, DROP, deletes, payments…) are trained to state the destructive effect explicitly.
On held-out test sets (Q8_0 GGUF), oot-oneliner scores:
- 99.5% mode accuracy: the title-vs-intent style matches the input type.
- 98.5% format compliance with the output contract.
- 99.0% of destructive actions state their destructive effect.
Licensing
OOT adapters inherit their base model's license. oot-oneliner is derived from LiquidAI/LFM3-1.7B-Base and is released under the LFM Open License v1.0, which allows free commercial use only below Liquid AI's revenue threshold. See each model card for details.
Roadmap
New tasks are new adapters on the same base. Candidates include tag extraction, risk classification for agent actions, and structured extraction. Each one ships only after it meets its contract on held-out data.
OOT — Only One Task. One model, one job, one predictable line.