Here’s how to set up Open WebUI as a launchd service on macOS.
Prerequisites
First, install Open WebUI via uv if you haven’t already:
uv tool install open-webui
1. Create the plist file
cat > ~/Library/LaunchAgents/com.user.openwebui.plist << EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict> <key>Label</key><string>com.user.openwebui</string> <key>ProgramArguments</key><array> <string>$HOME/.local/share/uv/tools/open-webui/bin/open-webui</string> <string>serve</string> <string>--port</string> <string>8081</string> </array> <key>WorkingDirectory</key><string>$HOME</string> <key>EnvironmentVariables</key><dict> <key>HOME</key><string>$HOME</string> <key>WEBUI_SECRET_KEY_FILE</key><string>$HOME/.webui_secret_key</string> </dict> <key>RunAtLoad</key><true/> <key>KeepAlive</key><true/> <key>StandardOutPath</key><string>$HOME/Library/Logs/openwebui.log</string> <key>StandardErrorPath</key><string>$HOME/Library/Logs/openwebui.err</string> </dict></plist> EOF
Save the plist to ~/Library/LaunchAgents/com.user.openwebui.plist. Before doing so, verify the binary path matches your actual installation:
which open-webui # or ls ~/.local/share/uv/tools/open-webui/bin/open-webui
If the path differs, update the ProgramArguments string in the plist accordingly.
2. Set the secret key (optional but recommended)
The plist references a secret key file. Create it:
openssl rand -hex 32 > ~/.webui_secret_key chmod 600 ~/.webui_secret_key
If you don’t want to use a secret key file, remove the WEBUI_SECRET_KEY_FILE entry from EnvironmentVariables in the plist.
3. Load the service
launchctl load ~/Library/LaunchAgents/com.user.openwebui.plist
This registers the service and starts it immediately (because RunAtLoad is true). It will also restart automatically on crash (KeepAlive is true) and run on every login.
4. Verify it's running
# Check the process is up launchctl list | grep openwebui # Tail the logs tail -f ~/Library/Logs/openwebui.log tail -f ~/Library/Logs/openwebui.err
Then visit http://localhost:8081 in your browser.
5. Common management commands
| Action | Command |
|---|---|
| Stop the service | launchctl unload ~/Library/LaunchAgents/com.user.openwebui.plist |
| Start it again | launchctl load ~/Library/LaunchAgents/com.user.openwebui.plist |
| Restart | unload, then load |
| Disable autostart | unload + delete the plist file |
6. After editing the plist
If you ever modify the plist, you must reload it for changes to take effect:
launchctl unload ~/Library/LaunchAgents/com.user.openwebui.plist launchctl load ~/Library/LaunchAgents/com.user.openwebui.plist
That’s it — after step 3, Open WebUI will start automatically on every login without any further action needed.
7. Web-app
- Open your browser and navigate to http://localhost:8081/.
- Firefox and Chromium-based browsers (like Chrome or Edge) support Progressive Web Apps. Click the Install icon in the address bar to run Open WebUI as a standalone application.
Originally published as GitHub Gist #916b8911e29ba9e5ee9b14916834d031