ScoutSentinelScoutSentinel
Menu

Runner locations

Location classes, what each can and cannot tell you, the runner identity on every Observation, location keys and how region comparison works.

v1Updated

Geography, cloud region and access network answer different questions, so ScoutSentinel offers several location classes. Each Watch has a location policy and every Observation records exactly which runner produced it.

Location classes

Class What it is Best for What it cannot tell you
edge Cloudflare Workers and Browser Rendering, selected by geographic policy Broad, low-cost routine probes from many cities The network is Cloudflare, not a consumer ISP; egress addresses are not stable
regional Small hardened containers with a pinned browser image in a named cloud and region (AWS, GCP or Azure) Deterministic cloud-region comparison, stable egress addresses for allowlisting Residential or mobile realism
private Outbound-only runner you operate in an office, VPC, branch or contact centre Internal or private-service reachability from your own network Anything outside the network it sits in
partner Telephony and network partners with contractually defined origins Carrier, mobile and residential realism Coverage we would rather not fake with cloud runners

Which classes your organisation may select is an entitlement of your plan; GET /v1/locations lists every location with its class, provider, region, capabilities, whether it is entitled for you and whether it is online.

Runner identity

Every Observation carries a runner object:

Field Values Meaning
runnerId string The registered runner instance
provider cloudflare, aws, gcp, azure, local, customer, partner Who operates the runner
region string, for example lhr, eu-west-2, australia-southeast1 Provider region label
networkClass edge, cloud, private, carrier, local The access network the request left from
runnerVersion string Runner software version
browserVersion string, optional Pinned Chromium build for browser probes
probeVersion string Version of the step DSL and executors (currently 0.1.0)

The three identity fields that define a vantage point form the location key provider:networkClass:region, for example cloudflare:edge:lhr or aws:cloud:eu-west-2. It appears as locationKey on Observations, as a filter on runs and events, in the region picker, and as locations[] on an Event. The human label drops the colons: cloudflare edge lhr. Corroboration in the materiality policy counts distinct location keys, so two runners in the same provider, network and region are one location.

Comparisons across locations are only made when probe version, browser image, assertion set and time window match; the Locations tab marks each location comparable or not, and evidence comparison lists the reasons a pair is not like-for-like.

Location policy on a Watch

{ "classes": ["edge", "regional"], "regions": ["lhr", "fra", "syd"], "minLocations": 2 }

classes selects one or more location classes, regions optionally narrows to named regions, and minLocations (default 1) is how many distinct locations should observe every schedule slot; it feeds coverageLocations assertions and the confidence shown on an Event. A probe inside the Watch may carry its own locationPolicy to run, for example, a DNS check from one place while the browser journey runs from three. materiality.corroboratingLocations decides how many of those locations must agree before an outcome Event opens.

Regional runners

Regional runners register with a one-time bootstrap token, sign every request to the platform with an Ed25519 key that never leaves the runner, receive short-lived jobs by long-polling and upload evidence through the API where its hash is verified before the metadata row is written. Secrets a job needs are decrypted for that job only and never persisted by the runner.

Open a journey’s Locations tab to review recorded locations and requested location policies. This view does not publish static egress addresses or confirm that every requested runner is available. Obtain the actual egress addresses from the operator of your deployed runner before allowlisting; do not infer them from a region label. See also the synthetic traffic markers.

Private runners

Private runners are the same software run on your infrastructure with provider: customer and networkClass: private. They make outbound, mutually authenticated connections only and never require an inbound management port. The app shows health, version, last contact and the network identity each runner reports. A runner that is shut down or loses contact reports its in-flight jobs as unknown with reason runner_disconnected, never as a target failure.

Separating runner failure from target failure

Every runner runs a canary journey against a page it serves itself before it leases any work, and repeats it every ten minutes. A runner whose canary fails stops leasing, and any job it could not execute for its own reasons is recorded as unknown with reason runner_error. Three consecutive unknowns for a Watch open a low-severity coverage Event so the gap is visible; your journey is never marked failed by our infrastructure problem.