Offline-first guitar practice, routine building and progress tracking.
Free · no account · works offline · ~21 MB
Exercio is an offline-first guitar practice app for building personalized routines, running focused practice sessions, and tracking progress.
It exists because most practice goes badly for a boring reason: you sit down, you play the thing you can already play, and forty minutes disappear. Exercio gives that time a shape — sections with targets, exercises with tempos, and an honest record of what actually happened.
Everything works with no network. No account, no cloud, no telemetry, no model. The routine generator is a deterministic local function of the answers you give it — the same answers always produce the same routine.
Core principle: practice content is data; application capabilities are features. "Triads" and "Alternate Picking" are editable content, never hard-coded screens.
| Routines | Practice mode | Focus attempt |
|---|---|---|
![]() |
![]() |
![]() |
| Practice Library | Guitar DNA | Your practice path |
|---|---|---|
![]() |
![]() |
![]() |
| Generated routine | History | Session review |
|---|---|---|
![]() |
![]() |
![]() |
Routines
- Build a routine by hand, section by section
- Or answer eight questions and let Guitar DNA propose one
- Sections carry a planned duration; the routine's total is derived, never stored
- Exercises are reusable across routines, each placement with its own overrides
Practice mode
- A section timer, and a separate focus timer for a single exercise
- Manual or auto-advance section completion
- Next / Previous / Pause / Resume, with controls that disable when they cannot apply
- Overrunning a target is allowed — it tells you, it does not stop you
Metronome
- Its own tempo, independent of the exercise tempo
- Slider, ± steppers, and press-and-hold to run through the range
- Six original synthesized sound packs, chosen separately from the visual theme
- Runs in a foreground service, so it keeps sounding when the screen locks
Progress
- Every attempt records the tempo used and, optionally, how it went
- Current tempo, target tempo, clean streaks and a progress graph — all derived from history, so correcting an old rating corrects the graph
- Practice history with per-session review
Everything else
- 15 practice categories and 147 recommended topics
- Optional per-attempt quality and fatigue ratings, notes, tunings, difficulty
- Six visual themes
- Local data only, no account required
Eight questions — what you want said about your playing in three years, which guitarists make you want to practise and what it is about them, how long a realistic session is, where you are now, what annoys you most, which musical worlds pull at you, and the one thing you would fix overnight.
Those answers become weighted priorities across the practice library, and those priorities become an editable routine that adds up to exactly the length you asked for.
It is a deterministic local function — no model, no network, no randomness. Fourteen guitarists ship as weight matrices, and anyone not on the list can be typed in and still shapes the result. Every section explains itself in words: "Weakness: Rhythm", "Guthrie Govan · Phrasing" — never coefficients.
The result is described, never diagnosed. A path name says what the routine emphasises; it never tells you what you are.
15 categories, 147 topics — warm-up, picking, legato, speed, technique, rhythm, musicianship, ear training, fretboard knowledge, theory, chords, improvisation, musical vocabulary, creativity and repertoire.
The library recommends; it never restricts. Typing your own name is always one tap away, and "John Petrucci picking torture" is as valid an exercise as anything shipped.
Adding an exercise to a section shows the topics recommended for that section first, then the three exercises you are most likely to want — the ones related to that category, most recently practised first.
The same practice state under all six themes. Only the theme changes.
A theme decides colour, type, shape, motion and the metronome's voice — but no screen ever asks which theme is active. Every widget reads tokens, so adding a theme changes no feature code.
Or pick the build that matches your phone:
| Your phone | Download | Size |
|---|---|---|
| Most phones since ~2017 | arm64-v8a | 21 MB |
| Older 32-bit phones | armeabi-v7a | 18 MB |
| Emulators, x86 Chromebooks | x86_64 | 22 MB |
| Not sure | universal | 58 MB |
Android 7.0 or newer. Android will warn you about installing outside the Play Store — that is expected for a sideloaded APK. There is no Play Store listing yet.
Verifying your download
Every Exercio release is signed with the same certificate:
SHA-256 3E:BE:A6:F5:88:5F:53:AD:DF:35:E2:B8:E1:41:0D:A1
39:72:C7:AB:DC:21:5A:17:20:5F:B8:99:DD:C5:27:E3
apksigner verify --print-certs Exercio-v0.1.0-beta.1-arm64-v8a.apkAnd check the file arrived intact, against SHA256SUMS.txt on the release page:
sha256sum -c SHA256SUMS.txtIf an APK claiming to be Exercio shows a different fingerprint, it did not come from here.
Everything stays on the phone. See PRIVACY.md for the full statement; briefly:
- Practice data is stored in a local database on the device
- No account, no sign-in, no server
- No analytics SDK, no advertising SDK, no crash reporting
- Nothing is uploaded anywhere, because there is nowhere to upload it to
- Four Android permissions, all for playing sound at the right moment
v0.1.0-beta.1 — public beta. Android only.
The MVP is feature-complete and has been tested on real hardware. It is called a beta because it has been tested by one person on one phone, not because anything is known to be broken.
What is not there yet: cloud sync, routine sharing, an account system, iOS, web. See ROADMAP.md.
| v0.2 | Routine sharing — export, import, Android share sheet. Local first, no account. |
| v0.3 | Optional cloud sync and backup. Optional forever; the app stays fully offline without it. |
| Later | More themes and sound packs, JSON backup/restore, web and other platforms |
| Exploring | Tuner, recording, backing tracks, richer analytics, reminders, a community routine library |
Nothing here is dated, and not everything will be built. See ROADMAP.md for the honest version.
| Tool | Version |
|---|---|
| Flutter | 3.44.8 (stable) |
| Dart | 3.12.2 |
Dart 3.6+ is required — this repository uses pub workspaces.
flutter pub getflutter runapps/guitar_practice_app Flutter app; composition root
packages/practice_core Pure Dart. Domain models and session reducers.
packages/practice_data Pure Dart. drift schema and repositories.
packages/practice_audio_api Pure Dart. Metronome and cue contracts.
packages/practice_audio_android Flutter plugin. Kotlin audio engine.
tools/arch_check Dependency-rule checker, run in CI.
practice_core depends on nothing — not Flutter, not the database, not the
platform. The direction is enforced by tools/arch_check in CI, not by
convention.
The directories still say guitar_practice, as does the Android
applicationId. That is deliberate: an applicationId is an app's identity to
Android, so changing it would make the next build a different app and an
existing install would not upgrade.
dart analyzedart run tools/arch_check/bin/arch_check.dartflutter test| minSdk | 24 (Android 7.0) — Flutter's supported floor |
| targetSdk | 36 (Android 16) |
| compileSdk | 36 |
| ABIs | armeabi-v7a, arm64-v8a, x86_64 |
Two platform behaviours worth knowing:
- The metronome runs in a
mediaPlaybackforeground service started while the app is visible, which is what lets it keep sounding after the screen locks under Android 17 background audio hardening. - Background target cues are
USAGE_ALARMsounds from anAlarmManagerbroadcast. On Android 17 that path needs the user-grantedSCHEDULE_EXACT_ALARMpermission to be audible while the app is backgrounded and the metronome is off. Denied, foreground practice is unaffected.
flutter build apk --release --split-per-abiflutter build appbundle --releaseRelease signing reads an untracked apps/guitar_practice_app/android/key.properties.
Without it the build falls back to debug keys and says so — installable for
testing, never publishable. See docs/release/.
Contributions are welcome. CONTRIBUTING.md covers the project structure, the architectural boundaries, and how to add a theme, a sound pack, or a practice-library topic.
Please read CODE_OF_CONDUCT.md, and report security issues privately via SECURITY.md.
MIT — see LICENSE.
Bundled fonts are SIL Open Font License 1.1; see the font notice. The Exercio name and logo are part of this repository and covered by the same licence.














