DOCUMENTATION / V0.1

Small models.
Simple beginnings.

Run the research models locally, using one model package at a time. All packages share a small inference core.

Packages are local workspace packages. Nothing has been published to npm or Maven Central yet. Five models use the original research runtime; Tock ASR has a separate native runtime.

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.ts
import { 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.
Local artifact → local inferenceNo API key.

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.mjs

For 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 publishToMavenLocal

Local 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 build

The 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