Add account
A reusable login (username + password). No URL here — you pick the URL when you create a job. Passwords are encrypted and never shown again.
Bulk add (one per line: username:password)
Create job
Advanced: custom login selectors for this URL (optional JSON)
Advanced: comment selectors (optional JSON)
1 · Install the agent on a device
Requires Docker on the target machine (Linux recommended). The command below enrolls the device, then the agent connects back automatically and shows up under Agents. Re-running it on the same device is safe (idempotent).
For many devices at once, use the Ansible playbook in
deploy/ansible/ with the same enrollment token.
2 · What the agent does
- Runs as a background Docker container (auto-restarts, survives reboot).
- On a command it launches a bundled headless browser (Chromium/Chrome or Firefox — no browser needs to be installed on the device).
- Opens the URL you defined, auto-detects the login form, types the username + password, and submits.
- Confirms success (URL change / password field gone / your success selector) and
reports
successorfailedback to this dashboard. - Streams live logs + status (pending → running → success/failed) per run.
- Detects CAPTCHA / MFA / bot-protection and reports it (it does not bypass them).
3 · Ports & how it talks to the server
| Direction | Protocol / Port | Purpose |
|---|---|---|
| Agent → Server | WSS (TLS) on 443 — path /ws/agent |
Persistent connection: receives commands, sends status + logs |
| Agent → Server | HTTPS on 443 — POST /api/v1/agents/enroll |
One-time registration to get its token |
| Server (public) | 80 | ACME/Let's Encrypt → redirects to 443 |
| Device inbound | None | The agent only makes outbound calls — no ports open on the device |
This dev server: agent connects to
(port shown in the install command). In production it's 443 behind TLS.
Because the connection is outbound-only, agents work behind NAT/firewalls without port forwarding.
4 · Manage the agent on a device
docker logs -f agentctl-agent # view live agent logs docker restart agentctl-agent # restart docker rm -f agentctl-agent # uninstall (then it goes Offline here)