Version 2.0.4 - A modern, cloud-connected process management system for Windows that combines:
- π₯οΈ Windows Service - Monitors and auto-restarts applications
- π Web Dashboard - Real-time monitoring and control from anywhere
- π Remote Deployment - Install software across multiple machines
- π Live Metrics - CPU, memory, disk, and GPU tracking
- π Firebase Sync - Bidirectional cloud communication
- π’ Multi-Site Management - Manage machines across multiple locations
Perfect for managing TouchDesigner installations, digital signage, kiosks, media servers, and any Windows application fleet.
- π Features
- π οΈ Installation
- π Web Dashboard
- π Remote Deployment
- π¦ Project Distribution
- π Usage
- ποΈ UI Features
- π οΈ Configuration
- ποΈ Uninstallation
- π Troubleshooting
- π€ Contributing
- π License
- Web Dashboard - Modern Next.js dashboard for monitoring and control from anywhere
- Real-Time Sync - Bidirectional Firebase/Firestore synchronization
- Multi-Machine Management - Control multiple Windows machines from one interface
- Multi-Site Support - Organize machines across different locations/installations
- Multi-User Access - Secure user accounts with role-based permissions
- Site Access Control - Admins assign site access; users see only their assigned sites
- Remote Software Deployment - Install applications silently across multiple machines
- Project File Distribution - Sync project files (ZIPs, .toe files) across your fleet
- Live Metrics Dashboard - Real-time CPU, memory, disk, and GPU monitoring
- Auto-Start Processes - Launch applications automatically on system boot
- Crash Recovery - Automatically restart applications if they freeze or crash
- Process Monitoring - Real-time status tracking and responsiveness checking
- PID Recovery - Reconnect to existing processes after service restart
- Priority Control - Set process priority (Low, Normal, High, Realtime)
- Visibility Control - Show or hide process windows
- Configurable Retries - Set relaunch attempts before system restart
- System Tray Icon - Quick access to features and service control
- Configuration GUI - Easy-to-use Windows application for setup
- Web-Based Config - Edit process settings from the dashboard
- Autolaunch Toggle - Enable/disable processes without editing config
- Instant Sync - Changes sync between GUI, service, and web in ~1-2 seconds
- Silent Deployment - Install software with automatic silent flags detection
- Deployment Templates - Save and reuse installer configurations
- Deployment Cancellation - Stop installations remotely
- Installation Verification - Confirm successful deployments
- Project Distribution - Distribute project files with ZIP extraction and verification
- URL-Based Distribution - Zero infrastructure cost using your own file hosting
- Offline Mode - Agent continues working even if cloud disconnects
- Comprehensive Logging - Detailed logs for troubleshooting
Owlette consists of two components:
- Agent - Windows service running on each managed machine
- Web Dashboard - Next.js web application for remote management
For Agent (Windows Service):
- π Python 3.9 or higher
- π¦ pip (Python package installer)
- π₯ Firebase project with Firestore enabled (see Firebase Setup Guide)
For Web Dashboard:
- π’ Node.js 18.x or higher
- π₯ Same Firebase project as agent
Quick Start:
# Clone the repository
git clone https://github.com/theexperiential/Owlette.git
cd OwletteRun the agent\install.bat file to automatically install the required packages and set up the service.
cd agent
install.bat-
Install the required Python packages:
cd agent pip install -r requirements.txt -
Create folders named
config,logs, andtmpin theagentfolder. -
Configure Firebase:
- Follow the comprehensive Firebase Setup Guide
- Place your
firebase-credentials.jsoninagent/config/ - Update
agent/config/config.jsonwith your site ID
See the full Web Dashboard README for detailed instructions.
Quick Setup:
cd web
npm install
# Configure environment variables
cp .env.example .env.local
# Edit .env.local with your Firebase config
# Development
npm run dev
# Access at http://localhost:3000
# Production
npm run build
npm startFirebase Configuration: The web dashboard uses the same Firebase project as the agent. See Firebase Setup Guide for details.
Deployment: Deploy to Railway, Vercel, or any Node.js hosting platform. See web/README.md for platform-specific instructions.
The Owlette web dashboard provides a modern interface for managing all your machines from anywhere.
Machine Monitoring:
- Real-time status of all managed machines
- Live system metrics (CPU, memory, disk, GPU)
- Process status and health monitoring
- Connection status and last heartbeat
Process Management:
- Start/stop processes remotely
- Edit process configuration from web
- Toggle autolaunch for any process
- View process runtime information
Multi-Site Organization:
- Create multiple sites (locations/installations)
- Organize machines by site
- Switch between sites instantly
- Site-level management and permissions
Dashboard Views:
- Card view for overview
- List view for detailed information
- Collapsible machine details
- Real-time updates via Firebase listeners
- Locally:
http://localhost:3000after runningnpm run dev - Production: Your deployed URL (e.g., Railway, Vercel)
- Authentication: Email + Password or Google OAuth
Machines automatically appear in the dashboard when the agent connects to Firebase. No manual registration required!
Deploy software silently across multiple machines from the web dashboard.
- Silent Installation - Unattended software deployment
- Multi-Machine Targets - Deploy to one or many machines at once
- Deployment Templates - Save configurations for reuse
- Real-Time Progress - Watch installations as they happen
- Cancellation - Stop in-progress installations
- Verification - Confirm successful deployment
- Navigate to the Deploy Software section in the web dashboard
- Create a new deployment or use a template
- Configure:
- Installer URL (direct download link)
- Silent flags (e.g.,
/S,/VERYSILENT) - Optional verification path
- Select target machines
- Deploy!
Works with any installer that supports silent/unattended mode:
- β
NSIS installers (
/S) - β
InnoSetup (
/VERYSILENT /SUPPRESSMSGBOXES) - β
MSI packages (
/quiet /norestart) - β Custom installers (specify your own flags)
Examples:
- TouchDesigner:
/S - Notepad++:
/S - Chrome:
/silent /install
See the Deployment Guide for detailed setup and examples.
Distribute project files (ZIPs, TouchDesigner .toe files, media assets) across multiple machines.
- URL-Based Distribution - Zero infrastructure cost - paste any URL (Dropbox, Google Drive, your hosting)
- Automatic Extraction - Downloads and extracts ZIP files to specified location
- Real-Time Progress - Watch download and extraction progress per machine
- File Verification - Confirm critical files exist after extraction
- Distribution Templates - Save common project configurations
- Default Location - Files extract to
~/Documents/OwletteProjectsby default
- Navigate to Distribute Projects in the web dashboard
- Create a new distribution:
- Name: "Summer Show 2024"
- Project URL: Direct download link to your ZIP (Dropbox, Drive, etc.)
- Extract To: Optional custom path (default:
~/Documents/OwletteProjects) - Verify Files: Optional comma-separated list of critical files to check (e.g.,
project.toe, Assets/)
- Select target machines
- Distribute!
- TouchDesigner project distribution (.toe files + media)
- Digital signage content updates
- Multi-GB project files with assets
- Syncing configurations across machines
Zero Owlette Infrastructure Costs:
- Users host files on their own service (Dropbox, Google Drive, Backblaze, etc.)
- Machines download directly from provided URL
- Only Firestore operations are used (~$0.0001 per distribution)
See the Project Distribution Guide for detailed setup and examples.
1οΈβ£ Run the owlette_gui.py script to configure the service:
```bash
cd agent\src
python owlette_gui.py
```
2οΈβ£ Follow the on-screen instructions to authenticate with Gmail and configure the processes you want to manage.
3οΈβ£ To install the Windows service, run the following command as an administrator:
```bash
cd agent\src
python owlette_service.py install
```
4οΈβ£ To start the Windows service, run:
```bash
cd agent\src
python owlette_service.py start
```
5οΈβ£ To stop the Windows service, run:
```bash
cd agent\src
python owlette_service.py stop
```
6οΈβ£ The tray icon will automatically run with the service. But if you wish to run the GUI configuration, just double-click on agent\src\owlette_gui.py or run:
```bash
cd agent\src
python owlette_gui.py
```
7οΈβ£ To restart the system tray icon, restart the process or run:
```bash
cd agent\src
python owlette_tray.py
```
- Open Config: Brings up the Owlette Configuration window where you can manage and monitor processes.
- Start on Login: Allows you to toggle whether the service starts upon system login.
- Restart: Restarts the Owlette service.
- Exit: Closes the Owlette service and any open Configuration windows.
The Configuration UI is built using the customtkinter library and is designed to manage processes and notifications. It features a dark theme and provides various functionalities like adding, removing, and reordering processes, as well as configuring email settings.
- Autolaunch/Manage: Enables or disables monitoring for the selected process. If enabled, Owlette will check the process every 10 seconds. If it is unresponsive, it will attempt to close and relaunch it. If the process ID (PID) is no longer found, Owlette will attempt to relaunch it automatically.
- Name: Text field to enter the name of the process.
- Exe Path: Text field to specify the executable path. Includes a "Browse" button.
- File Path / Cmd Line Args: Text field for additional file paths or command-line arguments. Includes a "Browse" button.
- Launch Time Delay (s): Text field to specify a time delay, in seconds, before the process starts.
- Time to Initialize (s): Text field to specify the total time, in seconds, to give a process to fully initialize before checking it's responsitivity.
- Relaunch Attempts til Restart: Set the number of relaunch attempts before a system restart is triggered. Owlette will prompt you with a 30 second countdown window before starting, which you may either initiate, pause or cancel. If the countdown completes, the restart will continue.
- Priority: Dropdown menu to set the priority level of the process (how much CPU time the process gets compared to other running processes).
- Window Visibility: Dropdown menu to set the process window to be shown or hidden.
- Add: Adds a new process to the Process Startup List based on the details provided.
- Listbox: Displays the list of configured processes. The list is ordered, so your processes will be started in the order you define.
- Kill: Terminates the selected and running process.
- Del: Removes the selected process from the list.
- Up: Moves the selected process up in the list (start it before other processes).
- Down: Moves the selected process down in the list (start it after other processes).
- Save Changes: Saves any modifications to the selected process and Notifications section. Note that changes are also saved when you press your return key on your keyboard in a text field, or click anywhere outside of one in the UI.
To uninstall the Owlette service and python dependencies, you may run agent\uninstall.bat:
cd agent
uninstall.batAlternatively, to just remove the service, you may run the following command as an administrator:
```bash
cd agent\src
python owlette_service.py remove
```
This will remove the Owlette service from your system.
Logs are stored in the logs folder, per script. service.log for the service, email.log for the email sender, tray.log for the tray icon, etc. Check these logs for debugging information.
Owlette uses a unified versioning system across all components.
Current Version: 2.0.4
When releasing a new version, use the sync script to keep all components aligned:
# Check current versions
node scripts/sync-versions.js
# Bump to new version (updates product, agent, and web)
node scripts/sync-versions.js 2.1.0This automatically updates:
/VERSION(product version)agent/VERSION(Windows service)web/package.json(dashboard)
Note: Firestore rules version is independent (tracks schema changes only).
See docs/version-management.md for complete details.
Feel free to contribute by submitting pull requests.
Before submitting:
- Use
node scripts/sync-versions.jsfor version bumps - Update CHANGELOG.md with your changes
- Ensure all tests pass (
npm testin web/,pytestin agent/) - Follow existing code style and patterns
This project is licensed under the GNU General Public License v3.0.

