MyAlly System Tray Application - Binary releases for cross-platform auto-update.
This repository hosts binary releases of the MyAlly system tray application. The tray app provides:
- 🚀 Backend process management (start/stop)
- 🌐 One-click frontend launch
- 📦 Automatic update checking
- 🔔 Update notifications with tray icon badge
- ⬆️ Update application via menu
These scripts install the full MyAlly platform (backend, frontend, and dependencies) from the private sarukas/ally repository.
The installer will attempt to install missing prerequisites automatically, but you may need:
| Prerequisite | Required | Auto-installed? |
|---|---|---|
| Git | Yes | Yes (via winget / brew / apt) |
| Python 3.11+ | Yes | Yes (via winget / brew / apt) |
| Node.js 18+ | Yes | Yes (via platform installer) |
| uv | Yes | Yes (via astral.sh) |
- Private repo access — one of:
- GitHub CLI (
gh) authenticated withgh auth login - SSH key configured for GitHub
- A GitHub Personal Access Token with
reposcope (you'll be prompted)
- GitHub CLI (
Download https://raw.githubusercontent.com/sarukas/ally-tray/refs/heads/main/install.bat and double-click it or from a terminal:
irm https://raw.githubusercontent.com/sarukas/ally-tray/refs/heads/main/install.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/sarukas/ally-tray/refs/heads/main/install.sh | bashinstall.bat [--install-dir <path>] [--force] [--component <main-app|tray|all>]
| Flag | Description |
|---|---|
--install-dir <path> |
Custom installation directory (default: %LOCALAPPDATA%\MyAlly) |
--force |
Force reinstall of components |
--component <name> |
Update only a specific component (main-app, tray, or all) |
PowerShell equivalent flags: -InstallDir, -Force, -Component.
./install.sh [--install-dir <path>]When piped (curl | bash), the installer runs non-interactively.
See the main repository for full documentation.
After installation, updates are managed by the ally-updater CLI. The tray app checks for updates automatically, but you can also run it directly:
ally-updater # Update all components (non-interactive)
ally-updater update # Same as above
ally-updater update main-app # Update only the main application
ally-updater update tray # Update only the tray binary
ally-updater update main-app --force # Force reinstall main-app
ally-updater update --force # Force reinstall all
ally-updater update --interactive # Per-component prompts
ally-updater update-node # Update Node.js separately
ally-updater check # Check for updates without applying
ally-updater config check # Check pending config migrations
ally-updater config migrate # Apply config migrations
ally-updater config history # Show migration history
- Non-interactive by default — runs without prompts, ideal for automation and tray-triggered updates.
- Component as positional argument —
update main-appnot--component main-app. - Node.js updates are explicit — use
update-node; never auto-selected during regular updates. --interactive— enables per-component prompts for granular control over what gets updated.--force— force reinstall even if up-to-date. Works per-component:update tray --force.
| Flag | Description |
|---|---|
--install-dir <path> |
Custom installation directory |
--json |
Machine-readable JSON output |
--verbose / -v |
Verbose output |
--quiet / -q |
Suppress non-essential output |
--version |
Show ally-updater version |
Old flags still work with deprecation warnings:
| Old | New equivalent |
|---|---|
ally-updater --check |
ally-updater check |
ally-updater --confirm |
ally-updater update --interactive |
ally-updater --component main-app |
ally-updater update main-app |
ally-updater --force --component main-app --yes |
ally-updater update main-app --force |
ally-updater --yes |
ally-updater (non-interactive is now default) |
<install-dir>/ # Default: %LOCALAPPDATA%\MyAlly (Windows)
├── app/ # ~/Library/Application Support/MyAlly (macOS)
│ ├── .venv/ # ~/.local/share/myally (Linux)
│ ├── services/myally/ # Backend (FastAPI + SQLite)
│ └── apps/ally-frontend/ # Frontend (React)
├── tray/
│ └── myally-tray.exe # Tray launcher binary
└── mcp-servers/ # MCP server extensions (future)
Configuration and data are stored in ~/.ally/:
| Path | Contents |
|---|---|
~/.ally/config.yaml |
Installation config |
~/.ally/myally.db |
SQLite database (WAL mode) |
~/.ally/logs/ |
Log files (daily rotation) |
~/.ally/tray.yaml |
Tray launcher settings |
Download the latest tray app release from the Releases page.
| Platform | File |
|---|---|
| Windows | myally-tray.exe |
| macOS | myally-tray (coming soon) |
| Linux | myally-tray (coming soon) |
Ensure you have access to the private sarukas/ally repository:
gh auth login # Authenticate GitHub CLI
# Then re-run the installerRestart your terminal to pick up PATH changes, then re-run the installer.
Check logs at ~/.ally/logs/myally.log. Common issues:
- Port 8080 already in use — check with
netstat -ano | findstr 8080(Windows) orlsof -i :8080(macOS/Linux) - Claude Agent SDK issue — the CLI is bundled with the SDK, no separate install needed. Run
uv sync --all-packagesin the app directory to fix.
Re-run the installer — it's idempotent and will pick up where it left off. Use --force if a component is in a broken state.
The tray application integrates with the ally-updater package for automatic updates. The installer scripts (install.ps1, install.bat, install.sh) are maintained in the main repository and synced here during releases.
MIT