Neural schedule parsing in English, हिन्दी, and Hinglish — on-device, exact, open.
Turn "call mom on sunday evening", "कल शाम को आठ बजे", or "har din shaam ko 8 baje" into real dates, time ranges, and RFC 5545 recurrence rules — with no server, no network call, and no data leaving the device.
A ~144k-parameter transformer tags each token with a semantic role; a deterministic compiler builds a typed schedule; an exact calendar resolver with a bundled IANA timezone database produces the dates. The fuzzy part is learned, the arithmetic is code — wrong labels reject with a diagnostic, never a silently wrong date.
[!WARNING] Pre-release software. Before v1, APIs and JSON shapes may change, and the model's vocabulary coverage is still growing (see known limitations).
npm / TypeScript:
npm install @magicbeansai/what-time
import { parse } from "@magicbeansai/what-time";
const result = await parse("har hafte Tuesday ko gym", {
reference: new Date().toISOString(),
timeZone: "Asia/Kolkata",
limit: 3,
});
// result.occurrences: [{ start: "2026-09-15T00:00:00+05:30", allDay: true }, ...]
CLI (agents welcome):
rust/target/release/what-time "call mom on sunday evening" \
-r 2026-09-13T10:00:00Z -t Asia/Kolkata
# 2026-09-13T17:00:00+05:30 → 2026-09-13T21:00:00+05:30
echo "कल शाम को आठ बजे" | what-time -j -r 2026-09-13T10:00:00Z -t Asia/Kolkata
# exit 0, full JSON on stdout — 1 parsed / 1 nothing found / 2 bad invocation
Zero-install playground: open
rust/site/what-time.html — one self-contained
file (wasm inlined) that runs the full trilingual model offline, straight from
disk.
| Area | What you get |
|---|---|
| Trilingual parsing | English, Hindi (Devanagari), and Hinglish (romanized Hindi, code-switching included) through one model — "book it for day after tomorrow", "अगले महीने की 21st को", "parso subah 10 baje". |
| Exact resolution | Bundled IANA timezone database, DST-correct transitions, RFC 5545 (RRULE) export, exact recurrence expansion. The model never touches dates or timezones. |
| Every surface | Rust library + CLI, WebAssembly module, npm package for TS/JS, a single-file static playground, and an optional local HTTP API. |
| GPU batch mode | Optional wgpu backend (--features gpu) dispatches batches of ≥64 windows to Metal/Vulkan — ~6–10× faster on 10k+ phrase sweeps, with output verified identical to CPU. |
| Honest failures | Ambiguity and unknown vocabulary return typed diagnostics (code, message, severity), never silent wrong dates. |
| Verifiable training | Corpus generators, a mechanical validation gate for LLM-authored data, int8 quantization with exported parity fixtures — cargo test fails closed if predictions shift. |
"call mom on sunday evening"
│ tokenizer (UTF-16 features; Devanagari conjuncts stay whole)
▼
[neural tagger] mom→O sunday→WEEKDAY evening→DAYPART ~1 ms
│ deterministic compiler
▼
schedule: weekday[SU] + day-part evening (typed JSON, no dates yet)
│ exact resolver (jiff + bundled tzdb, Asia/Kolkata)
▼
2026-09-13T17:00:00+05:30 → 2026-09-13T21:00:00+05:30
Schedule: date anchors,
clocks, ranges, recurrences, durations. The compiler never consults the
reference date.Full details: MODEL_CARD.md — training data, metrics,
and known limitations.
| Path | What lives there |
|---|---|
rust/what-time | The library: tokenizer, transformer inference (CPU + optional GPU), compiler, resolver, RRULE export, full test/eval suite. |
rust/what-time-cli | The what-time binary — agent-friendly exit codes, stdin, JSON mode. |
rust/what-time-wasm | WebAssembly bindings (browser + bundlers + Node). |
rust/what-time-web | Optional local HTTP API (POST /api/parse). |
rust/site | The static playground; what-time.html is the single-file build, build.sh regenerates. |
packages/what-time | The npm package, published as @magicbeansai/what-time — a thin typed wrapper around the wasm. No parallel implementation exists or will be added. |
packages/training | Training pipeline (Python via uv): corpus generators, the LLM-corpus brief and validation gate, the transformer trainer that exports int8 weights into rust/. |
cargo test --manifest-path rust/Cargo.toml # full suite + gold corpora + parity gates
cargo build --release -p what-time --example featurize # required before training
cd packages/training && pnpm train # retrain + export weights
rust/site/build.sh # rebuild wasm + static playground
cargo run --release -p what-time --example bench-bulk --features gpu -- 10000 # GPU bulk bench
uv inside packages/training.~/.cargo/bin when not on PATH.The CLI is designed for programmatic use:
what-time "<phrase>" -j -r <ISO instant> -t <IANA zone> -l <limit>
Exit codes: 0 parsed · 1 no schedule found · 2 bad invocation. JSON mode prints occurrences, rrules, diagnostics, and timings — the same shape the npm package returns. Pipe phrases on stdin when quoting gets hairy (including Devanagari).
तारीख/tareekh, roz, Devanagari numerals,
for N mins). Known gaps return diagnostics rather than wrong dates, and
each is queued for the next corpus batch.MIT. This project derives from an MIT-licensed predecessor; the original
copyright notice is retained in LICENSE as the license requires.
11 commits
HTML
71.9%
Rust
17.8%
Python
8.5%
JavaScript
1.1%
Neural schedule parsing in English, हिन्दी, and Hinglish — on-device, exact, open.
Turn "call mom on sunday evening", "कल शाम को आठ बजे", or "har din shaam ko 8 baje" into real dates, time ranges, and RFC 5545 recurrence rules — with no server, no network call, and no data leaving the device.
A ~144k-parameter transformer tags each token with a semantic role; a deterministic compiler builds a typed schedule; an exact calendar resolver with a bundled IANA timezone database produces the dates. The fuzzy part is learned, the arithmetic is code — wrong labels reject with a diagnostic, never a silently wrong date.
[!WARNING] Pre-release software. Before v1, APIs and JSON shapes may change, and the model's vocabulary coverage is still growing (see known limitations).
npm / TypeScript:
npm install @magicbeansai/what-time
import { parse } from "@magicbeansai/what-time";
const result = await parse("har hafte Tuesday ko gym", {
reference: new Date().toISOString(),
timeZone: "Asia/Kolkata",
limit: 3,
});
// result.occurrences: [{ start: "2026-09-15T00:00:00+05:30", allDay: true }, ...]
CLI (agents welcome):
rust/target/release/what-time "call mom on sunday evening" \
-r 2026-09-13T10:00:00Z -t Asia/Kolkata
# 2026-09-13T17:00:00+05:30 → 2026-09-13T21:00:00+05:30
echo "कल शाम को आठ बजे" | what-time -j -r 2026-09-13T10:00:00Z -t Asia/Kolkata
# exit 0, full JSON on stdout — 1 parsed / 1 nothing found / 2 bad invocation
Zero-install playground: open
rust/site/what-time.html — one self-contained
file (wasm inlined) that runs the full trilingual model offline, straight from
disk.
| Area | What you get |
|---|---|
| Trilingual parsing | English, Hindi (Devanagari), and Hinglish (romanized Hindi, code-switching included) through one model — "book it for day after tomorrow", "अगले महीने की 21st को", "parso subah 10 baje". |
| Exact resolution | Bundled IANA timezone database, DST-correct transitions, RFC 5545 (RRULE) export, exact recurrence expansion. The model never touches dates or timezones. |
| Every surface | Rust library + CLI, WebAssembly module, npm package for TS/JS, a single-file static playground, and an optional local HTTP API. |
| GPU batch mode | Optional wgpu backend (--features gpu) dispatches batches of ≥64 windows to Metal/Vulkan — ~6–10× faster on 10k+ phrase sweeps, with output verified identical to CPU. |
| Honest failures | Ambiguity and unknown vocabulary return typed diagnostics (code, message, severity), never silent wrong dates. |
| Verifiable training | Corpus generators, a mechanical validation gate for LLM-authored data, int8 quantization with exported parity fixtures — cargo test fails closed if predictions shift. |
"call mom on sunday evening"
│ tokenizer (UTF-16 features; Devanagari conjuncts stay whole)
▼
[neural tagger] mom→O sunday→WEEKDAY evening→DAYPART ~1 ms
│ deterministic compiler
▼
schedule: weekday[SU] + day-part evening (typed JSON, no dates yet)
│ exact resolver (jiff + bundled tzdb, Asia/Kolkata)
▼
2026-09-13T17:00:00+05:30 → 2026-09-13T21:00:00+05:30
Schedule: date anchors,
clocks, ranges, recurrences, durations. The compiler never consults the
reference date.Full details: MODEL_CARD.md — training data, metrics,
and known limitations.
| Path | What lives there |
|---|---|
rust/what-time | The library: tokenizer, transformer inference (CPU + optional GPU), compiler, resolver, RRULE export, full test/eval suite. |
rust/what-time-cli | The what-time binary — agent-friendly exit codes, stdin, JSON mode. |
rust/what-time-wasm | WebAssembly bindings (browser + bundlers + Node). |
rust/what-time-web | Optional local HTTP API (POST /api/parse). |
rust/site | The static playground; what-time.html is the single-file build, build.sh regenerates. |
packages/what-time | The npm package, published as @magicbeansai/what-time — a thin typed wrapper around the wasm. No parallel implementation exists or will be added. |
packages/training | Training pipeline (Python via uv): corpus generators, the LLM-corpus brief and validation gate, the transformer trainer that exports int8 weights into rust/. |
cargo test --manifest-path rust/Cargo.toml # full suite + gold corpora + parity gates
cargo build --release -p what-time --example featurize # required before training
cd packages/training && pnpm train # retrain + export weights
rust/site/build.sh # rebuild wasm + static playground
cargo run --release -p what-time --example bench-bulk --features gpu -- 10000 # GPU bulk bench
uv inside packages/training.~/.cargo/bin when not on PATH.The CLI is designed for programmatic use:
what-time "<phrase>" -j -r <ISO instant> -t <IANA zone> -l <limit>
Exit codes: 0 parsed · 1 no schedule found · 2 bad invocation. JSON mode prints occurrences, rrules, diagnostics, and timings — the same shape the npm package returns. Pipe phrases on stdin when quoting gets hairy (including Devanagari).
तारीख/tareekh, roz, Devanagari numerals,
for N mins). Known gaps return diagnostics rather than wrong dates, and
each is queued for the next corpus batch.MIT. This project derives from an MIT-licensed predecessor; the original
copyright notice is retained in LICENSE as the license requires.
11 commits
HTML
71.9%
Rust
17.8%
Python
8.5%
JavaScript
1.1%