Emo.
Type a task or a message and get the emoji that fit, in 22 languages, on the device.
Demo
Suggest emoji faster than you can type.
Type "Dentist appointment" and get 🦷 🪥 🏥 🩺. Type "Pay my bills" and get 💰 💳 🧾. Emo is tuned for how people write in a task list or a chat, not how they write an essay, and every suggestion carries its skin-tone variants.
A picker shows you a grid to browse. Emo reads the text and proposes the emoji that fit, the way a predictive keyboard proposes the next word. Emo is small and fast enough to run on every keystroke, and never calls a server.
Suggestions in under 2ms.
Suggestions in under 2ms from a 5MB Core ML model, across 22 languages.
Internal measurements. Emoji semantics are approximate, so near-ties at the top of the ranking are expected.
Suggest as they type
Offer emoji in the suggestion strip while someone is still typing, the way a predictive keyboard offers words, on the device and with no network round-trip.
Label an event as it is created
Tuned for short entries: "Dentist appointment" gets 🦷 🪥 🏥 🩺, so a calendar or task app can tag an item the moment someone saves it.
Emoji for a draft message
Suggest the emoji that fit a message as someone writes, in any of 22 languages, without sending the draft anywhere.
Keep your picker, add suggestions
Emo fills the suggestion strip above the keyboard, so a user who knows what they want still browses the grid, and everyone else gets the right emoji first.
Inspiration
Ideas to build with Emo. Copy a prompt into your coding agent and go.
Add an emoji suggestion strip above the keyboard.
Add a suggestion strip that calls Desert Ant's Emo on-device as the user types and offers the emoji that fit the sentence, in their language, with no network call. Build it with the Desert Ant SDK. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. Install: SwiftPM desert-ant-core; Maven ai.desertant:emo:3.1.0; npm i @desert-ant-labs/emo @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.
Suggest a reaction emoji for any message.
In a chat app, use Desert Ant's Emo on-device to suggest a fitting reaction emoji for the message a user is looking at, faster than they could scroll a picker. Build it with the Desert Ant SDK. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. Install: SwiftPM desert-ant-core; Maven ai.desertant:emo:3.1.0; npm i @desert-ant-labs/emo @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-add an emoji to a task or calendar title.
Use Desert Ant's Emo on-device to add a fitting emoji to a task or event title as it's created, in the user's language. Build it with the Desert Ant SDK. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. Install: SwiftPM desert-ant-core; Maven ai.desertant:emo:3.1.0; npm i @desert-ant-labs/emo @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 emoji search that understands a sentence, not just keywords.
Build an emoji picker that runs Desert Ant's Emo on-device so typing a phrase surfaces the emoji that fit the meaning, faster than scrolling. Build it with the Desert Ant SDK. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. Install: SwiftPM desert-ant-core; Maven ai.desertant:emo:3.1.0; npm i @desert-ant-labs/emo @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.
Suggest a status emoji from what someone is typing.
In a chat or status field, run Desert Ant's Emo on-device to suggest a status emoji from the text the user is writing. Build it with the Desert Ant SDK. Emo (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/emo/. Install: SwiftPM desert-ant-core; Maven ai.desertant:emo:3.1.0; npm i @desert-ant-labs/emo @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
- Curated vocabulary of 812 everyday emoji, with skin-tone variants.
- Multilingual: 22 languages, including CJK, Arabic, Thai, and Hindi.
- Well under 2ms per suggestion on device.
- 5MB on Apple, 11MB on LiteRT. No server call.
Getting started
Add emoji suggestions to your iOS or macOS, Android or web app in a few lines of code. Emo docs.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0")
// target dependency
.product(name: "Emo", package: "desert-ant-core")
import Emo
let emo = Emo()
let suggestions = try await emo.suggestions(for: "Pay my bills")
// [EmoSuggestion(emoji: "💰", confidence: ...), ...]
Add Emo from Desert Ant Labs to this Swift project (iOS, macOS). What it does: On-device Emoji Suggestions. 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: "Emo", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/emo/ - 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:emo:3.1.0")
import ai.desertant.emo.Emo
Emo(context).use { emo ->
val suggestions = emo.suggestions("Pay my bills")
// List<EmoSuggestion>
}
Add Emo from Desert Ant Labs to this Kotlin project (Android).
What it does: On-device Emoji Suggestions.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:emo:3.1.0")
Reference:
- Model page: https://desertant.com/models/emo/
- 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/emo @litertjs/core
import { Emo } from "@desert-ant-labs/emo";
const emo = await Emo.load();
const results = await emo.suggestions("Pay my bills");
// [{ emoji: "💰", confidence: 0.62 }, ...]
Add Emo from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: On-device Emoji Suggestions. SDK: JavaScript / TypeScript (Web, Node.js) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme npm i @desert-ant-labs/emo @litertjs/core Reference: - Model page: https://desertant.com/models/emo/ - 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
- 22, including English, Spanish, French, German, Portuguese, and Japanese
- On-device size
- 5MB on Apple via Core ML, 11MB via LiteRT elsewhere (model + tokenizer)
- Speed
- Under 2ms per suggestion
- Model
- Two-stream text classifier: lexical n-grams plus a multilingual embedding
Emo is tuned for short, intent-carrying text such as a task, an entry, or a message. Long-form text produces noisier suggestions.
Emoji meaning is imprecise, so expect near-ties at the top of the ranking, and expect the lower-resource languages in the set to be a little weaker than English.
FAQ
What is Emo?
Type a task or a message and get the emoji that fit, in 22 languages, on the device.
Does Emo run on device?
Yes. Emo runs on the device, with no server call, so the data stays with the user.
Which platforms does Emo support?
Emo ships as a native on-device SDK for Swift, Kotlin, JavaScript / TypeScript.
How much does Emo 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 Emo?
Suggestions in under 2ms from a 5MB Core ML model, across 22 languages.