ON-PREM · MANAGED · AIR-GAP

High-density stealth orchestration,inside your perimeter.

Sprinter is the Chaser stealth browser runtime, packaged for enterprise deployment. Patched Chrome 146, kernel-level proxy rewriting, statistically coherent fingerprints — 500 to 700 concurrent sessions per 1U host, running inside your perimeter, with a real SLA.

Density 500–700sessions / host
Cold start 300–600ms warm
Patches 47C++ Chrome
Egress h2://filtered residential
700/host Sustained sessions 64-core EPYC · 256 GB · idle-heavy
47patches Chrome source mods Blink · V8 · Ozone · no JS injection
0ports Chrome debug surface CDP rides anonymous pipe fd 3/4
100%via proxy Traffic isolation seccomp-notify at the syscall

One request, one patched Chrome.

A single binary holds the session API, the CDP gateway, and the sandbox launcher. Chrome never sees a debug port; the network never sees a leak. The whole path is yours to audit.

// Request path — one session, one Chrome, one proxy
Client Puppeteer / Playwright / CDP your code, unchanged
:3000 REST Session API create · destroy · health · stats
:19000+ CDP Gateway Rust async WS · pipe fd 3/4 · no Chrome debug port
bwrap Sandbox isolation PID ns · seccomp-notify · CPU affinity · per-session /tmp
Chrome 146 Patched browser 47 C++ patches · Blink / V8 / Ozone · SwiftShader GPU
seccomp-notify Kernel network rewrite connect() intercepted · all TCP routed · zero leaks
Upstream Your proxy, your DNS h2 / SOCKS5 / HTTP · 1.1.1.1 DoH by default

Stealth at the C++ layer.

No Object.defineProperty overrides. No JavaScript injected into the page. Every spoof is a patch inside Blink, V8, or Ozone — so navigator.webdriver is false at the engine level, not at the document level.

Fingerprint

Statistically coherent identities.

A 9.5 MB Bayesian network generates profiles whose conditional probabilities mirror the real distribution of devices on the internet. Per-seed canvas, audio, WebGL, fonts. No defineProperty overrides — all spoofing is C++ inside Blink, V8, and Ozone.

  • Nodes25 in the model
  • UA strings479 canonical
  • GPU renderers650
  • Screen shapes2,431
Network

Seccomp-notify, not proxy flags.

Every non-loopback connect() call is intercepted by the kernel and transparently redirected through the configured egress — Sprinter's residential pool by default, your own fleet if you prefer. Chrome never sees --proxy-server. DNS-over-HTTPS through 1.1.1.1 is routed the same way. IPv6 instant-rejects so nothing times out.

  • InterceptionSECCOMP_RET_USER_NOTIF
  • DNS1.1.1.1/dns-query
  • WebRTCdisabled at policy
  • IPv6ECONNREFUSED
Sandbox

bwrap, PID ns, per-session tmpfs.

Each Chrome instance lives inside a bubblewrap sandbox with its own PID namespace, read-only root filesystem, fresh /tmp, dedicated fontconfig cache, and NUMA-pinned CPU affinity. Sessions can't see each other. Dead sessions die with their parent.

  • Isolationbwrap --die-with-parent
  • Affinitysched_setaffinity per CCD
  • Filesystemread-only + tmpfs
  • Fontsper-session fc-cache
CDP Transport

Pipe fd, not WebSocket.

Chrome launches with --remote-debugging-pipe — CDP rides anonymous file descriptors 3 and 4, not a TCP port. Network scanners see zero open debug ports. The Rust gateway bridges pipe to WebSocket for your client, and synthesises /json/version and /json/list responses.

  • Transportanonymous pipe (fd 3/4)
  • BridgeRust async WebSocket
  • Compatibilityfull CDP surface
  • Visible ports0 inside Chrome
Input

isTrusted events, Bezier paths.

A shared-memory control plane dispatches MOUSE_MOVE, MOUSE_CLICK, KEY_TYPE, and SCROLL ops directly through RenderWidgetHostImpl::Forward*. Every event has isTrusted: true at the C++ layer. A per-session seed drives the ChaserInputHumanizer for deterministic-but-varied timing.

  • DispatchForwardMouseEvent (C++)
  • Trust bitisTrusted = true
  • PathsBezier trajectories
  • SeedCHASER_HUMANIZE_SEED
CAPTCHA

Resolvers you can audit.

GeeTest slide, gobang, icon, SVG, and AI types resolved in-process via chaser-gt. reCAPTCHA audio downloaded, MP3-decoded, and transcribed through Google Speech. Chaser.captchaDetected CDP events trigger async solvers — nothing leaves your proxy unless you allow it.

  • GeeTest5 challenge types
  • reCAPTCHAaudio + speech
  • SignalChaser.captchaDetected
  • Externalonly via your proxy

Your pipeline.One new URL.

Sprinter speaks standard CDP. Anything that already connects to Chrome — Puppeteer, Playwright, a scraper your team wrote in 2021 — connects to Sprinter the same way. The REST surface is four verbs.

One POST. One ws:// URL. Your existing Puppeteer pipeline, unchanged.

Sprinter speaks standard CDP. If your code already calls puppeteer.connect or chromium.connectOverCDP, the only thing that changes is the URL you connect to. No SDK to vendor, no proprietary client, no rewrite. Swap the endpoint, keep the pipeline.

  • RESTCreate, inspect, destroy.
  • CDPFull surface, via the gateway.
  • ProxyKernel-level, yours, no leaks.
  • ClientPuppeteer · Playwright · anything that talks CDP.
POST /v1/sessions curl
curl -X POST http://sprinter.local:3000/v1/sessions \
  -H "Content-Type: application/json" \
  -d '{
    "proxy":      "socks5://user:pass@proxy.example.com:1080",
    "seed":       "stable-identity-42",
    "target_url": "https://www.bing.com/search"
  }'
201 Created json
{
  "session_id":   "ses_abc123",
  "cdp_url":      "ws://127.0.0.1:19000/devtools/browser",
  "exit_ip":      "1.2.3.4",
  "exit_country": "US",
  "expires_at":   "2026-04-14T10:00:00Z"
}
pipeline.js node
// rebrowser-puppeteer-core — drop-in puppeteer
const browser = await puppeteer.connect({
  browserWSEndpoint: cdp_url,
  defaultViewport: null,
});
const page = await browser.newPage();
await page.goto("https://example.com");

Residential exits,scored before they ship.

Sprinter customers get access to a filtered residential pool we don't sell standalone. Every IP runs through our own intelligence pipeline — classification, risk, history, port profile — and the API backing it is public if you want to score your own.

Included · residential proxies

Residential IPs. Filtered on our own pipeline. From $1/GB at volume.

Exclusive to Sprinter customers — we don't sell proxies as a standalone product. Every exit is scored and filtered through the same intelligence pipeline that powers ip.chaser.sh — our public IP intelligence API. We publish it because we're confident the signal beats every commercial endpoint we've benched it against.

Traffic rides h2:// by default — our own multiplexed HTTP/2 transport that collapses the handshake chain and recycles connections across sessions. SOCKS5 and HTTP CONNECT work everywhere the pipe does.

  • QualityResidential · filtered · clean history
  • Formath2:// by default · SOCKS5 / HTTP fallback
  • PricingFrom $1/GB at volume — talk to us
  • Intel APIPublic at ip.chaser.sh · free to try
GET ip.chaser.sh/api/v1/myip intelligence
{
  "ip": "50.220.237.1",
  "classification": {
    "type":           "residential",
    "is_residential": true,
    "is_datacenter":  false,
    "is_proxy":       false
  },
  "risk": {
    "level":          "low",
    "score":          10,
    "ml_proxy_score": 0.0573,
    "signals": ["residential_isp", "clean_port_profile"]
  },
  "dnsbl":   { "hit_count": 0 },
  "history": { "block_count": 0 }
}

Actual response for a Sprinter exit. BGP, WHOIS, port profile, DNSBL, risk signals, ML scoring — we score every IP, then ship the ones that clear. Try the API on any address at ip.chaser.sh.

Five hundred sessions.One rack unit.

Not a lab number. Idle-heavy scraping workloads hold 500–700 sustained sessions on a 64-core EPYC. Short-lived job traffic runs 17k–24k per hour. KSM and hardlinked templates do most of the memory work for you.

Reference host — 1U

AMD EPYC 9554 · 256 GB DDR5 · 2× NVMe

CPU64c / 128t · 3.1 GHz base
Memory256 GB DDR5 ECC · 4800 MT/s
Storage2× 3.84 TB NVMe · RAID1
Network2× 25 GbE · SR-IOV
KernelLinux 6.1 LTS · KSM on
500–700 Sustained sessions
17–24k Short jobs / hr

Idle-heavy scraping and scouting workloads. Active workloads scale linearly with core count. Scale out by racking more hosts behind one gateway.

What fits on a box.

Measured on the reference host. Your numbers depend on page weight, interaction density, and how long sessions stay warm.

Idle / long-dwell scraping 700sessions
Medium interaction (forms, clicks) 500sessions
Heavy automation (video, WebGL) 280sessions
Short one-shot jobs 24,000/ hour
Cold-start to first navigation 300–600ms (warm)

Pre-warmed profile templates hardlink into each new session's profile before Chrome launches. The kernel dedupes shared pages for free — one template, N sessions, no KSM hash-compare.

Security · data path

On-prem deployments never transit our infrastructure. Chrome runs on your hardware, behind your proxy, resolving your DNS, writing to your logs. Your existing compliance program covers the data path — we don't sit in it. Managed deployments run single-tenant, in a region of your choice, with an audit trail for every session create, destroy, and proxy rewrite.

Single-tenant No shared infra
In your VPC Your proxy, DNS, logs
Air-gap Offline license option
Audit log Session & proxy events

Prebuilt where you can,tailored where you need.

Most enterprises drop Sprinter on a host and run. For everyone else — custom sandboxes, existing microVM fleets, bespoke VM templates — the core composes with what you already have.

01

Prebuilt, on-prem.

Single binary, one systemd unit, bring your own proxy. Rack a 1U, license the runtime, run the smoke test. You're orchestrating Chrome sessions in the afternoon.

Ready to deploy
02

Managed, dedicated.

Single-tenant Sprinter cluster in a region of your choice, operated by us. You get the REST surface and the SLA. We handle patches, capacity, and the underlying fleet.

Sprinter, hosted
03

Tailored foundation.

Already using Chaser's microVM foundation, custom sandboxes, or bespoke VM templates? The Sprinter core composes with the same primitives — we'll fit it to what you've built.

Custom engagement

Run the fleet.Own the perimeter.

Sprinter is the Chaser stealth browser core, packaged for on-prem and managed enterprise deployment. Pre-warmed, patched, auditable — and tailored to whatever your infrastructure already looks like.