What Sunshine provides
Sunshine takes over the responsibilities of the original unu cloud: real-time telemetry, a trip log, sharing, browser-based remote control, statistics, and software updates for the scooter. It also adds features that were not part of the original software, including a configurable alarm system, achievements, and leaderboards. No dedicated app is required; everything runs in the browser, including on a phone.
Day-to-day functionality
Lock, unlock, locate. The scooter can be locked and unlocked remotely. The “Find my scooter” function emits a short tone and activates the hazard lights. Individual blinkers, the hazard lights, and remote opening of the seatbox are also available.
Alarm system. A motion sensor detects two stages: light movement triggers the hazard lights; sustained movement adds the horn. Volume, duration, and automatic arming on lock are configurable. Unauthorized movement triggers an email containing the location and a map link.
Location data and weather. The map shows the most recent known position, the corresponding address, and current weather plus a forecast. The weather data comes from the German Weather Service via the BrightSky API. No third-party services are contacted, and no API key is required.
Battery information. Per-battery state of charge, state of health, and cycle count. Tracking is done by serial number, not slot, so swapping batteries during a trip is recorded correctly.
Trip log. Trips are detected and recorded automatically. The trip view shows the route on a map with speed-graded coloring, an elevation profile, energy consumption, and average and top speed.
Statistics. Reports over 7 days, 30 days, 3 or 6 months, a year, year-to-date, or the entire lifetime. Distance, riding time, energy use (Wh/km), speed distribution, and efficiency are tracked. Charts can be resolved by hour, day, week, or month.
Achievements and leaderboards. Over thirty public achievements (distance tiers, trip counts, top speed, seasons, membership duration), plus per-instance configurable secret achievements. Leaderboard participation is explicitly opt-in.
Sharing. Scooters can be shared with family or friends, with granular per-person permissions. Invitations go out by email; the recipient confirms by clicking a link.
Hardware tracking. Batteries, MDB, DBC, and ECU are identified automatically from telemetry. Replacements and rotations are timestamped and logged.
Requirements
- A unu Scooter Pro (the unu Scooter Move is not currently supported)
- A Nano-SIM (any carrier; about 50 MB of data per month is sufficient)
- Our SIM adapter, which is soldered in place of the original deactivated unu SIM. Availability on request in Discord.
- Basic soldering skill or access to a repair service
- A few minutes for setup
Setup
- Solder in the SIM adapter, remove the original unu SIM, insert the Nano-SIM
- Create an account at sunshine.rescoot.org (invitation link in Discord)
- Enter the VIN and a name for the scooter
- Run the install command Sunshine generates for you in an SSH session on the scooter
- Done
The installer detects automatically whether the scooter is running stock firmware or librescoot and installs the matching variant of the telemetry client (radio-gaga).
Developer interfaces
API. OAuth 2.0 with three scopes (read, write, scooter_control), with PKCE support for mobile applications. Legacy bearer tokens remain supported.
MCP. Sunshine implements the Model Context Protocol. An MCP-capable client can drive the scooter directly: lock, unlock, horn, navigation, status queries, listing trips.
Stack. Rails 8.1, PostgreSQL 17 with PostGIS, SolidQueue for background jobs, Hotwire/Turbo on the front end, Tailwind 4. Scooters connect in parallel via MQTT (older firmware) and a WebSocket uplink (newer). Source at github.com/rescoot/sunshine, licensed AGPL-3.0.
Current status
Sunshine has been running in production since December 2024. The migration from SQLite to PostgreSQL with PostGIS is complete; the achievement system has been substantially expanded. Currently in progress: synchronisation of saved destinations between browser and scooter, unified acknowledgment across both transports, and the rollout of a stable update channel.
Bug reports and feature requests via GitHub or in Discord.