Haoleme
Monitor commands on your computer or server from your phone.
Website · Download APK · Quick Start · PyPI
[!TIP] Codex / Claude Code Skills are now supported
Codex and Claude Code can automatically identify important training, full evaluations, and long-running tasks, then use
haoto sync status and output to the Haoleme app. Dependency installs, quick pretests, and other routine commands stay local. See installation
Official Links
- Website: https://haolemeapp.github.io/
- GitHub: https://github.com/HaolemeApp/Haoleme
What Is It
Haoleme is a command monitoring tool.
Start a command with hao, then watch its status, console output, device online state, and finish notification in the mobile app. It is useful for training jobs, remote scripts, batch tasks, crawlers, long SSH sessions, and anything you do not want to babysit in a terminal.
Preview
The home screen shows active and completed runs in one place. Settings covers pairing, shared spaces, appearance, and security options.
Quick Start
1. Download the App
2. Install the CLI
pip install -U haoleme
3. Pair a Device
hao login
Choose Haoleme Cloud or a self-hosted Private Relay, then open the app and scan the QR code or enter the 6-digit pairing code.
4. Run a Command
Prefix your original command with hao:
hao python train.py
hao bash script.sh
hao echo hello
The app will show status and console output automatically.
5. Let Codex / Claude Code Monitor Important Tasks
Install the skill globally for both Codex and Claude Code:
npx skills add HaolemeApp/Haoleme --skill monitor-with-haoleme -g -a codex -a claude-code -y
The skill adds hao to training, full evaluations, long batch jobs, and other important work. It leaves dependency installs, quick pretests, formatting, and routine Git commands local.
Features
- running / succeeded / failed status
- console output and search
- finish notifications
- multiple devices and online status
- device rename
- project grouping
- GPU / CPU monitoring
- QR code and 6-digit pairing
- end-to-end encryption for sensitive run content
Source
Architecture
flowchart LR
subgraph Host["Computer or server"]
CLI["hao CLI<br/>process wrapper + PTY capture"]
PROC["Command process"]
LOCAL[("Local SQLite<br/>runs + retry queue")]
CLI -->|"start / interrupt"| PROC
PROC -->|"stdout · stderr · exit code"| CLI
CLI <-->|"local-first writes"| LOCAL
end
subgraph Relay["Haoleme Cloud or Private Relay"]
API["Relay API<br/>pairing · sync · heartbeat · control"]
CLOUD[("Relay SQLite<br/>encrypted runs + device metadata")]
API <-->|"store / query"| CLOUD
end
subgraph Mobile["Android app"]
APP["Haoleme App<br/>Runs · Devices · Console · Notifications"]
CACHE[("Phone cache<br/>runs + console history")]
APP <-->|"offline access"| CACHE
end
CLI -->|"AES-256-GCM run updates"| API
CLI -.->|"online + CPU/GPU heartbeat"| API
API -->|"encrypted updates + status"| APP
APP -->|"pair · refresh · delete · interrupt"| API
API -.->|"interrupt request"| CLI
- Local first:
haostarts the command through a PTY, saves status and output to local SQLite, and retries cloud synchronization after a network interruption. - End-to-end encrypted: during pairing, the app wraps the account encryption key with the CLI's temporary RSA-OAEP-SHA256 public key. The CLI encrypts commands, working directories, host details, and console output with AES-256-GCM before upload.
- Replaceable relay: Haoleme Cloud and a self-hosted Private Relay expose the same API. The relay stores encrypted run payloads plus the status and device metadata needed for synchronization; it does not receive plaintext command or console content.
- Mobile cache and control: the Android app decrypts runs locally, keeps run and console history on the phone, displays completion notifications, and sends interrupt or deletion requests back through the relay.
Security
The public source tree does not include official signing keys, private production deployment config, real IP addresses, passwords, personal donation QR codes, or access tokens.
Official Android signing material and server credentials are injected through environment variables or private local configuration. See SECURITY.md for reporting guidance.
The app and CLI connect to the official service by default. You can also self-host from source. Do not commit your own keys, tokens, databases, signing files, or server passwords to a public repository.
Private Relay
The normal Haoleme app also works with a self-hosted relay; no custom APK is
required. Deploy the Docker/Caddy stack in deploy/RELAY.md,
then pair a computer with one command:
hao login https://hao.example.com
Scanning that QR switches the app to the named relay. App credentials and E2EE keys are isolated per relay, and private-relay QR codes never fall back to the public Haoleme service.
For a trusted local network, a domain is optional:
hao login
Choose Private Relay, then Start a LAN Relay on this computer. hao
starts it in the background and immediately shows the pair code and QR. Other
computers can use the LAN address it prints. For explicit Relay-only control,
haoleme-relay --lan --port 8000 remains available; add --no-pair to keep it
in the foreground without pairing the Relay host.
Local HTTP is restricted to private IP addresses. Keep it inside the LAN; use
HTTPS for any Internet-facing relay. See deploy/RELAY.md.
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.2.tar.gz.
File metadata
- Download URL: haoleme-0.5.2.tar.gz
- Upload date:
- Size: 123.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 |
58974d2adac4dfaea0de8ddbe741f522365f8c27f6ff908fd66063b9cb9707af
|
|
| MD5 |
9646c50c9f11a4ceb0fb53d8f5961040
|
|
| BLAKE2b-256 |
1399bcf48294b8a144d8e2bb5ae54230d10ddf3fe011881fd9d03bdab47e1017
|
File details
Details for the file haoleme-0.5.2-py3-none-any.whl.
File metadata
- Download URL: haoleme-0.5.2-py3-none-any.whl
- Upload date:
- Size: 98.1 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 |
585c15a496fed888026bf3800ac93f20bb6020270e1fcd7d2d562a3107e6c554
|
|
| MD5 |
a423db7ed6f7eaeaf706b2da3ce43a8f
|
|
| BLAKE2b-256 |
27850ef33ea6a3f841f23b9aa82df958c08cfe29c3e1666d00b877a6072e2972
|