Overview

All 14 built-in apps at a glance.

Name Description Category Status
LauncherHome screen with app grid and favorites dockSystemBuilt-in
SettingsSystem configuration (WiFi, display, theme)SystemBuilt-in
MessengerMessaging app with working LoRa transport and in-progress SMS/BLE/Internet backendsCommunicationBuilt-in
NavigatorGPS position, bearing, grid reference displayNavigationBuilt-in
NotesSimple text editor with SD card save/loadProductivityBuilt-in
File ManagerBrowse SD card, view/copy/delete filesUtilityBuilt-in
ReaderE-book reader for text files and PDFsProductivityBuilt-in
App StoreBrowse, download, install signed apps OTASystemBuilt-in
WiFi ScannerScan networks, show RSSI, channel, encryptionSecurityBuilt-in
TerminalSerial terminal with shell and UART modeUtilityBuilt-in
AI AssistantClaude-powered assistant via HTTP APIProductivityBuilt-in
VaultEncrypted file storage on SD cardSecurityBuilt-in
WeatherWeather display (requires internet)UtilityBuilt-in
FlashlightScreen-as-flashlight, LED controlUtilityBuilt-in

App Manifest Format

Every app — whether built-in or loaded from storage — has an accompanying manifest.json that declares its identity, permissions, and requirements:

{
  "name": "my-app",
  "version": "1.0.0",
  "display_name": "My App",
  "description": "A sample ThistleOS application",
  "category": "Utility",
  "entry": "my-app.app.elf",
  "permissions": ["network", "storage"],
  "min_kernel": "0.1.0"
}

Loading from Storage

Apps stored as .app.elf files on SPIFFS or SD card are discovered and loaded by the kernel's app manager at boot. The kernel verifies the Ed25519 signature on each ELF before loading — signed apps receive full permissions, while unsigned apps are restricted to IPC-only access.

Apps communicate with the kernel through the syscall table (C ABI), which exports 45+ ESP-IDF APIs for display, storage, networking, and hardware access.

Want to build an app?
See the Building Apps guide for step-by-step instructions on creating a ThistleOS application.