name: fully-kiosk description: Comprehensive Fully Kiosk Browser management for Android tablets and kiosk devices. Control screen, brightness, URLs, screensavers, TTS, media playback. Manage device fleets via REST API, MQTT, Fully Cloud. Integrate with Home Assistant. Configure kiosk mode, motion detection, remote admin. Supports Fire tablets, Android tablets, wall panels. Use for dashboards, digital signage, locked kiosks. version: 1.0.0
Fully Kiosk Browser Management Skill
Complete management and configuration of Fully Kiosk Browser deployments across Android devices including Amazon Fire tablets, Samsung tablets, and wall-mounted panels.
Overview
Fully Kiosk Browser is an Android app that transforms tablets into secure kiosk displays, digital signage, or smart home dashboards. This skill provides:
- REST API Control: 70+ commands for device management
- Fleet Management: Multi-device batch operations
- Fully Cloud Integration: Centralized cloud management
- Home Assistant Integration: Native HA integration + MQTT
- Configuration Templates: Pre-built configs for common use cases
Quick Reference
REST API Base URL
http://<device-ip>:2323/?cmd=<command>&password=<password>&type=json
Essential Commands
| Command | Description |
|---|---|
deviceInfo | Get device status, battery, storage |
screenOn / screenOff | Control display |
loadStartUrl | Load configured home page |
loadUrl&url=<url> | Navigate to specific URL |
startScreensaver / stopScreensaver | Screensaver control |
textToSpeech&text=<text> | Speak text aloud |
playSound&url=<url> | Play audio file |
setStringSetting&key=<key>&value=<val> | Change setting |
listSettings | Get all current settings |
Device Management
Get Device Information
# Basic device info
curl "http://192.168.1.100:2323/?cmd=deviceInfo&type=json&password=YOUR_PASSWORD"
# Response includes:
# - deviceID, deviceName, deviceModel
# - batteryLevel, isPlugged
# - screenOn, screenBrightness
# - currentTabUrl, wifiSSID
# - ip4, mac, appVersion
Screen Control
# Turn screen on
curl "http://192.168.1.100:2323/?cmd=screenOn&password=YOUR_PASSWORD"
# Turn screen off
curl "http://192.168.1.100:2323/?cmd=screenOff&password=YOUR_PASSWORD"
# Set brightness (0-255)
curl "http://192.168.1.100:2323/?cmd=setStringSetting&key=screenBrightness&value=128&password=YOUR_PASSWORD"
# Force device sleep
curl "http://192.168.1.100:2323/?cmd=forceSleep&password=YOUR_PASSWORD"
# Trigger motion (simulate motion detection)
curl "http://192.168.1.100:2323/?cmd=triggerMotion&password=YOUR_PASSWORD"
URL Navigation
# Load home URL
curl "http://192.168.1.100:2323/?cmd=loadStartUrl&password=YOUR_PASSWORD"
# Load specific URL
curl "http://192.168.1.100:2323/?cmd=loadUrl&url=http://homeassistant.local:8123&password=YOUR_PASSWORD"
# Open in new tab
curl "http://192.168.1.100:2323/?cmd=loadUrl&url=http://example.com&newtab=true&focus=true&password=YOUR_PASSWORD"
# Switch to tab by index
curl "http://192.168.1.100:2323/?cmd=focusTab&tab=0&password=YOUR_PASSWORD"
# Refresh current tab
curl "http://192.168.1.100:2323/?cmd=refreshTab&password=YOUR_PASSWORD"
# Close tab
curl "http://192.168.1.100:2323/?cmd=closeTab&tab=1&password=YOUR_PASSWORD"
Audio & Text-to-Speech
# Text to speech
curl "http://192.168.1.100:2323/?cmd=textToSpeech&text=Doorbell%20rang&password=YOUR_PASSWORD"
# TTS with locale
curl "http://192.168.1.100:2323/?cmd=textToSpeech&text=Hello&locale=en_US&password=YOUR_PASSWORD"
# Play sound file
curl "http://192.168.1.100:2323/?cmd=playSound&url=http://server/doorbell.mp3&password=YOUR_PASSWORD"
# Play looping sound
curl "http://192.168.1.100:2323/?cmd=playSound&url=http://server/alarm.mp3&loop=true&password=YOUR_PASSWORD"
# Stop sound
curl "http://192.168.1.100:2323/?cmd=stopSound&password=YOUR_PASSWORD"
# Set volume (0-100, stream 3=Music)
curl "http://192.168.1.100:2323/?cmd=setAudioVolume&level=50&stream=3&password=YOUR_PASSWORD"
Audio Stream Codes:
- 0: Voice Call
- 1: System
- 2: Ring
- 3: Music (most common)
- 4: Alarm
- 5: Notification
- 9: TTS
- 10: Accessibility
Video Playback
# Play video
curl "http://192.168.1.100:2323/?cmd=playVideo&url=http://server/video.mp4&loop=0&showControls=1&exitOnTouch=1&password=YOUR_PASSWORD"
# Stop video
curl "http://192.168.1.100:2323/?cmd=stopVideo&password=YOUR_PASSWORD"
Screensaver Control
# Start screensaver
curl "http://192.168.1.100:2323/?cmd=startScreensaver&password=YOUR_PASSWORD"
# Stop screensaver
curl "http://192.168.1.100:2323/?cmd=stopScreensaver&password=YOUR_PASSWORD"
# Start Android Daydream
curl "http://192.168.1.100:2323/?cmd=startDaydream&password=YOUR_PASSWORD"
Kiosk Mode
# Lock kiosk (enable kiosk mode)
curl "http://192.168.1.100:2323/?cmd=lockKiosk&password=YOUR_PASSWORD"
# Unlock kiosk
curl "http://192.168.1.100:2323/?cmd=unlockKiosk&password=YOUR_PASSWORD"
# Enable maintenance/locked mode
curl "http://192.168.1.100:2323/?cmd=enableLockedMode&password=YOUR_PASSWORD"
# Display overlay message
curl "http://192.168.1.100:2323/?cmd=setOverlayMessage&text=Maintenance%20Mode&password=YOUR_PASSWORD"
Application Management
# Bring Fully to foreground
curl "http://192.168.1.100:2323/?cmd=toForeground&password=YOUR_PASSWORD"
# Send to background
curl "http://192.168.1.100:2323/?cmd=toBackground&password=YOUR_PASSWORD"
# Start another app
curl "http://192.168.1.100:2323/?cmd=startApplication&package=com.spotify.music&password=YOUR_PASSWORD"
# Restart Fully
curl "http://192.168.1.100:2323/?cmd=restartApp&password=YOUR_PASSWORD"
# Exit Fully
curl "http://192.168.1.100:2323/?cmd=exitApp&password=YOUR_PASSWORD"
Cache & Storage
# Clear browser cache
curl "http://192.168.1.100:2323/?cmd=clearCache&password=YOUR_PASSWORD"
# Clear web storage (localStorage, sessionStorage)
curl "http://192.168.1.100:2323/?cmd=clearWebstorage&password=YOUR_PASSWORD"
# Clear cookies
curl "http://192.168.1.100:2323/?cmd=clearCookies&password=YOUR_PASSWORD"
# Reset WebView completely
curl "http://192.168.1.100:2323/?cmd=resetWebview&password=YOUR_PASSWORD"
Screenshots & Camera
# Get screenshot (returns PNG)
curl "http://192.168.1.100:2323/?cmd=getScreenshot&password=YOUR_PASSWORD" > screenshot.png
# Get camera shot (requires motion detection enabled)
curl "http://192.168.1.100:2323/?cmd=getCamshot&password=YOUR_PASSWORD" > camshot.jpg
Settings Management
Reading Settings
# List ALL settings (300+ keys)
curl "http://192.168.1.100:2323/?cmd=listSettings&type=json&password=YOUR_PASSWORD"
Writing Settings
# Set string setting
curl "http://192.168.1.100:2323/?cmd=setStringSetting&key=startURL&value=http://homeassistant.local:8123&password=YOUR_PASSWORD"
# Set boolean setting
curl "http://192.168.1.100:2323/?cmd=setBooleanSetting&key=kioskMode&value=true&password=YOUR_PASSWORD"
# Import settings from JSON URL
curl "http://192.168.1.100:2323/?cmd=importSettingsFile&url=http://server/config.json&password=YOUR_PASSWORD"
Common Setting Keys
Display Settings:
startURL- Home page URLscreenBrightness- Brightness (0-255)screenOffTimer- Minutes until screen offscreensaverTimer- Minutes until screensaverscreenOrientation- 0=auto, 1=portrait, 2=landscape, 3=reverse-landscape
Kiosk Settings:
kioskMode- Enable kiosk mode (boolean)kioskModePin- PIN to exit kioskkioskExitGesture- Exit gesture typelockSafeMode- Prevent safe mode boot
Motion Detection:
motionDetection- Enable motion detectionmotionSensitivity- Sensitivity 0-100screenOnOnMotion- Turn screen on when motion detectedstopScreensaverOnMotion- Stop screensaver on motion
Remote Admin:
remoteAdmin- Enable remote adminremoteAdminPassword- Admin passwordremoteAdminFromLocalNetwork- Allow local network only
Web Settings:
enableZoom- Allow pinch zoomdesktopMode- Request desktop siteuserAgent- Custom user agent string
Fleet Management
Python Multi-Device Manager
Use the included fully_manager.py script for fleet operations:
# Screen on all devices
python fully_manager.py --action screen_on --all
# Set brightness on specific devices
python fully_manager.py --action set_brightness --value 150 --devices kitchen,bedroom
# Push URL to all devices
python fully_manager.py --action load_url --url "http://ha.local:8123/dashboard" --all
# Get fleet status
python fully_manager.py --action status --all --output json
# TTS announcement to all devices
python fully_manager.py --action tts --text "Dinner is ready" --all
Device Inventory Configuration
Create devices.yaml for your fleet:
# ~/.fully-kiosk/devices.yaml
devices:
kitchen-tablet:
host: 192.168.1.100
password: "your_password"
location: Kitchen
type: fire-hd-10
use_case: dashboard
living-room-panel:
host: 192.168.1.101
password: "your_password"
location: Living Room
type: android-tablet
use_case: dashboard
garage-signage:
host: 192.168.1.102
password: "your_password"
location: Garage
type: fire-hd-8
use_case: signage
guest-kiosk:
host: 192.168.1.103
password: "your_password"
location: Guest Room
type: samsung-tab
use_case: kiosk
groups:
dashboards: [kitchen-tablet, living-room-panel]
all-fire: [kitchen-tablet, garage-signage]
public: [guest-kiosk, garage-signage]
Fully Cloud Integration
Setup
- Create account at https://cloud.fully-kiosk.com
- In device: Settings > Other Settings > Fully Cloud
- Enable "Use Fully Cloud" and authenticate
Cloud Features
- Remote Admin: Access any device from anywhere
- Push Configuration: Deploy settings to multiple devices
- Device Groups: Organize devices into manageable groups
- Alerts: Email/Pushbullet notifications for offline, low battery, unplugged
- Scheduled Actions: Time-based command execution
- App Management: Silent APK installation (with Enterprise enrollment)
Export/Import Configuration
From Fully Cloud Remote Admin:
- Open device's Remote Admin
- Go to Export/Import menu
- Export current settings as JSON
- Import JSON to other devices or save as template
Home Assistant Integration
Native Integration Setup
-
Enable Remote Admin on device:
- Settings > Remote Administration (PLUS)
- Enable Remote Admin
- Set password
- Enable "Local Network Access"
-
Add Integration in HA:
- Settings > Devices & Services > Add Integration
- Search "Fully Kiosk Browser"
- Enter device IP and password
Available HA Entities
Sensors:
sensor.<device>_battery- Battery levelsensor.<device>_storage- Free storagesensor.<device>_memory- Free RAMsensor.<device>_page- Current URL
Binary Sensors:
binary_sensor.<device>_plugged_in- Charging statusbinary_sensor.<device>_kiosk_mode- Kiosk enabled
Switches:
switch.<device>_screensaver- Toggle screensaverswitch.<device>_maintenance_mode- Maintenance modeswitch.<device>_kiosk_lock- Lock/unlock kioskswitch.<device>_motion_detection- Motion detection
Buttons:
button.<device>_restart- Restart appbutton.<device>_reload- Reload pagebutton.<device>_to_foreground- Bring to front
Numbers:
number.<device>_brightness- Screen brightnessnumber.<device>_volume- Media volume
Camera:
camera.<device>_screenshot- Live screenshot
HA Services
# Load URL
service: fully_kiosk.load_url
target:
device_id: <device_id>
data:
url: "http://homeassistant.local:8123/dashboard"
# Set configuration
service: fully_kiosk.set_config
target:
device_id: <device_id>
data:
key: "screenBrightness"
value: "128"
# Start application
service: fully_kiosk.start_application
target:
device_id: <device_id>
data:
application: "com.spotify.music"
HA Automation Examples
Motion-Activated Screen:
automation:
- alias: "Kitchen Tablet - Motion Screen On"
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: "on"
action:
- service: switch.turn_off
target:
entity_id: switch.kitchen_tablet_screensaver
- service: light.turn_on
target:
entity_id: light.kitchen_tablet_screen
data:
brightness: 200
- alias: "Kitchen Tablet - Screen Off After Idle"
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: "off"
for:
minutes: 5
action:
- service: switch.turn_on
target:
entity_id: switch.kitchen_tablet_screensaver
Doorbell TTS Announcement:
automation:
- alias: "Doorbell - Announce on All Tablets"
trigger:
- platform: state
entity_id: binary_sensor.front_door_doorbell
to: "on"
action:
- service: rest_command.fully_tts
data:
text: "Someone is at the front door"
device: kitchen_tablet
- service: rest_command.fully_tts
data:
text: "Someone is at the front door"
device: living_room_tablet
REST Commands in HA:
# configuration.yaml
rest_command:
fully_tts:
url: "http://{{ device }}.local:2323/?cmd=textToSpeech&text={{ text | urlencode }}&password=YOUR_PASSWORD"
method: GET
fully_load_url:
url: "http://{{ device }}.local:2323/?cmd=loadUrl&url={{ url | urlencode }}&password=YOUR_PASSWORD"
method: GET
fully_screen_on:
url: "http://{{ device }}.local:2323/?cmd=screenOn&password=YOUR_PASSWORD"
method: GET
fully_screen_off:
url: "http://{{ device }}.local:2323/?cmd=screenOff&password=YOUR_PASSWORD"
method: GET
fully_play_sound:
url: "http://{{ device }}.local:2323/?cmd=playSound&url={{ sound_url | urlencode }}&password=YOUR_PASSWORD"
method: GET
MQTT Integration
Enable MQTT in Fully Kiosk
Settings > Other Settings > MQTT Integration (experimental):
- MQTT Broker URL:
tcp://192.168.1.50:1883 - MQTT Broker Username/Password: Your broker credentials
- Device Info Topic:
fully/kitchen-tablet/deviceInfo - Event Topic:
fully/kitchen-tablet/event
MQTT Topics Published
Device Info (JSON):
fully/<device>/deviceInfo
Contains: batteryLevel, isPlugged, screenOn, currentTabUrl, etc.
Events:
fully/<device>/event
Events: screenOn, screenOff, onMotion, pluggedIn, unplugged, etc.
Home Assistant MQTT Sensors
# configuration.yaml
mqtt:
sensor:
- name: "Kitchen Tablet Battery"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.batteryLevel }}"
unit_of_measurement: "%"
device_class: battery
- name: "Kitchen Tablet Screen"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.screenOn }}"
binary_sensor:
- name: "Kitchen Tablet Plugged"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.isPlugged }}"
payload_on: "true"
payload_off: "false"
device_class: plug
Configuration Templates
Home Assistant Dashboard Preset
Optimized settings for wall-mounted HA dashboards:
{
"startURL": "http://homeassistant.local:8123",
"kioskMode": true,
"kioskModePin": "1234",
"showNavigationBar": false,
"showStatusBar": false,
"enableFullscreen": true,
"keepScreenOn": true,
"screenBrightness": 150,
"screensaverTimer": 5,
"screensaverBrightness": 0,
"motionDetection": true,
"motionSensitivity": 80,
"screenOnOnMotion": true,
"stopScreensaverOnMotion": true,
"remoteAdmin": true,
"enablePullToRefresh": true,
"autoplayVideos": true,
"enableZoom": false,
"clearCacheOnReload": true
}
Digital Signage Preset
For information displays and signage:
{
"startURL": "http://signage-server/display",
"kioskMode": true,
"showNavigationBar": false,
"showStatusBar": false,
"enableFullscreen": true,
"keepScreenOn": true,
"screenBrightness": 200,
"autoReloadOnIdle": true,
"idleTimeout": 60,
"errorReload": true,
"enableZoom": false,
"desktopMode": false,
"screensaverTimer": 0,
"motionDetection": false
}
Locked Guest Kiosk Preset
Maximum lockdown for public/guest access:
{
"startURL": "http://guest-portal.local",
"kioskMode": true,
"kioskModePin": "5678",
"kioskExitGesture": 4,
"showNavigationBar": false,
"showStatusBar": false,
"lockStatusBar": true,
"disableHomeButton": true,
"disablePowerButton": true,
"disableVolumeButtons": true,
"disableNotifications": true,
"enableScreenshots": false,
"enableZoom": false,
"blockOtherApps": true,
"whitelistUrls": "guest-portal.local,cdn.example.com",
"remoteAdmin": true,
"remoteAdminFromLocalNetwork": true
}
Troubleshooting
Common Issues
Cannot connect to device:
- Verify device IP:
ping <device-ip> - Check Remote Admin enabled: Settings > Remote Administration
- Verify port 2323 is accessible:
curl http://<ip>:2323 - Check password is correct
Screen won't stay on:
- Enable "Keep Screen On" in Device Management
- Check "Prevent Sleep While Plugged" setting
- Disable Android battery optimization for Fully Kiosk
Motion detection not working:
- Grant camera permission to Fully Kiosk
- Increase motion sensitivity (0-100)
- Check camera isn't blocked by other apps
- Verify "Screen On On Motion" is enabled
Fire Tablet specific issues:
- Remove Amazon launcher: Use ADB to disable
- Disable OTA updates: Block Amazon URLs in router
- Battery drain: Enable "Keep WiFi On During Sleep"
MQTT not connecting:
- Verify broker URL format:
tcp://host:port - Check broker allows anonymous or credentials are correct
- Enable experimental MQTT in Other Settings
Device Reset
If device is unresponsive:
# Force restart app
curl "http://<ip>:2323/?cmd=killMyProcess&password=PASSWORD"
# Reboot device (requires root)
curl "http://<ip>:2323/?cmd=rebootDevice&password=PASSWORD"
Log Access
# Get Fully Kiosk log
curl "http://<ip>:2323/?cmd=showLog&password=PASSWORD"
# Get Android logcat
curl "http://<ip>:2323/?cmd=logcat&password=PASSWORD"
Best Practices
Security
- Use strong Remote Admin passwords
- Enable "Local Network Only" for Remote Admin
- Use HTTPS if exposing to internet (via reverse proxy)
- Regularly rotate passwords across fleet
- Enable Fully Cloud for secure remote access
Performance
- Clear cache periodically (weekly)
- Use motion detection to reduce screen-on time
- Set appropriate screensaver/screen-off timers
- Disable unused features (camera if not using motion detection)
Fleet Management
- Use consistent naming convention (location-type format)
- Create device groups for batch operations
- Export/save configuration templates
- Monitor battery health across fleet
- Schedule maintenance windows for updates
Home Assistant Integration
- Use native integration for simple setups
- Add REST commands for advanced operations
- Consider MQTT for real-time status updates
- Create input_booleans for dashboard states
- Use scripts to coordinate multiple devices
Included Scripts & Templates
This skill includes ready-to-use scripts and templates in the scripts/ and templates/ directories.
Scripts
fully_manager.py - Fleet Management CLI
Primary tool for managing multiple Fully Kiosk devices from the command line.
# Install dependencies
pip install -r scripts/requirements.txt
# List all devices
python scripts/fully_manager.py --devices templates/devices-example.yaml list
# Turn on all screens
python scripts/fully_manager.py --devices devices.yaml screen-on
# Set brightness on specific group
python scripts/fully_manager.py --devices devices.yaml --group kitchen brightness 180
# Send TTS announcement to all devices
python scripts/fully_manager.py --devices devices.yaml tts "Dinner is ready"
# Get device info as JSON
python scripts/fully_manager.py --devices devices.yaml info --json
fleet_status.py - Real-Time Fleet Monitor
Continuous monitoring dashboard with alerts and notifications.
# Basic monitoring (30 second refresh)
python scripts/fleet_status.py --devices devices.yaml
# Custom interval with logging
python scripts/fleet_status.py --devices devices.yaml --interval 60 --log fleet.log
# With Slack/Discord webhook alerts
python scripts/fleet_status.py --devices devices.yaml --webhook https://hooks.slack.com/...
# Single status check (no continuous monitoring)
python scripts/fleet_status.py --devices devices.yaml --once
# Configure alert thresholds
python scripts/fleet_status.py --devices devices.yaml --alert-battery 15 --alert-offline 10
Features:
- Rich terminal UI with live updates
- Battery, WiFi signal, memory monitoring
- Offline/online transition alerts
- Low battery warnings
- Webhook notifications (Slack, Discord, etc.)
- Log file output for historical tracking
fully_cloud.py - Fully Cloud API Manager
Manage devices through Fully Cloud centralized management.
# List all cloud-registered devices
python scripts/fully_cloud.py --token YOUR_API_TOKEN list
# Get device status
python scripts/fully_cloud.py --token YOUR_API_TOKEN status DEVICE_ID
# Send command to device
python scripts/fully_cloud.py --token YOUR_API_TOKEN command DEVICE_ID screenOn
# Send command with parameters
python scripts/fully_cloud.py --token YOUR_API_TOKEN command DEVICE_ID loadUrl \
--params '{"url":"http://example.com"}'
# Sync settings from local file
python scripts/fully_cloud.py --token YOUR_API_TOKEN sync DEVICE_ID settings.json
# View device logs
python scripts/fully_cloud.py --token YOUR_API_TOKEN logs DEVICE_ID --limit 100
# List device groups
python scripts/fully_cloud.py --token YOUR_API_TOKEN groups
backup_restore.py - Configuration Backup & Restore
Export and restore device configurations for disaster recovery and fleet provisioning.
# Backup single device
python scripts/backup_restore.py --devices devices.yaml backup kitchen-tablet
# Backup all devices
python scripts/backup_restore.py --devices devices.yaml backup-all --output backups/
# Restore to a device
python scripts/backup_restore.py --devices devices.yaml restore kitchen-tablet backup.json
# Clone config from one device to another
python scripts/backup_restore.py --devices devices.yaml clone kitchen-tablet bedroom-tablet
# Compare two device configurations
python scripts/backup_restore.py --devices devices.yaml diff kitchen-tablet bedroom-tablet
Templates
Configuration Templates
Pre-built JSON configurations in templates/:
| Template | Use Case |
|---|---|
config-ha-dashboard.json | Home Assistant dashboard display |
config-digital-signage.json | Unattended information displays |
config-locked-kiosk.json | Maximum security guest/public kiosks |
config-fire-tablet.json | Amazon Fire tablet optimizations |
ha-automations.yaml - Home Assistant Automation Package
Complete automation package with 12+ pre-built automations:
# Installation:
# 1. Copy to /config/packages/fully_kiosk.yaml
# 2. Add to configuration.yaml:
# homeassistant:
# packages:
# fully_kiosk: !include packages/fully_kiosk.yaml
# 3. Update entity IDs to match your devices
# 4. Restart Home Assistant
Included automations:
- Motion-based screen on/off
- Night mode with dimming schedule
- Doorbell camera display
- Weather alert TTS announcements
- Low battery notifications
- Presence-based dashboard switching
- Morning routine with gradual brightness
- Auto-restart on low memory
- Daily scheduled page reload
Included scripts:
fully_kiosk_all_screens_on/offfully_kiosk_reload_allfully_kiosk_announce(multi-device TTS)fully_kiosk_display_camera
lovelace-cards.yaml - Dashboard Cards
Pre-built Lovelace cards for tablet status display. See templates/lovelace-cards.yaml.
devices-example.yaml - Fleet Configuration
Example device inventory file:
devices:
kitchen-tablet:
ip: 192.168.1.100
password: your_password
groups: [kitchen, main-floor]
bedroom-tablet:
ip: 192.168.1.101
password: your_password
groups: [bedroom, upstairs]
Related Skills
- home-assistant: HA configuration and automation
- mqtt-iot: MQTT broker setup and management
- node-red-automation: Visual automation flows
- tailscale-vpn: Secure remote access to devices