Remote management platform for comma devices running sunnypilot - an open-source driver assistance system forked.
sunnylink is a web-based control center that allows you to remotely manage comma devices running sunnypilot from anywhere in the world. Configure settings, switch driving models, monitor device status, and backup configurations through a secure, modern interface.
- Framework: SvelteKit with Svelte 5 (runes)
- Language: TypeScript with strict mode
- Styling: Tailwind CSS + DaisyUI components
- Authentication: Logto SSO integration
- API: OpenAPI-generated TypeScript clients
- PWA: Progressive Web App with service worker
- Multi-device support with online/offline status monitoring
- Custom device aliasing and organization
- Real-time device communication via websockets
- Device registration, deregistration, and migration
- Configurable parameters across 7 categories:
- Device: Core settings (language, units, recording)
- Toggles: Feature switches and experimental modes
- Steering: Advanced steering control (MADS, torque, neural control)
- Cruise: Speed control and adaptive cruise settings
- Visuals: UI customization and display preferences
- Developer: Advanced debugging and development tools
- Other: Navigation, maps, and system settings
- Browse and switch between driving models
- Model metadata display (runner, generation, build time)
- Offroad mode enforcement for safety
- Force offroad option with warnings
- Complete device settings backup as JSON
- Settings migration between devices
- Progress tracking for all operations
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build for production
pnpm build
# Run type checking
pnpm check
# Run tests
pnpm testsrc/
├── routes/ # SvelteKit pages and layouts
├── components/ # Reusable UI components
├── lib/
│ ├── api/ # OpenAPI client wrappers and device functions
│ ├── stores/ # Svelte reactive state
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
└── sunnylink/ # API schemas (v0, v1)
- Uses Svelte 5 runes (
$state,$derived,$effect) for reactive state management - OpenAPI schemas in
sunnylink/directory with custom client wrappers - Prettier with tabs, single quotes, 100 char width
- Dark theme with responsive design for mobile and desktop