Demo
한국어Demo videoIn-car clip to be added
Why I built it
한국어FSD (Supervised) drives the route set by the car's built-in navigation, which in Korea doesn't use Google Maps. In stop-and-go traffic like central Seoul's, the route picked by my phone's navigation app was often better.
As an FSD driver, I wanted one thing: for the car to follow the route from the app that navigates better.
One trip, two routes
한국어The approach
한국어Steering the route with waypoints
Set a destination in your phone's navigation app and start guidance.
CyberRoute picks out the key junctions on that route.
It sends those junctions to the car as waypoints. To pass through them, the car takes the same roads as the phone app.
The phone talks to the car directly over Bluetooth.
Junctions become waypoints
한국어The wall
한국어A car that wanted to stop at every waypoint
Adding waypoints created a problem I hadn't expected. FSD treated each waypoint as a place to visit and tried to pull over there. The car couldn't get to the destination in one go.
The workaround
한국어The car has no option to drive through a waypoint without stopping. With no way to solve it head-on, I found a workaround that gets the same result using only navigation features the car already supports. I'm keeping the details private.
Now the car no longer stops at waypoints and follows the phone app's route all the way to the destination. I've confirmed this on real drives.
What works today
한국어- Sends the destination to the car's navigation when guidance starts in Kakao Navi
- Steers the route by sending key junctions as waypoints
- Drives to the final destination without stopping at waypoints
- Stability and error handling ready for a public release
- iOS version
Scope
한국어CyberRoute only sets the navigation destination and waypoints. The driving is up to FSD (Supervised) and the driver supervising it.
How I built it
한국어I'm not a developer. I'm a finance professional working in M&A advisory.
AI coding tools wrote the code; I decided what to build and checked the results in the car.
- AI coding tools
- OpenAI Codex, Google Antigravity, Claude Code
What the AI coding tools did
- Wrote and revised the app code
- Analyzed error logs and proposed fixes
- Researched public documentation and source code
What I did
한국어- Problem definition: what was wrong, and what would count as solved
- Design decisions: how to talk to the car, default settings, safety rules
- In-car testing: designed parked and on-road tests and logged the results
- Root-cause hunting: when stuck, formed hypotheses and tested them one at a time
- Launch requirements: terms of service, partnerships, regulatory filings, IP
- Tech
- Android, Bluetooth Low Energy, Tesla vehicle-command SDK (Go), Kakao Mobility Directions API, Kakao Local API (place and address search), Android Keystore encryption
Three problems I had to solve
한국어Securing the Kakao API keyA key shipped inside the app can be extracted and used by anyone.
What I decided
The key never ships in the app; it lives only on a separate relay server. The app reaches Kakao only through that server, which accepts only requests carrying the app's own access token, passes through only route and address searches, and rate-limits calls.
Protecting the car's VINConnecting to the car requires its VIN, which identifies a specific vehicle.
What I decided
The VIN is stored only on the phone, encrypted with Android Keystore, and is never sent to any server. The app connects only to the car whose Bluetooth name exactly matches the one derived from the VIN, and release builds never write the VIN to logs.
Sending commands over BLETalking to the car directly from the phone, with no server, means handling key pairing, secure sessions and command signing. The car acknowledging a command also turned out to be different from navigation actually starting.
What I decided
No home-made cryptography: Tesla's published SDK is used as is. The phone key can only be added from inside the car, by tapping the key card and approving on the car's screen. The app contains navigation commands only, so it can't open the doors or trunk or otherwise operate the car. Success is judged by the car's actual navigation state, not by the acknowledgment.
What's left before a public release
한국어This is a non-commercial personal project for now. Before others can use it, these need to be in place.
What needs to be in place
한국어Partnership with Kakao MobilityInquiry sent; no reply yet, exploring other channels
Why it's needed
Commercial use of its Directions API requires a partnership agreement in advance.
Partnerships with other map providers, such as NaverNot started
Why it's needed
Needed to support routes from other navigation apps.
Registration as a location-based service providerNot started
Why it's needed
A legal requirement in Korea for services that handle users' real-time location.
A revenue model that covers running costsPlanning
Why it's needed
API and server costs.
Prior approval from my employerOnce I decide to launch commercially
Why it's needed
Required before any commercial activity.
What's next
한국어Now: keep improving until it's good enough for a public release.
Demand: I expect demand to grow once many more cars in Korea can use FSD (Supervised). Even with FSD in wide use, navigation is likely to remain the weak spot.
Commercial launch: only once demand is confirmed, and only after map-provider partnerships, location-based service registration and my employer's prior approval are all in place.
Platforms: Android today; iOS if needed.
Contact
한국어CyberRoute is an unofficial app made by an individual. It is not affiliated with or endorsed by Tesla or Kakao Mobility. Tesla, FSD and Kakao Navi are trademarks of their respective owners.