Dawnstar Labs Vardhold Docs

Local API

The service exposes a JSON API on the loopback interface. The dashboard, tray app, hooks and CLI all use it, and so can your own scripts.

2 min readUpdated October 2026Vardhold 0.1 (pre-release)

On this page
  1. Basics
  2. Roles
  3. Endpoints
  4. Live events
  5. Example

Basics#

Address
http://127.0.0.1:47823, loopback only. Never reachable from the network.
Format
JSON, camelCase, ISO-8601 UTC timestamps
Version
/api/v1
Authentication
Header X-Vardhold-Token
Cross-site requests
Rejected: foreign Host and Origin headers get 403

Roles#

There are two tokens, both replaced every time the service starts.

TokenWho has itMay
UserThe tray app and the dashboard it hostsRead everything, and make anything stricter
Admin%ProgramData%\Vardhold\admin.token, readable only by SYSTEM and AdministratorsEverything

A call that would loosen protection with the user token returns 403 with "elevationRequired": true. These calls need the admin token: allowing an approval, lowering the mode, releasing the kill switch, trusting or unblocking an agent, resuming processes, removing proxy protection from an MCP server, and changing the policy or settings.

Endpoints#

AreaEndpoints
Health and statusGET /health (no token) · GET /status · PUT /mode · GET /stats/activity
AgentsGET /agents · GET /agents/{id} · PUT /agents/{id}/trust · PUT /agents/{id}/network · POST /agents/{id}/suspend, /resume, /terminate
Kill switchPOST /killswitch with engage, release or terminate
MCP serversGET /mcp · PUT /mcp/{id}/proxy · POST /mcp/rescan
Events and alertsGET /events (filter by agent, action, verdict, severity, source, text and time) · GET /events/{id} · GET /alerts · PUT /alerts/{id}
ApprovalsGET /approvals · POST /approvals/{id} with allow_once, allow_always or deny
PolicyGET /policy · POST /policy/validate · POST /policy/dry-run · PUT /policy · GET /policy/history · GET /policy/history/{version}
SettingsGET /settings · PUT /settings · POST /settings/test-export
EvidencePOST /integrity/verify · GET /export
Live streamGET /stream, Server-Sent Events

All paths are under /api/v1. Pilot customers receive the full reference with every type and field.

Live events#

GET /api/v1/stream is a Server-Sent Events stream. Because browsers cannot send headers to an event stream, it also accepts ?token=.

EventSent when
helloOn connect, with the current status
eventEvery agent event
alertEvery alert
approvalAn approval is created or changes state
agentAn agent is discovered, exits, or its trust or network state changes
statusThe mode or kill switch changes, and every 10 seconds

Example#

List open alerts from an elevated PowerShell prompt:

PowerShell
$h = @{ 'X-Vardhold-Token' = (Get-Content "$env:ProgramData\Vardhold\admin.token") }
Invoke-RestMethod "http://127.0.0.1:47823/api/v1/alerts?status=open" -Headers $h |
  Select-Object ts, severity, agentName, title