Skip to content

Dashboard

builder.Services.AddSurefireDashboard();
// ...
app.MapSurefireDashboard(); // at /surefire
app.MapSurefireDashboard("/admin"); // custom prefix

The dashboard is embedded in the Surefire.Dashboard package, with no extra files or build steps.

Pass a configure callback to override defaults:

builder.Services.AddSurefireDashboard(options =>
{
options.MaxTreeRuns = 100_000; // cap the run tree response (default: 50_000)
});

Anyone who can reach the dashboard can view job arguments and results, trigger jobs, cancel runs, rerun completed work, and pause queues.

app.MapSurefireDashboard()
.RequireAuthorization("AdminPolicy");

The home page gives you a quick overview:

  • Stat cards: total jobs, total runs, active runs, success rate, and nodes.
  • Status: a stacked bar showing the share of runs by status.
  • Activity: a stacked area chart of runs by status over time.
  • Latest runs: the most recent runs with status badges.

Use the period selector in the top bar to scope Status and Activity to 1h, 24h, 7d, or 30d.

Dashboard home

Lists all registered jobs with their name, description, cron schedule, enabled/disabled status, and tags.

Jobs list

Click into a job to:

  • Enable or disable it (disabling stops cron scheduling).
  • Trigger a run with optional JSON arguments, a scheduled start time, and priority.
  • See the job’s run history with pagination.

Job detail

Trigger a job run

Lists all runs with filters for job name, status, and date range.

Runs list

Click into a run to see:

  • Live progress bar for running jobs.
  • Streaming input, output, and logs that update in real-time as the job runs.
  • Arguments and result as formatted JSON.
  • Error details for failed runs, with per-attempt stack traces.
  • Trace: the full run tree (ancestors, current run, and descendants) with depth and live status.
  • Rerun chain: links to the original run and any reruns of it.

From the run page, you can also cancel a running job or rerun a completed one.

Run detail

Run detail with error

Lists all queues with their pending run count, concurrency limits, and paused status. You can pause and resume queues from this page. See the queues concept page for more on how queues work.

Queues list

Lists all scheduler nodes with their last heartbeat, running job count, and registered jobs.

Nodes list

Click into a node to see what jobs it handles and its recent run history.

Node detail

Press / or Ctrl+K (⌘K on Mac) to open the command palette. Jump to any of the main pages, or search for a specific job or node by name.

Command palette

The dashboard is built on a REST API at {prefix}/api/. Use it to query jobs and runs, stream run updates, and manage runs and queues from your own tools.

GET /api/stats # dashboard statistics
GET /api/jobs # list all jobs
GET /api/jobs/{name} # get a single job
GET /api/jobs/{name}/stats # get job-level stats
PATCH /api/jobs/{name} # update a job (enable/disable)
POST /api/jobs/{name}/trigger # trigger a new run
GET /api/runs?jobName=X&take=20 # list runs with filters
POST /api/runs/lookup # refresh many runs by id (JSON body: {"ids":[...]})
GET /api/runs/{id} # get a single run
GET /api/runs/{id}/logs # get parsed log events
GET /api/runs/{id}/stream # live logs & progress (SSE)
GET /api/runs/{id}/tree # run tree
POST /api/runs/{id}/cancel # cancel a running job
POST /api/runs/{id}/rerun # re-run a completed run
GET /api/queues # list all queues
PATCH /api/queues/{name} # update a queue (pause/resume)
GET /api/nodes # list all nodes
GET /api/nodes/{name} # get a single node