The daemon
The daemon is the program on a developer's Mac that takes jobs from the pool and runs them. It is a single signed binary with a menu bar item, and it runs as a per-user agent, not as root.
Signing in
On first run the daemon opens a browser window where you sign in with GitHub and approve the machine. After that the daemon keeps one credential, a token for that machine alone. It can be revoked without affecting your other machines or your GitHub session.
States
| State | Meaning |
|---|---|
online | Connected and ready for a job. |
busy | Running a job. |
paused | Connected and taking no new jobs. |
draining | Finishing its current job and taking no more. |
offline | Not connected. |
The warm VM
The daemon keeps one VM booted and idle. When a job arrives it goes to that VM, so the job does not wait for a machine to boot. When the job ends the VM is destroyed and a fresh one is started for the next job.
When you need your machine
- When you start using the Mac during a job, the daemon throttles the VM and lets the job finish.
- On battery power or when the lid closes, the job is stopped. It shows as failed in GitHub and can be re-run there.
- Pausing from the menu bar stops new jobs from arriving.
Network
The daemon makes one outbound connection to the HiveWorker coordinator and opens no inbound ports. Jobs talk to GitHub from inside the VM. More on the security page.
Next: Pools