Local-first AI systems and public demos

Run it. Teach it. Inspect it.

Crunchy Codes is my public workshop for Open Day experiences, local model infrastructure, and practical tools that make AI systems easier to explain, operate, and trust.

idea build ship
Open Day Public demos
Local AI Model runtime
Desktop Practical tools
Illustrated avatar of Dr Jason Holdsworth

Who am I

Dr Jason Holdsworth

I build practical local-first tools.

I'm Dr Jason Holdsworth, a Digital Technology academic and educator at James Cook University, and the maker behind Crunchy Codes. My work sits around local-first software, practical AI tools, public teaching demos, and human-AI interaction experiments.

Digital Technology educator Local-first software Teaching demos Human-AI interaction

Now building

Recent public work.

  1. SceneChat prepared-image acceptance checks and request-correlated timing evidence
  2. Codex Router bounded multi-turn planning and opt-in output-adaptive replanning
  3. ModelDeck guarded state transfer and read-only Open Day preflight
  4. TokenTrail and Text Diffusion Lab native capability discovery and explicit cancellation
  5. Codex Local Meter 0.4.0 optional live rate-limit reads and local token pace

Projects

Recent public portfolio.

The latest repositories form a connected local-first lab: public experiences for teaching AI, shared infrastructure for running and evaluating models, and practical tools for the machines hosting them.

Project lanes

Open Day experiences

Visitor-ready experiments that make tokens, computer vision, speech, cybersecurity, and human oversight visible enough to discuss.

Project lanes

Local AI infrastructure

Shared runtimes, routing and conversion workbenches, evaluation harnesses, local model clients, and explicit offline fallbacks for dependable, inspectable experiments.

Project lanes

Practical tools and maker projects

Focused GNOME, Android, macOS, VS Code, and desktop projects for inspecting local state and exploring useful software ideas.

Local desktop tool / private speech-to-text

SpeakText

Private local dictation for Fedora GNOME Wayland using whisper.cpp and an IBus input method. Configurable Shift or Control gestures drive record, review, and commit with revisable in-place previews; audio and transcripts stay in memory. When no default source is configured, it can select a sole physical microphone safely. While dictation is active, ordinary editor keys are held so they cannot submit a chat or move focus before review is complete.

Python whisper.cpp GNOME Wayland IBus

Fedora desktop tool / screenshots and GIFs

Grab

A GNOME top-bar capture tool for whole-desktop screenshots and silent GIF recordings on Wayland. It supports clipboard capture, crop and pen editing, optional PNG saving, and private temporary editing copies retained for no more than 24 hours.

Python GTK 4 GNOME Wayland Local-first

Replay-first MVP / local speech

SpeechShift

An honest speech-transformation demo with prepared local voice and language shifts, plus an opt-in, memory-only microphone path. Its local DSP baseline transforms captured audio without pretending to recognise or translate the visitor's words.

Python FastAPI Local audio Privacy-first

Open Day demo / staged text refinement

Text Diffusion Lab

A public explanation of generation by iterative refinement rather than next-token prediction. The visitor experience has a reliable scripted path, while staff can run the published DiffusionGemma Q4 variant through ModelDeck's native job API with explicit readiness, progress, and cancellation handling.

TypeScript Teaching demo DiffusionGemma Scripted fallback

Active build / cybersecurity awareness

Can You Spot the Scam?

A local-first game where visitors investigate fictional messages, flag warning signs, choose safe responses, and solve approachable cipher cases with concise educational feedback.

MVP 0.2 / human oversight demo

Humans in the Loop

A QR phone-to-screen experience where a crowd sets goals and rules, reviews a deterministic AI-style proposal, and decides when to accept, repair, seek evidence, or involve a person.

Open Day demo / token-level generation

TokenTrail

A replayable teaching demo that exposes prompt tokens, candidate probabilities, and generated text one step at a time using local Hugging Face traces or prepared scripted fallbacks. Live operation discovers ModelDeck's native capabilities and exposes cancellation and runtime refresh controls without silently changing providers.

Research MVP / local voice conversation

Repartee

An interruptible voice-conversation experiment where a weak local speech layer owns timing and bounded replies, then escalates more substantive requests to ModelDeck through the same output path.

Android maker project / adaptive live wallpaper

Bouncer

An Android live wallpaper that turns glowing-ball physics into a configurable device experiment, with two-stage preview and wallpaper calibration, live frame-timing telemetry, adaptive performance controls, optional collisions, and visual controls.

VS Code extension / local usage visibility

Codex Local Meter

A local-first status-bar extension that reads Codex session files, shows reported rate limits and a rolling 15-minute token pace, and keeps session content on the device. Optional live account reads use the locally installed Codex App Server without starting a model turn or sending session content.

GNOME extension + host safety service / Framework Desktop

System Usage Monitor

A Fedora 44 top-bar monitor for RAM, storage, temperature, fan readings, and configurable local JSONL history, with an optional Auto-Powersaver service that exposes explicit operating modes, hot protection, and competing-controller diagnostics.

Desktop app and CLI / model library

HuggingFacePull

A local FastAPI, Electron, and command-line tool for finding, grouping, queueing, and downloading Hugging Face model snapshots. It honours standard cache overrides, supports low-concurrency or opt-in Xet transfers, and separates library-record removal from deletion of cached model data.

Local-first principles

Tools should explain themselves.

Recent Crunchy Codes projects favour explicit user control: local files over hidden services, recoverable downloads over silent failure, and privacy-safe metadata over unnecessary telemetry.

Stay close to the user

Read local state directly, keep sensitive content on-device, and avoid network calls unless the tool genuinely needs them.

Make progress recoverable

Large downloads, long chats, and local experiments should preserve work instead of forcing people to start over.

Keep the controls visible

Prefer plain commands, clear status, and inspectable behaviour over magic that leaves the user guessing.

Contact

Questions, bugs, and project support

For project support, feature ideas, bug reports, or security concerns, use the support page or the issue tracker linked from the relevant project.

Open support