Skip to main content
GitHub Actions in the dashboard lists every workflow run that used a BoxRouter runner. Open one to see where each job ran, its timeline, and what it cost. Jobs in the same workflow that use other runners are not listed. Before You Begin: A repository turned on for Actions and at least one job that has run on a BoxRouter label.

Find the Run

Switch between Active and All, search by workflow or repository, or filter by repository, state, branch, or trigger. Select a run to open its panel beside the list. A workflow with several jobs shows one block per job, with its provider, size, region, and sandbox.

Read the Panel

  • The timeline lists the steps below in the order they happen. The dashboard shows the label, and boxrouter actions jobs list-events and the API return the step name, with an outcome (ok, refused, ignored, deferred, unknown or error) and a reason_code. A job that stops early may not reach every step; a refusal shows the reason.
  • A job’s cost and charge read unknown after the job ends, and its full reservation stays held, until the provider reports its usage. Some providers take about 30 minutes. The charge is then set from the provider’s records and the unused reservation returns; see Read a Sandbox’s Cost.
  • The job’s sandbox page says Created by GitHub Actions and links back to the run. It keeps its record after the sandbox is deleted.
  • Opening the panel shows the first part of the job log, fetched from GitHub at that moment. BoxRouter doesn’t store it. View job log opens the full log on GitHub, which owns step output.

From Code or the Terminal

Install a client and set BOXROUTER_API_KEY as in Set Up Your Account. The CLI prints JSON, and these examples print the same JSON from the SDKs. First, list the recent failed runs, read the first one, and list its jobs:
Then read one job. Replace JOB_ID with the id of a job from the list:
The first example takes the first run’s id and prints that run’s jobs; each job’s id is the value for JOB_ID. The separate github_run_id and github_job_id fields do not work in these commands. An empty data array means there are no matching runs or jobs, and the first example stops. A job’s lifetime_seconds is its time limit plus the 5-minute pickup window, in seconds: 21,900 for a job with the 6-hour limit. Use get-steps for individual step durations; the run panel shows the overall run duration. Actions in the API reference lists every field.

When a Job Did Not Succeed

A failed job shows its reason code, which you can copy into a support request. Amber marks a BoxRouter or provider problem; red marks a failed workflow step. Why it failed uses the first matching category in this order: If no event, recorded failure or job result matches a row above, the panel shows no failure category.

Cost

The panel shows what a job’s sandbox cost, and whether your provider key or Credits paid for it.
  • Charge appears once a run paid with Credits ends. The panel and the runs table both show it. It is the provider’s cost with no markup. A run still going, or one whose charge isn’t settled, shows a dash.
  • The sandbox’s page shows how the charge was worked out. Runner setup, pickup wait, and cleanup count as sandbox usage.
  • Provider Cost is the sandbox’s cost, from its creation until BoxRouter confirmed its destruction. A workflow with several jobs shows Job Provider Cost for each.
  • Reported By Provider means the provider reported the amount. Otherwise, the label says the amount was calculated from a list price.
  • A run still in progress shows no amount until its sandboxes are deleted.
  • A job refused for funding starts nothing and is charged nothing. After you add credits, re-run it; it does not start by itself.
  • A missing amount means BoxRouter has neither a provider-reported cost nor a calculated cost to show. Check your provider’s bill for the amount charged.
With a provider key, BoxRouter charges nothing for the job and the provider bills you directly. GitHub’s own duration and any GitHub-hosted runner charges are separate. See Cost for labels and sources.

Cancel and Re-Run

Cancel Run, Re-run and Re-run Failed Jobs appear in the panel and the row menu when you have permission. Each sends the request to GitHub. When you select Cancel Run, BoxRouter asks GitHub to stop the whole workflow run, including its other jobs. BoxRouter requests cleanup of its sandboxes; check the run’s cleanup status for confirmation. A re-run starts a new attempt in a new sandbox. BoxRouter checks the repository, trigger, label and funding again, then picks a provider and account again. A re-run can therefore run elsewhere than the first attempt, or be refused. After you cancel or re-run, the panel shows requested until GitHub reports the new state. Check the run on GitHub before you click again, because each click sends another request. Cancel a run by its id from runs list:
Once GitHub reports the run as finished, re-run only its failed jobs:

Next Steps

Troubleshoot Actions

Fix a refused or failed job.

How Sandbox Cost Works

Cost labels and sources.

Choose a Runner

Labels, sizes, and time limits.