The Lunch Box is an alpha-stage portable Raspberry Pi cyberdeck and IoT workstation. It combines a keyboard-driven terminal launcher with system monitoring, Docker, MQTT, ESP32 development, Meshtastic messaging, serial diagnostics, and defensive security tools.
Status:
v0.1-alpha
Expect changes, incomplete features, and hardware-specific setup.
The project is intended for:
- Raspberry Pi and Linux learning
- ESP32 and LoRa development
- Meshtastic messaging
- MQTT and Node-RED experiments
- Authorized network diagnostics
- Defensive security auditing
- Portable IoT monitoring and logging
Use security and radio features only on systems, networks, frequencies, and devices that you own or are explicitly authorized to use.
- Arrow-key terminal launcher
- System dashboard
- Git status
- Mosquitto MQTT status
- Docker container status
- ESP32 PlatformIO project browser
- Separate Python project browser
- Pi-side Python virtual environments
- SerialManager with optional logging
- LoRaMessenger with:
- Broadcast and direct messages
- Known-node list
- Local Inbox and Outbox
- Automatic reconnect
- Retry queue
- Periodic beacon with a five-minute minimum interval
- GPSConsole project support
- Lynis security-audit manager
- Defensive security submenu
- Reboot, shutdown, and exit controls
- USB-drive project storage
The current build is designed around:
- Raspberry Pi 4
- Raspberry Pi OS 64-bit
- 7-inch display
- USB storage drive
- Heltec WiFi LoRa 32 V4 / ESP32-S3 / SX1262
- Data-capable USB cable
- Optional GPS/GNSS receiver
- Optional Linux-compatible USB Wi-Fi adapter
Other compatible hardware may work but is not yet tested.
The Lunch box/
├── README.md
├── HOWTO.md
├── .gitignore
├── start-launcher.sh
├── start-launcher.ps1
├── setup-pi-services.sh
├── launcher/
│ ├── launcher.py
│ ├── requirements.txt
│ └── config.yaml
├── Projects/
│ ├── ESP32/
│ │ └── LoRa-Test/
│ └── Python/
│ ├── GPSConsole/
│ ├── HelloLunchbox/
│ ├── LoRaMessenger/
│ ├── LynisManager/
│ └── SerialManager/
└── Backups/
Python virtual environments are deliberately stored on the Raspberry Pi instead of the exFAT USB drive:
~/.local/share/the-lunch-box/venvs/
Application data is stored under:
~/.local/share/the-lunch-box/
Copy the repository to the USB drive, connect it to the Raspberry Pi, and locate its mount point:
lsblk -f
find /media/$USER -name "launcher.py" 2>/dev/nullMove to the repository root and run:
bash ./setup-pi-services.sh
bash ./start-launcher.shLauncher controls:
Up / Down Navigate
Enter Select
B or Q Go back
Q Exit main menu
See HOWTO.md for detailed setup and troubleshooting.
LoRaMessenger expects a Meshtastic-compatible serial device, normally:
/dev/ttyACM0
Only one program can use the serial port at a time. Close SerialManager before starting LoRaMessenger.
LoRaMessenger stores its local message database at:
~/.local/share/the-lunch-box/LoRaMessenger/messages.db
Inbox entries are saved only while LoRaMessenger is connected and running. Outbox entries record locally composed messages and their local handoff status.
Never commit or publish:
- Meshtastic private keys
- Full Meshtastic configuration exports
- Channel-sharing URLs or QR codes
- Wi-Fi passwords
- API tokens
- MQTT credentials
- GPS coordinates or private location history
- Message databases
- Logs containing sensitive data
.venvdirectories
A public key may be shared. A private key must remain confidential and should stay on the radio.
- ESP32-S3 native USB may occasionally disconnect during persistent Meshtastic sessions.
- LoRaMessenger reconnect behavior requires more testing.
- Node-RED authentication is not configured automatically.
- Docker services are minimal and should not be exposed directly to the internet.
- ESP32 PlatformIO projects require a correct board definition and
platformio.ini. - The launcher is optimized for Raspberry Pi OS; Windows support is for interface testing only.