mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
Add comprehensive macOS deployment support for running headroom proxy as a persistent background service using LaunchAgent. This enables automatic startup, crash recovery, and proper lifecycle management for local development environments. Files added: - examples/deployment/macos-launchagent/com.headroom.proxy.plist.template - examples/deployment/macos-launchagent/install.sh (shellcheck-clean) - examples/deployment/macos-launchagent/uninstall.sh (shellcheck-clean) - examples/deployment/macos-launchagent/shell-integration.sh (bash + zsh) - examples/deployment/macos-launchagent/README.md - docs/macos-deployment.md Key features: - Configurable port via HEADROOM_PROXY_PORT environment variable (default: 8787) - Automated installation and uninstallation scripts - Shell integration supporting both bash and zsh - Comprehensive documentation with troubleshooting guide - All shell scripts are shellcheck-clean (zero errors, warnings, or info messages) Files modified: - .gitignore: Added CLAUDE.md to prevent committing local config - docs/README.md: Added Deployment & Operations section with navigation entry AI review: Pending (will be run by pre-commit hook) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| com.headroom.proxy.plist.template | ||
| install.sh | ||
| README.md | ||
| shell-integration.sh | ||
| uninstall.sh | ||
macOS LaunchAgent Deployment
This directory contains templates and scripts for running the headroom proxy server as a persistent background service on macOS using LaunchAgent.
Quick Start
# Install the proxy service
./install.sh
# Add shell integration to ~/.bashrc or ~/.zshrc
export HEADROOM_PROXY_PORT=8787
source /path/to/shell-integration.sh
Files
- com.headroom.proxy.plist.template: LaunchAgent plist template
- install.sh: Automated installation script
- uninstall.sh: Automated removal script
- shell-integration.sh: Shell integration for automatic ANTHROPIC_BASE_URL configuration
Features
- Automatic Startup: Service starts on user login
- Crash Recovery: Automatically restarts if the proxy crashes
- Configurable Port: Default 8787, customizable during installation
- Standard Logging: Logs to
~/Library/Logs/headroom/ - Shell Integration: Automatically sets
ANTHROPIC_BASE_URLfor Claude clients
Requirements
- macOS 10.13+ (High Sierra or later)
- headroom-ai installed with proxy support:
pip install headroom-ai[proxy] - Anthropic API key configured in environment
Installation Options
Quick Install (Recommended)
./install.sh
Custom Port
./install.sh --port 9000
Unattended Install
./install.sh --port 8787 --unattended
Verification
Check if the service is running:
# Check LaunchAgent status
launchctl print gui/$(id -u)/com.headroom.proxy
# Check if port is listening
lsof -iTCP:8787 -sTCP:LISTEN
# Test health endpoint
curl http://localhost:8787/health
Logs
View logs:
# Standard output
tail -f ~/Library/Logs/headroom/proxy.log
# Error output
tail -f ~/Library/Logs/headroom/proxy-error.log
Uninstallation
# Remove service only
./uninstall.sh
# Remove service and logs
./uninstall.sh --remove-logs
Troubleshooting
Service won't start
Check logs for errors:
tail -n 50 ~/Library/Logs/headroom/proxy-error.log
Common causes:
- Missing ANTHROPIC_API_KEY environment variable
- Port already in use
- headroom not installed with proxy support
Port already in use
Find what's using the port:
lsof -iTCP:8787 -sTCP:LISTEN
Change to a different port:
./uninstall.sh
./install.sh --port 9000
Service not auto-starting
Verify LaunchAgent is loaded:
launchctl list | grep headroom
If not loaded:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.headroom.proxy.plist
Manual Installation
If you prefer manual installation:
-
Copy template and customize:
cp com.headroom.proxy.plist.template ~/Library/LaunchAgents/com.headroom.proxy.plist -
Edit the plist file:
- Replace
__HEADROOM_PATH__with output ofcommand -v headroom - Replace
__PORT__with your desired port - Replace
__HOME__with your home directory path
- Replace
-
Create log directory:
mkdir -p ~/Library/Logs/headroom -
Load the LaunchAgent:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.headroom.proxy.plist
Documentation
For complete documentation, see docs/macos-deployment.md