Small models.
Simple beginnings.
Run the research models locally, using one model package at a time. All packages share a small inference core.
01 / Node.js & TypeScript
From the repository root, link the workspace and build the SDKs. Bun manages the workspace; the output runs in Node.js 20+ and modern browsers.
bun install
bun run sdk:build
bun examples/node/lilt.tsimport { createModel } from '@embermote/lilt';
const model = createModel();
const input = "Les enfants jouent près de la maison.";
const result = model.predict(input);
console.log(result.label);
// Scores are not calibrated confidence.Each @embermote/model-name package bundles only its own weights and depends on @embermote/core. To run from plain Node, use the example:
node examples/node/lilt.mjsFor a custom artifact, construct new Model(artifact) from the core package. The prediction path has no network calls.
02 / Kotlin / JVM
One Gradle build includes the shared Kotlin runtime and six model modules under packages/. With JDK 17+ and Gradle 8.10+ installed, run from the repository root:
gradle test
gradle publishToMavenLocalLocal Maven coordinates after publishing:
repositories { mavenLocal(); mavenCentral() }
dependencies {
implementation("dev.embermote:lilt:0.1.0")
}The Kotlin tab above uses bundled classpath resources. This is a JVM research SDK; Android device validation and an Android package release are still pending.
03 / Audio & shapes
Hush accepts five numeric audio features. Decode audio to mono PCM at 8,000 Hz, with values between −1 and 1. Use 0.3-second windows to match the training duration.
import { audioFeatures, shapeFeatures } from '@embermote/core';
const sound = hush.predict(audioFeatures(pcm, 8000));
const shape = glyph.predict(shapeFeatures([[0, 0], [100, 0]]));Glyph accepts an ordered, single stroke of 2D points and uses a normalized 16×16 occupancy grid. It does not classify photographs.
04 / What is ready today?
Tock 0.2 is a separate speech-transcription candidate based on Whisper tiny.en. Its native Node.js and Kotlin/JVM adapters require local whisper.cpp and GGML weights. See Tock’s ASR setup for usage and measured comparisons, or try Tock directly in your browser with a short recording. The browser preview runs locally using WebAssembly.
- Five original model previews and a pretrained speech-transcription candidate.
- Node/browser inference with model-specific packages.
- Kotlin/JVM implementation and matching artifact resources.
- Local demos, measured artifact sizes, and source-specific evaluation reports.
What still needs work
Independent datasets, real audio recordings, device benchmarks, calibration, out-of-distribution handling, and production validation. The text corpora are small and authored; audio and shape datasets are procedural. The internal tests cannot establish real-world quality.
Rebuild and verify
bun run train
bun run test
bun run buildThe artifact manifest records pinned versions, exact bytes, and SHA-256 checksums. The web demos verify checksums before inference. Sizes exclude runtime memory and SDK code.
Repository map
apps/web Next.js website
packages/core Shared TypeScript runtime
packages/*-node Per-model Node/browser packages
packages/core-kotlin Shared Kotlin runtime
packages/*-kotlin Per-model Kotlin packages
packages/catalog Shared metadata
models/artifacts Canonical weights + manifest
training Reproducible model recipes