Skip to content

About

Shim to send data to live.sentry.io, now vendored into `getsentry` (were you using it?)

Topics

Resources

Code of conduct

Security policy

Stars

8 stars

Watchers

44 watching

Forks

Repository files navigation

Sentry Orbital

A globe that draws a beam for every event, with a terminal overlay reading out throughput, SDK families and regions.

live.sentry.io

Run it

npm install
npm run dev

http://localhost:5190. That is everything — it runs on synthetic data.

Add the live feed

In a second terminal:

npm run backend          # Docker, nothing else to install
npm run backend:native   # or natively, needs Go 1.25

Reload the page. It finds the backend and switches over on its own.

Data source

auto in development: synthetic until a backend answers /healthz, then live. It does not switch back if the stream drops.

Force one, dev only:

?source=synthetic   ?source=real   ?source=auto

or VITE_EVENT_SOURCE=synthetic|real|auto before npm run dev.

A production build is hard-wired to the live feed — no override, and the synthetic generator is not in the bundle.

Backend

Serves /stream (SSE), /healthz and /stats on :7010. Vite proxies those three paths.

npm run backend:native is go run main.go, so it takes any flag:

flag default
-host 127.0.0.1 listen address
-http-port 7000 HTTP port (npm scripts publish it on 7010)
-udp-port 5556 UDP port
-test off generate test events internally
-sample-rate 1.0 fraction of datagrams eligible to forward
-max-forward-rate 50 ceiling on events/sec sent to clients

Both npm scripts pass -test. Port 7010 rather than 7000 because macOS AirPlay squats on 7000; point the frontend elsewhere with ORBITAL_BACKEND=http://host:port npm run dev.

The Docker script publishes only the HTTP port. For a real producer sending UDP, publish that too:

docker run --rm -p 7010:7000 -p 5556:5556/udp \
  -v "$PWD":/src -w /src golang:1.25-alpine \
  sh -c 'go run main.go -host 0.0.0.0'

In the browser

C or ?dev style panel + diagnostics — localhost only
F hide the readouts
S mute
?quality=low|medium|high force a rendering tier

Every style control is documented in SETTINGS.md.

Generated assets

tools/ holds scripts that generate things checked into the repo — the globe's land mask, the favicon set, and the social card. Nothing in there is served, shipped or run at build time; it is run by hand when an input changes, which is rarely. Vite copies only public/, main.go serves only static/, the runtime image is FROM scratch, and tools/ is in .dockerignore, so it cannot reach production by any of those routes.

See tools/README.md for what each script does and how to re-run it.

Build

npm run build     # -> dist/
npm run preview   # serve it on :5190, still proxied to the backend

The container build does not work yet. Dockerfile expects the frontend under frontend/ with output at /static; it is at the repo root and Vite emits dist/. The Go service serves static/, which nothing produces.

Deploy

Push to master builds the image and deploys it — nothing here is run by hand.

  • GitHub Actions (.github/workflows/build.yml) builds the Dockerfile, runs a smoke test against the running container, and pushes ghcr.io/getsentry/sentry-orbital:{nightly,<sha>}.
  • GoCD (gocd/) waits for that check by name — Build and smoke test — and rolls the image out to the orbital container in each US region.

The image is one static Go binary plus the built frontend: npm run build writes to static/, which is the directory main.go serves. That is why the build output is static/ and not dist/ — point it elsewhere and the container serves nothing.

About

Shim to send data to live.sentry.io, now vendored into `getsentry` (were you using it?)

Topics

Resources

Code of conduct

Security policy

Stars

8 stars

Watchers

44 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages