New in version 2.6.0
- A session can be removed from the journal, XP included.
- Hold a + or - button and it repeats, faster over time.
- Turning off animations in Android now applies at once.
- Tablets and foldables keep one readable column.
- Bigger tap targets and stronger contrast.
- Installed by hand? Bati can tell you when a new
version is out. Off by default.
- A restore first saves a copy of your current data.
Train like a hero, build like a king.
Bati turns strength training into a dark-fantasy RPG. A workout is a quest. Reps land as damage on a boss. The muscles you actually work raise the buildings of a village that grows out of what you lifted, not out of what you bought.
SPORT FIRST, RPG SECOND
The training logic leads and the game amplifies it. Nothing decorative gets between you and your next set: large tap targets, high-contrast text, and a screen designed for one hand in a noisy gym.
WHAT YOU GET
• Quests: guided sessions with targets that adapt to your level
• Adventures: multi-session campaigns with a story between steps
• Boss fights: reps become damage; weaknesses and criticals make the numbers mean something
• Outings: walk, run or ride; the ground you cover raises the road out of the village
• A village: buildings level up from the volume you actually logged
• Oaths: pick one goal and let the app hold you to it
• A journal: history, records, your flame, muscle balance
YOUR TRAINING STAYS ON YOUR PHONE
No account. No sign-up. No server of ours. No analytics, no ads, no tracking of any kind. Your sessions, your records and the GPS trace of an outing live in a database on your device and nowhere else. Uninstalling the app destroys every record it ever made.
One exception, off by default: the map behind an outing's route. Switched on in Settings, the phone asks OpenFreeMap (OpenStreetMap data, served from tiles.openfreemap.org) for tiles, the square images a map is made of, covering the place where you went. That request tells the host roughly where you were, with your IP address and the time. Not the route to the metre, not the pace, not the training, not who you are, but the area, yes. Off, or switched off again with one tap, the route is drawn on a plain background and the app makes no network request at all. No other part of the app is allowed to open a connection: a lint rule fails the build if a network call appears anywhere in the code.
Location is read only while an outing is running, by a GPS module written for this app against Android's own location service. No Google Play Services, no third-party SDK, nothing that phones home.
The map is the one switch, and it starts off. Everything else above is the architecture, checked at build time.
BODYWEIGHT FIRST
The exercise catalogue is built around what you can do with no equipment, and adapts if you own some. Warm-ups are dynamic and scaled to the session in front of you, because a five-minute warm-up before a six-minute workout is a warm-up nobody does twice.
Open source: https://github.com/Guiforge/bati
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid
-
arm64-v8a
This version requires Android 7.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
access approximate location only in the foreground
This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.
-
access precise location only in the foreground
This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "location"
Allows the app to make use of foreground services with the type "location"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
read the contents of your shared storage
Allows the app to read the contents of your shared storage.
-
control vibration
Allows the app to control the vibrator.
-
prevent phone from sleeping
Allows the app to prevent the phone from going to sleep.
-
modify or delete the contents of your shared storage
Allows the app to write the contents of your shared storage.
-
com.guiforge.bati.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Download APK
53 MiB
PGP Signature
|
Build Log
New in version 2.5.3
- Restoring a backup works again after a first try.
Every file you picked next used to say it could not
be opened until Bati was restarted.
- A restore that worked no longer says it stopped,
and your previous data is kept aside as it should be.
-
arm64-v8a
This version requires Android 7.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
access approximate location only in the foreground
This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.
-
access precise location only in the foreground
This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "location"
Allows the app to make use of foreground services with the type "location"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
read the contents of your shared storage
Allows the app to read the contents of your shared storage.
-
control vibration
Allows the app to control the vibrator.
-
prevent phone from sleeping
Allows the app to prevent the phone from going to sleep.
-
modify or delete the contents of your shared storage
Allows the app to write the contents of your shared storage.
-
com.guiforge.bati.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Download APK
53 MiB
PGP Signature
|
Build Log
New in version 2.5.2
- The map moves under your finger, on an outing and on
its recap. A button brings it back to you.
- If your phone blocks Bati's network access, the map
says so and opens the right settings, instead of
staying blank.
-
arm64-v8a
This version requires Android 7.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
access approximate location only in the foreground
This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.
-
access precise location only in the foreground
This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "location"
Allows the app to make use of foreground services with the type "location"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
read the contents of your shared storage
Allows the app to read the contents of your shared storage.
-
control vibration
Allows the app to control the vibrator.
-
prevent phone from sleeping
Allows the app to prevent the phone from going to sleep.
-
modify or delete the contents of your shared storage
Allows the app to write the contents of your shared storage.
-
com.guiforge.bati.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Download APK
53 MiB
PGP Signature
|
Build Log