Desert Ant Labs

Smarter notes, on device.

Title and tag notes as users write, suggest emoji for headings, turn rough sketches into clean shapes, and transcribe dictation and meetings, all on device.

AI models built for notes

Nothing leaves the device

Every model runs on the user's phone, tablet or laptop. Private journals, health notes and company data don't get processed on a server, so people can use the features on any note.

No per-call cost

Title every note, sort every image and transcribe every meeting with no bill per call. Your team can add a feature without first forecasting cloud spend.

Works offline

Once the models are downloaded, every feature works without a connection. Titles, dictation and sketch cleanup work on a plane or in a meeting room with no signal.

Examples

Each example replays real output from a model. Open a model page for the full details, and try Gist, Emo or Shapes on your own text or sketch.

Title · Titles and descriptions

Add a title to every note

As users write, Title suggests a short title and description, and updates both as the note grows. Title runs on Apple platforms only and can get a detail wrong, so let users edit what it writes.

3-8Words in a titleand a one or two sentence description
286MBOn deviceApple silicon, through MLX
ApplePlatformsiOS, macOS, tvOS and visionOS
Title

Gist · Content topic tagging

Tag notes automatically

Gist assigns each note one or more of 36 topic tags. Use them to organize notes into topic tabs and let users filter search results by topic. Gist supports 101 languages.

91%Right topic in the top 3572 human-labeled real posts
36Topics
101Languages
Gist

Emo · Emoji suggestions

Suggest emoji for headings and bullets

When a line ends, Emo suggests an emoji for it: 🛂 for renewing a passport, 💡 for the electricity bill, 👥 for a team meeting. Suggestions take under 2ms, so they keep up with users as they type.

<2msPer suggestion
5MBOn deviceApple; 11MB on Android and the web
22Languages
Emo

Eye · Image classification · Beta

Label and sort images

Eye recognizes whiteboards, screenshots, maps and photos, and identifies what's in each photo. Use it to organize images by type, so users can quickly find Tuesday's whiteboard.

98%Screenshots tagged rightat the default setting; receipts 100%
5.5msPer photoNeural Engine, Mac with an Apple M6
48MBOn deviceApple; 66MB on Android and the web
Eye

Voz · Speech recognition

Dictate into a note

Voz writes speech into the note a few words at a time as users talk. Live transcription runs on Apple platforms only; on Android and the web, Voz transcribes a recording once it ends. Voz covers 25 European languages, so pair it with Ear to name the language first.

2s10 minutes of audioiPhone 17 Pro
25LanguagesEuropean
337MBOn diskApple, downloaded on first use
Voz

Who · Who said what · Beta

Label who said what

Pair Who with Voz, and each line of the meeting notes shows which speaker said it. Who tells up to four speakers apart in each five minutes, and more across a whole meeting. Who does best when each person has their own microphone, as on a video call.

3sA 50-minute interviewMacBook Pro (M5 Pro)
12.6%Error rate in meetingsAMI meetings, lower is better
81MBOn deviceApple; 32MB on Android and the web
Who

Shapes · Shape recognition

Turn rough sketches into clean shapes

Underline a sentence, circle a word or sketch a flow chart, and Shapes snaps each stroke to a clean shape in under 10ms. Notes and diagrams drawn in a meeting come out neat enough to share.

<10msPer recognition
0.7MBOn deviceApple; 0.95MB on Android and the web
13Kinds of shapeincluding arrows, hearts and clouds
Shapes

Get started

Install the models you need from one SDK, in Swift, Kotlin or JavaScript. The example tags a note with Gist and Emo. On Apple platforms it also writes the note's title with Title.

iOS, macOS, Linux, Windows

Install
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.3.0",
        traits: ["MLX"])
// target dependencies
.product(name: "Title", package: "desert-ant-core")
.product(name: "Gist", package: "desert-ant-core")
.product(name: "Emo", package: "desert-ant-core")
Example - Swift
import Title
import Gist
import Emo

let titles = try await Titles(directory: modelFolder)
let gist = Gist()
let emo = Emo()

// after a pause in typing
let card = try await titles.describe(note)
let topic = try await gist.classify(note).first
let emoji = try await emo.suggestions(for: note).first?.emoji

Android

Install
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:4.3.0")
implementation("ai.desertant:emo:4.3.0")
Example - Kotlin
import ai.desertant.emo.Emo
import ai.desertant.gist.Gist

val gist = Gist(context)
val emo = Emo(context)

// after a pause in typing
val topic = gist.classify(note).firstOrNull()
val emoji = emo.suggestions(note).firstOrNull()?.emoji

Web, Node.js

Install
npm i @desert-ant-labs/gist @desert-ant-labs/emo @litertjs/core
Example - TypeScript
import { Emo } from "@desert-ant-labs/emo";
import { Gist } from "@desert-ant-labs/gist";

const gist = await Gist.load();
const emo = await Emo.load();

// after a pause in typing
const [topic] = await gist.classify(note);
const [suggestion] = await emo.suggestions(note);

Building a notes app?

Tell us what you want to add for your users, and we'll help you pick the models and plan the integration.