Numbra generates reproducible exercises, runs short timed stages, and keeps your history, personal records, and day streak in a local SQLite database.
- Reproducible sessions. A seed gives the same exercises every time; exercises stay unique until the catalog runs out.
- Three difficulties.
easy,normal, andhard, with transparent static profiles. - Timed stages. Slow, normal, and fast stages. Soft mode keeps input open past the limit and lowers the score;
--strictends the attempt at the limit. - Beyond
+ − × ÷. Optional square roots, trigonometry, logarithms, powers, identities, and mental-math tricks such as43 * 11or97 * 94. - Exact answers. Integers and fractions like
3/4, graded with exact arithmetic. - Progress that means something. Grades from S to D, personal bests per setup, average time per correct answer, a level recommendation, and a day streak.
- Local only. No account, no cloud, no network.
Python 3.13 or newer is required. From a checkout:
uv tool install .
numbra --versionOr download numbra-<version>-py3-none-any.whl from the release assets and run uv tool install ./numbra-<version>-py3-none-any.whl.
numbra challenge # six minutes, three stages, normal difficulty
numbra challenge -d hard --strict
numbra challenge -o "*,/" -t 3 # only multiplication and division, three minutes
numbra challenge -o tricks # mental-math tricks
numbra tricks # every trick with its rule and an example
numbra results # history, personal records, streakPress Ctrl+C to cancel; an incomplete session is not saved.
Stage 1/3 · slow · 9 examples
Example 1/27 · limit 17s
48 * 5 =
Correct · score 1.00
After the last example Numbra prints your score and grade, a breakdown by stage, operation, and topic, the delta against your previous comparable session, your personal best, and your streak.
| Page | What is in it |
|---|---|
| Usage | Commands, options, results |
| Training rules | Difficulty, stages, timing, scoring, progress |
| Configuration | numbra.toml, file locations |
| Agent reference | Internals for coding agents; start with AGENTS.md |
uv sync --locked --all-groups
uv run pytest
uv run ruff check . && uv run ruff format --check . && uv run mypyMIT. See LICENSE.