Models — aparte-titler 1.2.0

A conversation, named as you type.

aparte-titler picks 3 to 6 words out of the first message and makes them the title. 133 KB for 17 languages, a few milliseconds per title, and nothing leaves the page: the model runs where the message is typed.

Your sidebar, a moment later

Loading the model, 133 KB…

Every title above is the model's, computed in this tab as you type. The latency is measured here, not quoted.

What it (weighs)

133 KBthe file, 17 languagesint3 — a favicon is often larger
17languages in one fileen · fr · es · de · pt · it · nl · pl · sv · da · fi · cs · ro · no · hu · hr · lt
… msper title, one coremeasured above, in your tab
0network callsafter the file: the model runs in the page
0dependenciesa runtime of about 250 lines
90–95%of a 2.4 GB teacherword F1 on real chat — twice the “first five words” rule

The benchmark, every language, every precision and the charts are on the model card →

In aparté, (three lines)

The titler plugin binds the model to the conversation manager: the first message of every conversation is titled by it, and the title lands in the list. The model loads once, the first time a title is needed.

import { loadTitler } from '@aparte/titler-latin';
import { setupTitler } from '@aparte/plugin-titler';

setupTitler(manager, { titler: loadTitler });   // manager: your AparteConversationManager

Without aparté, the runtime alone. One import, one file, one call:

import { loadTitler } from '@aparte/titler-latin';

const titler = await loadTitler();
titler.title("Peux-tu m'expliquer la photosynthèse chez les plantes ?");

npm install @aparte/titler-latin — the file ships inside the package and your bundler copies it as an asset, so the page fetches it from your own origin.

Where it (runs)

One model, one runtime per language. Each reads the same files and gives the same title, character for character.

JavaScript
Browsers, Node npm install @aparte/titler-latin
Swift
iOS, macOS, tvOS, watchOS, visionOS, Linux, Windows Swift Package Manager: https://github.com/apartejs/aparte-titler-swift
Kotlin
Android 5.0+, any JVM 8+ — from Kotlin or Java Maven Central: dev.apartejs:titler-latin

In Swift, AparteTitlerLatin brings the runtime and the 17-language model:

import AparteTitlerLatin

let titler = try AparteTitlerLatin.load()
titler.title("Peux-tu m'expliquer la photosynthèse chez les plantes ?")

In Xcode, File → Add Package Dependencies… and paste the repository URL. AparteTitler, the runtime alone, reads any model file from the model card.

In Kotlin, on Android or the JVM, TitlerLatin does the same:

import dev.apartejs.titler.latin.TitlerLatin

val titler = TitlerLatin.load()
titler.title("Peux-tu m'expliquer la photosynthèse chez les plantes ?")

Add dev.apartejs:titler-latin to your Gradle dependencies; it is usable from Java too. On Android, load it off the main thread. dev.apartejs:titler, the runtime alone, reads any model file from the model card.

Pick the (file)

One model per language group, four precisions each. The int3 files below ship on npm; every other one is on the model card.

PackageLanguagesSize
@aparte/titler-latin17 — en, fr, es, de, pt, it, nl, pl, sv, da, fi, cs, ro, no, hu, hr, lt133 KB
@aparte/titler-latin-minithe same 17, a smaller vocabularyabout half a point below, on average96 KB
@aparte/titler-efigsp6 — en, fr, es, de, pt, it77 KB
@aparte/titler + one fileone language, from the model cardabout 41 KB

What it (is), and is not

Extractive
It copies 3 to 6 words of the message, in the message’s order. It does not rephrase, summarise or translate — which is why it fits in 133 KB, and why a title reads like the message that started the conversation.
One message
Give it the user’s first message and nothing else — no system prompt, no history. It reads up to 1,200 characters; a long preamble before the actual request costs it some accuracy.
One file
Header, tokenizer and weights in a single .bin, read by a dependency-free runtime of about 250 lines. A Python reference reader gives the same title, word for word, on every message of the benchmark.
Open
MIT, code and weights. Training data and the benchmark are published beside the model, under their own licences.