Skip to main content

This page never talks to the service itself. Every button posts to SvelteKit, whose server calls the runtime-lab service — a separate Rust process in its own container — with a credential the browser never sees. Every figure below is measured on that call.

browser → +page.server.ts → client.ts → runtime-lab (Rust, separate container)

Targets

A target is a place the service runs, configured on the server and chosen here by name — never by URL. Nothing is called until you press Check.

Local container

Not configured

The service in its own Podman container beside the dev server.

Remote host

Configured

The same image on a hosted free tier, reached over HTTPS. Free hosts sleep when idle; the first call may take about a minute.

Evaluate

Send a preset order to the rules engine. The page sends only the preset's name; the server owns the request body. A refusal is the engine's answer, not an error.

Failure drills

The request's time budget is already used up. The client refuses to start work it cannot finish — nothing is sent.

Sends a well-formed but wrong bearer credential. The service itself refuses it with 401.

Sends an out-of-bounds order past the client's checks. The service validates it again and answers 400.

This session

Calls made from this browser tab, newest first. Measured on the server for each call; nothing is stored and nothing is estimated. Times in milliseconds; a dash means not observed.

No calls yet.

The boundary

  • One contract: the Rust types generate openapi.json, which generates the TypeScript types the service client validates against. A change on either side fails a test before it fails a request.
  • The service enforces its own bearer credential and refuses to start without one. The credential lives in server-only configuration and never reaches this page, a log line or an error.
  • Targets are fixed on the server; this page names them, it cannot point anywhere. There is no proxy and no CORS — the browser never talks to the service.
  • Every call has a deadline and a bounded answer, and ends in exactly one outcome. Only idempotent calls are retried — once, and only when no response arrived.
  • The service is optional: only this page depends on it. Stop it, and this page reports it unreachable while the rest of the site carries on.
  • The same container image runs locally under Podman and on a hosted free tier — only the port and the credential change.

Think this pattern could be better? Tell us how.

Leave feedback