velocitype

Self-hosted · Local-first · Split-native

Master your split keyboard. Locally.

Velocitype is a self-hosted, adaptive touch-typing trainer built for the Ferris Sweep and Corne. An AI coach runs inside your own Docker stack, finds the keys and finger-fumbling letter pairs that slow you down, and drills them away — and not a single keystroke ever leaves your machine.

Boards
Ferris Sweep · Corne
Layouts
Colemak-DH · QWERTY
Coach
Ollama · Mistral (EU)
Deploy
docker compose up
Telemetry
None. Ever.

The loop

Type, measure, coach, drill.

Every number you see is computed on your machine, in code. The AI never scores you — it reads the numbers and turns them into plain-language advice and a drill aimed at your weakest keys.

01 / TYPE

Practice

Start with a handful of keys; each new one unlocks as you reach a share of your target speed. Monkeytype-style timed sessions whenever you want them.

02 / MEASURE

Measured in code

Speed, accuracy, per-key latency, same-finger bigrams and rhythm consistency — all computed locally and deterministically, never by the model.

03 / COACH

Local AI read-out

A local LLM reads the numbers and names the keys, letter pairs and rhythm hitches that hold you back — which finger, which hand — in a few honest sentences.

04 / DRILL

Targeted words

It writes a fresh word list built around exactly your weak keys or letter pairs, verified to actually contain them. Then you go again.

The app

See it in action.

A clean, keyboard-first interface that runs entirely on your machine. Click any shot to enlarge.

trainer
TrainerDistraction-free sessions; the banner shows when a coach drill is targeting your weak keys.
ai-coach
What your coach seesWeak keys, weak bigrams with SFB flags, and a rhythm line — the exact data the model reads.
heatmaps
Board-shaped heatmapsSpeed and consistency mapped onto your actual split layout, with not-yet-unlocked keys locked.
analysis
Bigram breakdownEvery pair classified — SFB, roll, alternation — with error %, rhythm and one-click targeted drills.
dashboard
Dashboard & trendsEvery completed session charted for speed and accuracy, plus 30-day trend and personal bests.
settings
Progressive unlockingPick your layout and session goal; tune the unlock threshold and mastery window to your pace.

Why Velocitype

Built for split keyboards, not adapted to them.

Most trainers treat a keyboard as one flat QWERTY slab. Velocitype knows your board has two halves, that your layout is Colemak-DH, and that the fix for a slow key depends on the finger that owns it.

Split-native by design

Real finger and hand maps for Colemak-DH and QWERTY on both the Ferris Sweep and the Corne — so it spots the same-finger bigrams and awkward rolls that generic trainers can't even see. The heatmap is shaped like your actual board, not a row-stagger slab.

Local by default, private by design

The coach is an Ollama model in your own stack. Pull and switch models straight from the web UI. There is no account with us, no telemetry, no phone-home — because there is no “us” in the loop at all.

Cloud only if you choose it — and only EU

Want a stronger coach without running a big local model? Optional Mistral support is built in — chosen deliberately as a European provider under EU data protection, rather than a US or Chinese frontier lab.

The coach

Two ways to run the AI. Both are yours to control.

The provider, the model, and even the coaching prompts are per-user settings. Start fully offline; reach for the cloud only if and when you want to.

Default · fully offline

Local — Ollama

A local model runs in the Ollama container beside the app. Nothing leaves your computer.

  • Ships ready for a small, fast model that runs on modest hardware
  • Browse, download and switch models from the web UI — no shell needed
  • Works completely air-gapped once the model is pulled
  • Reasoning traces stripped automatically for clean coaching output
Optional · EU cloud

Cloud — Mistral

Prefer a larger model? Add a Mistral key per user and switch provider in settings.

  • European provider, chosen for EU data-protection standards
  • A deliberate stance: no US or Chinese frontier LLMs
  • Your API key is encrypted at rest and never shown again
  • Off unless you turn it on — local stays the default

What's inside

An adaptive engine, not a word bank.

Progressive unlocking

keybr-style: you start on a few keys and unlock the next once every active key holds its share of your target speed. Threshold and window are yours to tune.

Bigram & rhythm analysis

Same-finger bigrams, inward/outward rolls, redirects, inter-key rhythm consistency and hesitation hitches — measured per letter pair, with SFBs flagged.

Board-shaped heatmap

A Ferris/Corne heatmap that colours each key by how much it's holding you back — cool for solid, hot for weak — with locked keys shown until you unlock them.

Targeted drills

Tick weak keys or bigrams in the Analysis tables and generate a coach drill aimed at exactly those — coverage-verified, with a deterministic fallback.

Editable coach prompts

Don't like the coaching voice? The analysis and drill prompts are yours to rewrite, per user, right in the settings.

Your data, on your terms

Sessions and stats live in your own Postgres and sync across your browsers. One password-confirmed click really deletes all of it — rows gone, not flagged.

Quickstart

Running in a few minutes.

Clone it, copy the example environment file, and bring the stack up. Then open the app, create a local account, and pull a coaching model from the AI settings — all from the browser.

bash — velocitype
# grab the source
git clone https://github.com/one7two99/velocitype.git
cd velocitype

# configure, then generate the JWT keypair
cp .env.example .env
./secrets/keygen.sh

# bring up the whole stack
docker compose up --build

# open the app, register, then pull a
# coaching model in Settings → AI
open http://localhost:8080/

On the workbench

Everything above ships today — including full bigram, same-finger-bigram and rhythm analysis. These are the next ideas in the queue, not yet built.

  • More boards (Lily58, Kyria)
  • More layouts (Workman, Graphite)
  • Trigram-targeted drills
  • Additional EU coach providers
  • Import / export of progress
  • Shareable progress cards