Local parsing is the reason to choose gpu-time
gpu-time reads phrases such as a weekday range or recurring hour and returns concrete occurrences, RFC 5545 rules, diagnostics, and source spans. The text stays on the device. You supply the reference instant, IANA timezone, and preview limit, which avoids the common mistake of letting a parser guess what "next Friday" is relative to. The package supports English and Spanish through separate model packs.
The useful distinction is recurrence. Chrono and many form parsers can find a date, while gpu-time also compiles repeating expressions and exclusions into schedule data. Its 38,745-parameter model labels tokens, then ordinary TypeScript resolves calendar arithmetic and daylight-saving transitions. That split keeps timezone math out of the learned layer. It also means model output can still be wrong before the deterministic resolver sees it.
A 23-second install gets you the runtime and the research workspace
Our checkout contained 387 files, about 56,530 lines of source, and occupied 106.4 MB. pnpm install finished in 23 seconds, added 416 packages, and brought disk use to 352 MB. This is a monorepo with the published core package, Python training code, benchmarks, a website, and video source. An application consuming the package does not need to operate every workspace.
The documented development stack is current and specific: Node.js 24 or newer, pnpm 11, uv, Python 3.13, and Chrome with WebGPU. Training data, downloaded corpora, checkpoints, and local environments are intentionally ignored by Git. The shipped runtime weights are present, but reproducing training requires a local .pt starting checkpoint that a clean clone cannot supply. That boundary is stated plainly in the model card.
What happened when we ran it
Our unprivileged sandbox installed commit 4188e4e with 3 CPUs, 8 GB of RAM, Node.js 22, and no secrets. Installation succeeded in 23 seconds. The lab harness found no root build script, so it skipped the build step. The README instead tells contributors to run pnpm build:core, a named workspace command that our standard build probe did not execute.
The test command ran for 18 seconds and exited with code 1. Vitest reported 18 passing files and 1 failing file. Across 1,036 tests, 1,031 passed, 1 failed, and 4 were marked as expected failures. The log summary names test/model-parity.test.ts as the failing file but does not include the failed assertion, so claiming a CPU, WebGPU, or weight mismatch would go beyond the evidence.
One failure among 1,036 tests is close to green and still red. Model parity is also an especially relevant test area for software whose CPU and WebGPU paths should agree. Before adopting version 0.5.0, rerun the suite on the supported Node.js 24 toolchain and inspect the complete assertion. Our measurement establishes the failure; it does not diagnose it.
WebGPU starts at 32 inputs or 512 tokens
With backend: "auto", small jobs stay on CPU. gpu-time tries WebGPU once a batch reaches 32 inputs or 512 tokens, where parallel dispatch has a better chance of paying for device overhead. The reusable parser keeps its device, pipelines, weights, and buffers alive between calls. That makes more sense for an open scheduling screen than constructing a parser for each keystroke.
Explicit webgpu mode disables CPU fallback. A browser without WebGPU, a rejected adapter, or device loss must be handled by your code. The model card also warns that small inputs are slower on WebGPU because startup and readback have fixed costs. Pick the backend intentionally, surface diagnostics, and record the returned backend during testing so a silent environment change does not alter behavior unnoticed.
Wrong dates remain possible even when parsing succeeds
The model card is unusually candid about failure modes. A person's name that matches a weekday can become a date. Some four-digit clocks can become years, unsupported languages can produce incorrect output without a diagnostic, and complex recurring exceptions may preview correctly while refusing RFC 5545 export. Vague phrases such as "after work" intentionally receive no clock value.
Those limits rule out medical visits, legal deadlines, billing events, and compliance schedules without human confirmation. For a task list or casual reminder, a visible preview and edit step can make the risk reasonable. Keep the original text beside the parsed result, require confirmation for recurrence, and build a fixture set from real user wording. The package's spans make correction easier because the UI can show exactly which characters produced each answer.
No tagged release makes commit pinning necessary
The repository was pushed on September 27, 2026, and GitHub listed 209 stars with 0 open issues or pull requests. There is no latest tagged release even though the core package declares version 0.5.0. Current source activity is a better health signal than the missing tag alone, but consumers still need to pin the npm version and preserve their own acceptance corpus.
gpu-time is a thoughtful experiment with better documentation than many mature parsers. Our 1 failed test prevents an unconditional recommendation, and the model's own limits keep it in low-risk workflows. If local input handling, recurrence rules, and browser execution solve a real product problem, the 352 MB development install is worth a trial. If predictable rules or broader language coverage matter more, start with Chrono, Recognizers-Text, or Duckling.

