package icon

Bati: Fitness RPG

Turn workouts into quests, boss fights and a village built by your training.
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
  • Version 2.6.0 (20600) suggested Added on Sep 27, 2026

    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.
  • Version 2.5.3 (20503) - Added on Sep 21, 2026

    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.
  • Version 2.5.2 (20502) - Added on Sep 19, 2026

    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