A high-performance, real-time monitoring and control application for Raspberry Pi devices with a beautiful glassmorphic UI.
- Live System Stats: CPU, RAM, Temperature, Uptime updated every 500ms
- CPU Charts: Smooth vector graphs showing 60-second history
- Memory Visualization: Detailed breakdown of Used/Free/Cached/Swap
- Thermal Monitoring: Color-coded temperature gauges for CPU & GPU
- Top Processes: View and manage resource-intensive processes
- Browse remote directories with intuitive navigation
- Upload/Download files with progress tracking
- File previews with syntax highlighting
- Rename, delete, create folders, change permissions
- Full
xterm-256colorcompatible SSH shell - Custom accessory keyboard (Esc, Tab, Ctrl, Alt, Arrows)
- Command history support
- List all systemd services (Active/Inactive/Failed)
- Start, Stop, Restart, Enable, Disable services
- Search and filter by service name
- Real-time log streaming via journalctl
- Filter by log level (Error/Warning/Info)
- Service-specific filtering
- Save multiple Pi connections securely
- Favorite connections for quick access
- Auto-reconnect with configurable retry logic
Cyberpunk / Sci-Fi Glassmorphism Theme
- Pure AMOLED Black background (#000000) for battery efficiency
- Frosted glass cards with blur effects
- Electric Indigo (#6366F1) and Teal (#14B8A6) accents
- Smooth animations and transitions
| Component | Technology | Purpose |
|---|---|---|
| Mobile App | Flutter 3.10+ | Cross-platform UI (iOS/Android) |
| Backend Agent | Go 1.25+ | Zero-dependency binary for Pi |
| Communication | gRPC + Protobuf | High-speed binary streaming |
| Security | SSH Tunnel | All traffic encrypted via SSH |
- User connects via standard SSH (port 22)
- App checks if Go agent is installed on Pi
- Auto-deploys agent if missing/outdated (takes ~5 seconds)
- Establishes SSH tunnel for gRPC traffic
- Streams real-time stats at 500ms intervals
-
Flutter SDK 3.10 or higher
flutter doctor
-
Go 1.25 or higher (for building agent)
go version
-
Protocol Buffers Compiler (protoc)
- Windows:
choco install protobuf - macOS:
brew install protobuf - Linux:
sudo apt-get install protobuf-compiler
- Windows:
-
Clone the repository
git clone https://github.com/yourusername/raspberrypi-control.git cd raspberrypi-control -
Generate Protobuf files
# Install Dart protobuf plugin dart pub global activate protoc_plugin # Generate code # Windows: generate_protos.bat # Linux/macOS: chmod +x generate_protos.sh ./generate_protos.sh
-
Build the Go agent
cd agent # Windows: build.bat # Linux/macOS: chmod +x build.sh ./build.sh
-
Install Flutter dependencies
flutter pub get
-
Run the app
flutter run
-
Launch the app
-
Tap "Connections" from the drawer menu
-
Add a new connection with your Pi's details:
- Name: e.g., "My Raspberry Pi 4"
- Host: IP address or hostname
- Port: 22 (default SSH port)
- Username: e.g., "pi"
- Password: your SSH password
-
Connect to your Pi
-
Install agent when prompted (automatic, ~5 seconds)
-
Start monitoring!
- β Raspberry Pi Zero/Zero W (ARMv6)
- β Raspberry Pi 2/3 (ARMv7)
- β Raspberry Pi 3/4/5 64-bit (ARM64)
The app automatically detects your Pi's architecture and deploys the correct binary.
raspberrypi-control/
βββ agent/ # Go agent source
β βββ main.go # Entry point
β βββ server.go # gRPC server implementation
β βββ build.sh # Cross-compilation script
β βββ proto/ # Generated Go protobuf code
β
βββ lib/ # Flutter app source
β βββ main.dart # App entry point
β βββ models/ # Data models
β βββ providers/ # Riverpod state management
β βββ screens/ # UI screens
β βββ services/ # Business logic
β βββ theme/ # Glassmorphism theme
β βββ widgets/ # Reusable components
β βββ generated/ # Generated Dart protobuf code
β
βββ protos/ # Protocol Buffer definitions
β βββ pi_control.proto # API contract
β
βββ assets/
β βββ bin/ # Compiled Go agent binaries
β
βββ README.md
flutter build apk --release
# or
flutter build appbundle --releaseflutter build ios --releaseThe Go agent runs on the Raspberry Pi and provides system information via gRPC.
Rebuild agent after changes:
cd agent
./build.sh # Creates binaries for all Pi architecturesTest agent locally:
cd agent
go run . --version
go run . --port 50051- Encrypted Communication: All traffic flows through SSH tunnel
- No Open Ports: No firewall configuration needed
- Secure Storage: Passwords encrypted in device keychain
- No Remote Access: Agent only listens on localhost via SSH
Error: protoc: command not found
Solution: Install Protocol Buffers compiler (see Prerequisites)
Possible causes:
- SSH not enabled on Pi:
sudo raspi-configβ Interface Options β SSH - Wrong credentials: Double-check username/password
- Firewall blocking: Ensure port 22 is accessible
- Wrong IP address: Verify with
hostname -Ion Pi
Error: Permission denied
Solution: Ensure SSH user has write permissions to home directory
Error: Missing generated files
Solution: Run generate_protos.bat or ./generate_protos.sh first
See protos/pi_control.proto for the complete gRPC API definition.
StreamStats: Real-time system statistics (500ms intervals)ListProcesses: Get all running processesKillProcess: Terminate a process by PIDListServices: Get all systemd servicesManageService: Start/stop/restart/enable/disable servicesStreamLogs: Real-time log streamingGetDiskInfo: Disk usage informationGetNetworkInfo: Network interface details
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter - UI framework
- Go - Agent implementation
- gRPC - High-performance RPC framework
- gopsutil - System information library
- dartssh2 - SSH implementation for Dart
For questions or support, please open an issue on GitHub.
Made with β€οΈ for the Raspberry Pi community