Prepare the host
- Install Embedder on the host.
- Install the project’s toolchain and any flashing or debugging tools the work needs.
- Connect the boards and instruments the work may use, or set up a remote hardware bridge.
- Record build, test and flash commands in EMBEDDER.md.
- Use an Embedder account that belongs to the teams whose repositories this host should work on. The daemon only picks up work for those teams.
Start the daemon
If a saved key is rejected, the command discards it and sets up a new one from the remaining sources.
Use a key on an unattended host
On a host without an interactive terminal, either sign in once withembedder and then start the daemon, or provide a token in the environment:
- In the Embedder app, open Settings.
- Under Tokens, choose Create token, and enter a Name.
- Choose an Expiration. The default is 90 days. When the token expires, the daemon stops authenticating until you give it a new one.
- Choose Create token, then copy the token. It isn’t shown again.
-
On the host, set it and start the daemon:
Restrict work to one project
By default, the daemon works on every mapped repository its account can reach. To limit it to one project, give both the team and project names:EMBEDDER_TEAM and EMBEDDER_PROJECT make the same selection through environment variables. Set both, or neither.
If a name doesn’t match, the command reports it and lists the available names, for example Team "Firmware" not found. Available: ....
The directory you start the daemon from doesn’t matter. Each run checks out its mapped repository separately.
Monitor work
Common activity messages:
Monitor keys:
With several daemons listed, click Change in the daemon’s Session section to change its model. The daemon applies the new model on its next status update and keeps it after a restart.
Set parallel capacity
The daemon runs up to four requests at once. To change this, setEMBEDDER_DAEMON_CONCURRENCY to a positive whole number when you start it:
Keep runs within the time limit
Each run can take up to 30 minutes. Time spent waiting for hardware extends that limit by the time waited, up to 20 extra minutes. A run that goes past its limit stops and reports that it exceeded its duration ceiling. Split long builds, investigations or soak tests into requests that finish within the limit. If a run stops at the limit, check its partial result and narrow the next request.Stop the daemon
Troubleshoot
- The monitor shows No active daemon found: start the daemon with
embedder start daemon. Run the monitor under the same operating-system account that started the daemon. - No daemon API key found: set
EMBEDDER_API_KEY, or runembedderto sign in, then start the daemon again. - Connected but idle: check that the repository is mapped to a project, that the daemon’s account belongs to that project’s team, and that
--teamand--projectname the right project. - Slack shows Waiting for daemon: no daemon picked up the request. Start one, then check the monitor.
- The project selection is rejected: provide
--teamand--projecttogether, with names from the list the command prints. - Waiting for local capacity: let an active run finish, or raise
EMBEDDER_DAEMON_CONCURRENCYif the host can support it. - Waiting for hardware: find the run using the board in Workers before stopping anything.
- Update the daemon: agent-owned publishing is required: update Embedder on the host, then stop and start the daemon.
- A run failed: read the result in GitHub or Slack, fix the reported setup problem, and request a new run.
- The duration ceiling was exceeded: shorten the request, or split it into separate build, test and investigation requests.