Gist
On-device topic tagging that reads a title or a post and tells you its topics, in 101 languages, with no server call.

Demo
Generate topics and tags for posts and articles.
A post called "How to film a two-person podcast with two iPhones" is tagged technology and creator economy. "Cómo invertir en fondos indexados" is tagged finance. The same 36 topics apply in all 101 languages, so shipping into a second market needs no second setup.
The right topic is in the top three 91% of the time, and most items land on two or three topics. That is enough for a feed to sort, filter or route without a classification API. Two cheap passes over the words do the work, so a browser tab tags a post without warming up a language model.
Scores add up across a collection, so a whole podcast feed or channel gets its own topics. An English-only build drops the model to about 15MB.
36 topics, 101 languages, 74MB.
36 topics across 101 languages, from a 74MB model, or 15MB English-only.
Recall on 572 human-labeled real posts. Internal measurements.
Use cases
Generate topics and tags for posts and articles.
Route a post without a server call
Tag posts, articles or videos by topic on the device, so a feed can sort, filter or route them without a classification API in the path.
Describe a channel from its posts
Add up an account's posts into channel-level topics. A directory or a recommender can then say what a podcast, a newsletter, or a feed is about without anyone writing a description.
A topic per item for the ranker
Give a recommendation feed or a moderation queue a cheap, private topic signal for every item, with no per-call cost as the feed grows.
On-device organization
Group a user's own notes, bookmarks, or library by topic on the device, so a personal archive becomes searchable without a single file leaving the device.
Inspiration
Ideas to build with Gist. Copy a prompt into your coding agent and go.
Auto-tag articles and posts with their topics for a feed.
Use Desert Ant's Gist on-device to tag each article or post with its topics, then power a topic feed, filters, or a 'more like this' rail without a classification server. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Route content to channels by topic, no server call.
Build a router that reads a post with Desert Ant's Gist and sends it to the right channel or inbox by topic, entirely on-device. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Organize a reading list by topic, locally.
Build a read-it-later app that tags saved articles with Desert Ant's Gist on-device and groups them by topic, so the library organizes itself offline. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Give a recommender a topic-per-item signal that runs on the phone.
Add Desert Ant's Gist as an on-device feature extractor so your ranker gets Gist's topic tags (from a fixed 36-topic set) per item without shipping content to a server. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Tag a post and suggest an emoji for it.
As a user drafts a post, run Desert Ant's Gist to tag its topic and Emo to suggest a fitting emoji, both on-device. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Auto-file support tickets into the right queue by topic.
Use Desert Ant's Gist on-device to tag an incoming support ticket with its topic and route it to the right queue, no classification server. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Build an OpenClaw skill that tags and language-routes text.
Write an OpenClaw skill that runs Desert Ant's Tongue to detect a text's language and Gist to tag its topics, on-device, so an agent can route content without a server call. Build it with the Desert Ant SDK. Tongue (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/tongue/. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
An Obsidian plugin that tags notes with their topics, on the device.
Build an Obsidian plugin that runs Desert Ant's Gist in Node to tag each note with its topics and build a topic index, entirely local. Build it with the Desert Ant SDK. Gist (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/gist/. Install: SwiftPM desert-ant-core; Maven ai.desertant:gist:3.1.0; npm i @desert-ant-labs/gist @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
What the model does
- 36 topics, from technology and finance to the creator economy; most items carry two or three.
- 101 languages from one model, with no language setting to pass in.
- Two-stream classifier with no transformer, so scoring costs CPU time and nothing else.
- Compact English-only variant (15MB) for English-only apps, selectable from the Swift SDK today with
Gist(variant: .english).
Getting started
Add content topic tagging to your iOS or macOS, Android or web app in a few lines of code. Gist docs.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0")
// target dependency
.product(name: "Gist", package: "desert-ant-core")
import Gist
let gist = Gist()
let topics = try await gist.classify("How to start a podcast with just your iPhone")
// [Topic(slug: "technology", ...), ...]
Add Gist from Desert Ant Labs to this Swift project (iOS, macOS). What it does: On-device Content Topic Tagging. SDK: Swift (iOS, macOS) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme // Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0") // target dependency .product(name: "Gist", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/gist/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:3.1.0")
import ai.desertant.gist.Gist
Gist(context).use { gist ->
val topics = gist.classify("How to start a podcast with just your iPhone")
// List<Topic>: slug, name, score
}
Add Gist from Desert Ant Labs to this Kotlin project (Android).
What it does: On-device Content Topic Tagging.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:3.1.0")
Reference:
- Model page: https://desertant.com/models/gist/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
npm i @desert-ant-labs/gist @litertjs/core
import { Gist } from "@desert-ant-labs/gist";
const gist = await Gist.load();
const topics = await gist.classify("How to start a podcast with just your iPhone");
// [{ slug: "technology", name: "Technology & Software", score: 0.91 }, ...]
Add Gist from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: On-device Content Topic Tagging. SDK: JavaScript / TypeScript (Web, Node.js) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme npm i @desert-ant-labs/gist @litertjs/core Reference: - Model page: https://desertant.com/models/gist/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
Specs
- Languages
- 101
- Topics
- 36, multi-label
- On-device size
- 74MB multilingual, or 15MB English-only
- Model
- Two-stream classifier: a multilingual static embedding plus hashed n-grams
Gist tags what a text is about, not whether the text is any good or safe. The 36 topics are a fixed list, so a subject outside the list gets the nearest topic on it.
FAQ
What is Gist?
On-device topic tagging that reads a title or a post and tells you its topics, in 101 languages, with no server call.
Does Gist run on device?
Yes. Gist runs on the device, with no server call, so the data stays with the user.
Which platforms does Gist support?
Gist ships as a native on-device SDK for Swift, Kotlin, JavaScript / TypeScript.
How much does Gist cost?
Every model is free up to 100k monthly active devices per SDK. Unlimited inference per user. Contact us for custom licenses.
How accurate or fast is Gist?
36 topics across 101 languages, from a 74MB model, or 15MB English-only.