Haoleme
Run commands on your computer or server. Follow them from your phone.
Website · Download APK · Quick Start · PyPI
[!NOTE] Haoleme v1.0.3 is a stable release. Computers can now push live output and device meters over WebSocket, while the app still falls back to SSE and HTTP. Model-training progress monitoring remains a feature in development. View the release or install it directly over an existing version.
Why Haoleme
Haoleme is a local-first command monitor for work that should keep running while you do something else. Prefix a command with hao, then use the Android app to follow live output, switch between machines, receive completion notifications, or stop a task remotely. For supported model-training output, run cards can also surface the latest epoch, loss, elapsed time, and a visual progress bar.
It is built for model training, evaluations, remote scripts, batch jobs, crawlers, builds, and long SSH sessions. Commands and console output are end-to-end encrypted before they reach Haoleme Cloud or a self-hosted Relay.
Preview
Quick Start
1. Download the Android app
2. Install the CLI
pip install -U haoleme
3. Pair this computer
hao login
Choose Haoleme Cloud or a self-hosted Private Relay, then scan the QR code or enter the 6-digit code in the app.
4. Run a command
Add hao before the command you already use:
hao echo hello
hao python train.py
hao bash script.sh
The run, live console output, and final status will appear in the app automatically.
Requirements
- Android 6.0 or newer
- Python 3.7 or newer on Windows, macOS, or Linux
- Network access to Haoleme Cloud, or a reachable Private Relay
Features
- Live runs: running, succeeded, and failed states with searchable console output and local history.
- Training progress (in development): detect common epoch, loss, and tqdm output and show progress directly on run cards. Recognition and presentation may change as this feature evolves.
- Phone notifications: know when a command completes or fails without watching SSH.
- Multiple machines: switch between computers and servers, rename devices, and see online status.
- Projects and metrics: group related runs and inspect CPU, memory, and GPU utilization.
- Remote controls: stop, rerun, open a remote terminal, or request shutdown after completion.
- Per-device startup monitoring: enable or disable background startup from the app, or use
hao autostart enable|disable|status. - Efficient realtime delivery: WebSocket updates keep runs and console previews in sync, with automatic SSE and HTTP fallback.
- Private by design: QR or 6-digit pairing, offline retry, local caches, and E2EE for sensitive run content.
Agent Integrations
Haoleme includes a skill for Codex and Claude Code. It automatically monitors important training, full evaluation, deployment, and long-running tasks while leaving dependency installs, quick pretests, formatting, and routine Git commands local.
npx skills add HaolemeApp/Haoleme --skill monitor-with-haoleme -g -a codex -a claude-code -y
Source
- CLI and Relay protocol:
src/haoleme - Android app:
android - Deployment examples:
deploy
Architecture
flowchart LR
HOST["Computer or server<br/>hao + local SQLite"]
RELAY["Haoleme Cloud or Private Relay<br/>pairing + sync + control"]
APP["Android app<br/>runs + console + notifications"]
HOST -->|"E2EE run updates + heartbeat"| RELAY
RELAY -->|"WebSocket / SSE encrypted updates"| APP
APP -->|"control requests"| RELAY
RELAY -->|"stop / rerun / terminal"| HOST
hao starts commands through a PTY and saves their state locally first. Network interruptions enter a retry queue. Commands, working directories, host details, and console output are encrypted with AES-256-GCM before upload; the Android app decrypts and caches them locally.
Self-hosting
The standard app can connect to a Private Relay without a custom APK. For an Internet-facing HTTPS Relay:
hao login https://hao.example.com
For a trusted LAN, run hao login, choose Private Relay, then choose Start a LAN Relay on this computer. A domain is optional on a private network; HTTPS is required when exposing a Relay to the Internet.
See the Private Relay deployment guide for Docker, Caddy, LAN mode, backups, and security guidance.
Help and Contributing
- Read the website and repository documentation.
- Report bugs or request features in GitHub Issues.
- Read the contribution guide before opening a pull request.
- Report vulnerabilities privately according to the security policy.
Security
The public repository excludes official signing keys, production credentials, private deployment configuration, databases, logs, payment QR codes, and user run data. Official signing material and server credentials are injected through private environment configuration.
Run contents are end-to-end encrypted. Relay operators can still see the limited metadata required for pairing, synchronization, device presence, and delivery. See SECURITY.md for supported versions and private vulnerability reporting.
License
Haoleme is licensed under AGPL-3.0-or-later.
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 haoleme-0.5.7.tar.gz.
File metadata
- Download URL: haoleme-0.5.7.tar.gz
- Upload date:
- Size: 133.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d7a5343600986bb48c344b9bb0b4045c2f502f14482bb56bfed9aada56bfe89
|
|
| MD5 |
7e8637e0fb46b60542911f221189d22c
|
|
| BLAKE2b-256 |
c6732dec43518c059c3e792acd9ea0aff46f0b668176744040caa431118e355e
|
File details
Details for the file haoleme-0.5.7-py3-none-any.whl.
File metadata
- Download URL: haoleme-0.5.7-py3-none-any.whl
- Upload date:
- Size: 105.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d837ae7d1b91d0d5b9271966665ca53d3f64c0a3d7c8f9bf600288dabc7c8ede
|
|
| MD5 |
e11defd9410c559eb835d02ba95211c4
|
|
| BLAKE2b-256 |
5d1d6ae748e3ed70478414fe8309a37db3822b7db46613f1165c6044bf9c826e
|