Pulsar — distributed fetch proxy

Pulsar is a generic HTTP web_fetch API on sgapps.io. Externaltools call sgapps.io, which forwards the request to a device from thecaller's own android-bridge fleet, and returns the first agent's answer.

sgapps.io is orchestrator, not fetcher. Every HTTP request leaves the Internet from one of the caller's Android devices, not from sgapps.io. This is what makes Pulsar an over-NAT proxy mesh with billing-per-request semantics.

Why it exists

Shape at a glance

┌─────────────┐  POST /pulsar/api/fetch       ┌───────────────────┐
│  Any HTTP   │ ─────────────────────────────▶│ sgapps.io         │
│  client     │ ◀─── {jobId, retryAfterMs}────│  services/pulsar  │
└─────────────┘                               └─────────┬─────────┘
                                                        │ enqueue
                                                        ▼
                      androidBridge.pulsarJobs
                                                        ▲
┌───────────────────────────────────────────────────────┴─────────┐
│ Agent carrier (one of):                                         │
│   - Android device · AB Desktop · preset "pulsar/web-fetch"     │
│   - Android device · AB Desktop · homepage = /pulsar/agent/ui   │
│   - Operator PC · standalone browser (Chrome/Chromium/Firefox)  │
│                                                                 │
│   - loads /pulsar/agent/ui (constant URL — no token)            │
│   - identifies itself by `bid` (AB buildIdentifier or           │
│     `browser-<hex>` from localStorage.pulsar.identity)          │
│   - polls /pulsar/agent/api/claim                               │
│   - executes fetch() with the agreed timeouts + headers         │
│   - POSTs /pulsar/agent/api/callback                            │
└─────────────────────────────────────────────────────────────────┘

Core guarantees

Next steps

sgapps.io