KonaPod is a tool to collect your Hyundai vehicle data together in one secure and private place. You can selectively share any parts of your data with others. The app itself presents the data and analyses of the data. It is being developed by Togaware and pair programmed by Graham Williams and Claude Code.
We make this project available for free so if you appreciate the app then please show some ❤️ and tap on the star at GitHub to support our work.
The latest version of the app can be run online at konapod.solidcommunity.au with no installation required though requiring a Bluelink login, or downloaded and installed for your platform from the Solid Community AU repository:
Installation details are available for all platforms.
Contributions are welcome. Visit github to submit an issue or, even better, fork the repository yourself, update the code, and submit a Pull Request. The app is implemented in Flutter using solidui. Thanks.
A Flutter app to view your Hyundai Bluelink vehicle data (currently for Australia / NZ but please send in PRs for other regions).
Under settings you can specify your username, password and pin to access your Bluelink account. This is necessary to be able to use this app. Currently only AU/NZ are supported but we welcome pull requests to extend to other jurisdications.
Login Screen - Here you can connect to your historic data you have stored securely and privately on your Solid Pod.

Changelog Screen - Tap the Version string to get the latest changes for the app.

Status Page - The basic home page reports some of the key information of interest to the driver.

Status Page - Here we see some doors are open as well as the boot.

Energy Page - The status of the battery and other energy related statistics are presented here.

Energy Page while Charging - Here we see a charger is plugged in and the vehicle is charging at 2.2kW (plugged into the normal home 240V supply) with 9 hours and 40 minutes to go to 100%. Currently at 75% charge and 333km range.

Energy Page Plugged In - The plugged status remains Plugged In and and
the Charging status disapers after charging has reached its set target
(100% here though recommended up to 80% day-to-day as set with the
Target SOC) and so the vehicle is no longer charging.

Visuals Page - Here we explore visually some of the vehicle performace stats. The tooltip shows on this particular day the car regenerated about half of the used power through braking, using iPedal that day.

Stats Page - Various statistics about your vehicle’s performance.

History Page - This data is stored securely and privately on your Solid Pod. Tap the down arrow to load any dataset into the app as the analysed/displayed dataset (replacing the data downloaded from your vehicle).

flutter doctor passing for your target platformgit clone git@github.com:gjwgit/konapod.git
cd konapod
flutter pub get
flutter run
The Bluelink Australia API is not officially published by Hyundai. This app uses endpoints reverse-engineered by the community:
bluelink --region Australia --brand Hyundai \
--username FOO --password BAR --pin 1234 \
info --json infos.json
Note that the API returns a “driving date” as a string like
“20260403”, and the code uses strptime() to create a naive datetime
at midnight with no timezone info. The Bluelink server aggregates
daily statistics by UTC day boundaries. So driving done before 11am
AEDT or 10am AEST (= midnight UTC) on April 4th, for example, gets
bucketed into April 3rd’s stats, and the date label
says 20260403. This as a known Bluelink API limitation. The root cause
is server-side and not something the client library can fully fix.
Hyundai’s AU API requires a rotating “stamp” header.
This app fetches stamps from the community stamp server:
https://raw.githubusercontent.com/neoPix/bluelinky-stamps/master/hyundai-{appId}.v2.json
If the stamp server is unavailable, some API calls may fail.
Avoid refreshing too frequently — over-polling can drain your car’s 12V battery. The app uses cached status (latest known state) by default, which is safe. Force-refresh directly queries the car’s modem.
Add to android/app/src/main/AndroidManifest.xml inside <application>:
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
And create android/app/src/main/res/xml/network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">au-apigw.ccs.hyundai.com.au</domain>
</domain-config>
</network-security-config>
Add to ios/Runner/Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>