Dashboard
hackagent web serves the HackAgent dashboard from your own machine: the same
application as app.hackagent.dev, served by the CLI,
with no Node runtime, Docker or database server involved.
The recording shows the runs of the example run against a small support bot.
- Local mode (no API key): reads the runs recorded in your SQLite database. Read-only, apart from deleting a run.
- Remote mode (API key configured): shows your hosted HackAgent data.
Your API key never reaches the browser. It stays in the CLI process, which
attaches it to each request it proxies; the page itself runs with authentication
disabled and only ever talks to 127.0.0.1.
What each page shows
Click a screenshot to open it full size.
Getting the dashboard
The dashboard ships separately from the CLI, so an install that never opens it does not carry the frontend assets:
pip install 'hackagent[web]'
That extra installs Flask and the dashboard bundle. A bare pip install hackagent does not. Release binaries already include it. If hackagent web reports that no bundle was found, add the extra above. The bundle is served from hackagent/interfaces/web/static.
Usage
hackagent web # http://127.0.0.1:7860 (default)
hackagent web --port 8080 # custom port
hackagent web --local # ignore the API key, read local runs
hackagent web --no-browser # skip opening a browser tab
Every option is in the CLI reference.
--host 0.0.0.0 exposes the dashboard, and in remote mode anyone who can reach
the port can act with your API key: the proxy attaches it to every request and
the page requires no login. Bind it only on a trusted network, and prefer an SSH
tunnel (ssh -L 7860:127.0.0.1:7860 host) for remote access.
Local mode is read-only
Local mode renders agents, attacks, runs, results and traces, but does not launch attacks. Run a campaign from the CLI, then refresh the dashboard:
hackagent campaign run campaign.yaml
hackagent web
Troubleshooting
GET /healthz reports the active mode, the upstream API in remote mode, and
which dashboard bundle is in use — the first things to include in a bug report.
| Symptom | Cause |
|---|---|
| "No web UI bundle found …" | Nothing supplied a dashboard: pip install 'hackagent[web]', or use a release binary |
| "Port 7860 is already in use by another process" | An unrelated process holds the port — a previous HackAgent dashboard is reclaimed automatically, anything else never is. Use --port |
| Every panel is empty (local mode) | No runs recorded in that database yet, or they went to another one. Check hackagent results list |
| Creating or launching returns "read-only" | Expected in local mode — see above |
| 401s from the dashboard (remote mode) | API key missing, expired or revoked. Check hackagent config show |
See also
hackagent results: the same data from the command line.hackagent config: switch between local and remote mode.