A web UI for managing macOS LaunchAgents -- create, edit, start, stop, and reload agents from your browser
Project description
Mac Agents Manager
Web UI and CLI for managing macOS LaunchAgents.
Mac Agents Manager lets you create, view, edit, start, stop, and reload user LaunchAgents from a web dashboard or the mam CLI — no manual plist editing or raw launchctl commands required.
Features
- Web Dashboard — Modern browser UI to browse, create, edit, and control LaunchAgents on localhost
- Unified CLI — Single
mamcommand for all operations (list, create, start, stop, logs, delete) - LaunchAgent Lifecycle — Load, unload, start, stop, restart, and delete agents with one command
- Agent Creation — Create new keepalive or scheduled LaunchAgents from the CLI or web UI
- Log Viewer — Tail stdout/stderr logs for any agent with follow mode
- Auto-Start — Install Mac Agents Manager itself as a LaunchAgent so the dashboard starts at login
- Localhost Only — Binds to
127.0.0.1for single-user, local-only access
How It Works
┌────────────────────────────────────────────────────────────────┐
│ Your Mac │
│ │
│ 🖥️ Web Dashboard (localhost:8081) ⌨️ CLI (mam) │
│ ├─ Browse all LaunchAgents ├─ mam list │
│ ├─ Create / Edit agents ├─ mam create │
│ ├─ Start / Stop / Restart ├─ mam start <label> │
│ └─ View logs └─ mam logs <label> │
│ │ │ │
│ └────────────┬───────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ ~/Library/LaunchAgents/*.plist │ │
│ │ User LaunchAgent property list files │ │
│ └───────────────────────┬───────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ launchctl (macOS) │ │
│ │ Load · Unload · Start · Stop · Status │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ Everything runs locally. Nothing leaves your machine. │
└────────────────────────────────────────────────────────────────┘
Quick Start
Prerequisites
- macOS (uses macOS-specific
launchctlAPIs) - Python 3.10+ — check with
python3 --version. If below 3.10, install it:brew install python@3.10
Install
# From PyPI
pip3 install mac-agents-manager-ai
# Or with uv
uv pip install mac-agents-manager-ai
# Or in a dedicated virtual environment
mkdir -p ~/.mac_agents_manager
python3 -m venv ~/.mac_agents_manager/venv
source ~/.mac_agents_manager/venv/bin/activate
pip install mac-agents-manager-ai
Run
# Start the web dashboard (default: http://localhost:8081)
mam
# Or explicitly
mam serve --port 8081
# Open the dashboard
mam open
The dashboard is at http://localhost:8081.
Verify
# List all LaunchAgents
mam list
# Check version
mam --version
CLI Reference
mam # Start web server (default)
mam serve [-p PORT] [--debug] # Start web server
mam list # List all agents with status
mam show <label> # Show agent details and plist XML
mam create <name> -c CAT -s SCRIPT [-t keepalive|scheduled]
mam load <label> # Register agent with launchd
mam unload <label> # Unregister agent from launchd
mam start <label> # Start a loaded agent
mam stop <label> # Stop a running agent
mam restart <label> # Restart an agent
mam delete <label> [-y] # Unload and delete an agent
mam start-all # Start all stopped keepalive agents
mam logs <label> [-f] [--stderr] [-n N] # View agent logs
mam open # Open dashboard in browser
mam --version # Version info
Architecture
src/mac_agents_manager/
├── __init__.py # Package version
├── cli.py # Unified CLI (argparse)
├── app.py # Flask web dashboard and routes
├── models.py # LaunchAgent parsing, serialization, and UI data
├── launchctl.py # Thin wrapper around launchctl commands
├── templates/ # HTML templates (Jinja2)
└── static/ # CSS styles
Environment Variables
| Variable | Default | Description |
|---|---|---|
MAM_PORT |
8081 |
Port to listen on |
FLASK_DEBUG |
off | Set to 1 or true to enable Flask debug mode |
MAM_LABEL_PREFIXES |
— | Comma-separated extra label prefixes to include (e.g. com.myorg.,com.acme.) |
Security
This tool binds to 127.0.0.1 only and is designed for single-user, localhost use. See SECURITY.md for the full security model and vulnerability reporting instructions.
Contributing
Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request. This project follows the Contributor Covenant Code of Conduct.
Development
# Clone and install in dev mode
git clone https://github.com/pkasinathan/mac-agents-manager.git
cd mac-agents-manager
make dev
# Run linter
make lint
# Auto-format
make format
# Run tests
make test
# All quality checks
make check
Uninstall
pip3 uninstall mac-agents-manager-ai
rm -rf ~/.mac_agents_manager
License
Apache License 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mac_agents_manager_ai-1.1.3.tar.gz.
File metadata
- Download URL: mac_agents_manager_ai-1.1.3.tar.gz
- Upload date:
- Size: 51.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b24ffc84a25665931f4ed31e7601a9f4478d24682da0459cf088ea9d31bcec2
|
|
| MD5 |
788dd645f039065bac17b38f0c1db470
|
|
| BLAKE2b-256 |
6008d7e13bd6d2206b5912da5bb922fc682819cab766be80da25d3751ffb4df1
|
File details
Details for the file mac_agents_manager_ai-1.1.3-py3-none-any.whl.
File metadata
- Download URL: mac_agents_manager_ai-1.1.3-py3-none-any.whl
- Upload date:
- Size: 46.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e091d7326df62cbcad02cda2e3df311fd5ec1cec41478f67194c2945a717c1d0
|
|
| MD5 |
8f5c01142aed3b29053402893227a09b
|
|
| BLAKE2b-256 |
c592dcafa271c6f827b2c2702180c6c01b371c533c588c3e297b1455d8bb8acf
|