Desert Ant Labs

Emo: On-device Emoji Suggestions

Emoji suggestionsAvailable

On-device emoji suggestions that read a short piece of text and return the emoji that actually fit it, in 23 languages, in under 10 milliseconds.

Emo predicts relevant emoji from short text like tasks, calendar entries, and messages. "Dentist appointment" returns 🦷 🪥 🏥 🩺; "Pay my bills" returns 💰 💳 🧾. Emo is tuned for how people actually write, and supports skin-tone variants.

Emo suggests emoji from meaning; it is not an emoji picker. A picker shows a grid to browse. Emo reads the text and proposes the fitting emoji, the way a predictive keyboard proposes the next word. A compact two-stream text classifier keeps it small and fast enough to run on every keystroke.

Demo

Performance

Sub-10 ms suggestions from a <6 MB model, across 23 languages.

<10 ms
Per suggestion
<6 MB
On-device
23
Languages
~800
Emoji vocabulary

Internal measurements. Emoji semantics are approximate, so near-ties at the top of the ranking are expected.

Use cases

Keyboard and autocomplete

Suggest emoji as the user types, the way a predictive keyboard suggests words, entirely on device.

Calendar and task entries

Tuned for short entries: "Dentist appointment" returns 🦷 🪥 🏥 🩺, so a scheduling app can label events automatically.

Messaging

Surface fitting emoji for a draft message across languages, with no network round-trip.

Complements a picker

Emo works from meaning, so it sits alongside the emoji grid rather than replacing it.

What it does

  • Curated vocabulary of ~800 everyday emoji, with skin-tone variants.
  • Multilingual: 23 languages, including CJK, Arabic, Thai, and Hindi.
  • Prediction in under 10 ms on modern phones.
  • Small model, no server inference.

Platforms and install

iOS, macOS
Install
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/emo", from: "0.8.0")
Example - Swift
import Emo

let emo = Emo()
let suggestions = try await emo.suggestions(for: "Pay my bills")
// ["💰", "💳", "🧾"]
Android
Install
// build.gradle.kts (Maven Central)
implementation("ai.desertant:emo:0.8.0")
Example - Kotlin
import ai.desertant.emo.Emo

val emo = Emo(context)
val suggestions = emo.suggestions("Pay my bills")
// [EmoSuggestion("💰", ...), ...]
Web, Node.js
Install
npm i @desert-ant-labs/emo @litertjs/core
Example - TypeScript
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 with your AI coding assistant
Prompt
Add Emo from Desert Ant Labs to this project.

On-device emoji suggestions that read a short piece of text and return the emoji that actually fit it, in 23 languages, in under 10 milliseconds.

SDKs (use the one that matches this project's platform):

Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/emo
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/emo", from: "0.8.0")

Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/emo
// build.gradle.kts (Maven Central)
implementation("ai.desertant:emo:0.8.0")

JavaScript / TypeScript (Web, Node.js)
Repo: https://github.com/Desert-Ant-Labs/emo
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 that matches this project's platform, 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
23, including CJK, Arabic, Thai, and Hindi
On-device size
~5 MB on device (model + tokenizer)
Latency
Under 10 ms per suggestion
Approach
Two-stream text classifier: lexical n-grams plus a multilingual embedding

FAQ

What is Emo?

On-device emoji suggestions that read a short piece of text and return the emoji that actually fit it, in 23 languages, in under 10 milliseconds.

Does Emo run on device?

Yes. Emo runs entirely on device: inference happens locally with no server call, so data never leaves the device.

Which platforms does Emo support?

Emo ships as native on-device SDKs 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?

Sub-10 ms suggestions from a <6 MB model, across 23 languages.

Resources