Skip to content

feat(grid-provider-traffic): add provider selection demo - #15

Draft
nerdalert wants to merge 1 commit into
praxis-proxy:mainfrom
nerdalert:feat/grid-provider-traffic-demo
Draft

feat(grid-provider-traffic): add provider selection demo#15
nerdalert wants to merge 1 commit into
praxis-proxy:mainfrom
nerdalert:feat/grid-provider-traffic-demo

Conversation

@nerdalert

@nerdalert nerdalert commented Aug 15, 2026

Copy link
Copy Markdown
Member

Summary

This draft PR adds the focused grid-provider-traffic demonstration to the
public demos repository.

It shows Grid-programmed provider selection across three distinct provider
gateways, with one consumer gateway performing local intelligent_route
round-robin selection inside the active group.

                         Client traffic
                              |
                    Consumer / Edge Gateway
                              |
                       intelligent_route
                              |
          +-------------------+-------------------+
          |                   |                   |
   Provider Gateway A  Provider Gateway B  Provider Gateway C
          |                   |                   |
     Provider stack A    Provider stack B    Provider stack C
          |                   |                   |
       VCR backend A       VCR backend B       VCR backend C

The demo intentionally keeps one consumer entrypoint so the provider-level
selection behavior is easy to see. The architecture supports multiple
consumer/edge gateways for scale-out; each gateway maintains local selection
state rather than using a globally coordinated request-time counter.

Grid selects among provider gateways. Endpoint, replica, or backend selection
inside an individual provider gateway remains the responsibility of that
provider's independent serving stack.

Capabilities demonstrated

  • Cross-site provider discovery and SWIM convergence.
  • GridSite trust authorization and active remote sites.
  • Versioned Grid overlay publication and Praxis overlay acceptance.
  • Explicit routingPolicy: scoreFirst.
  • Explicit scoringPolicy.strategy: noMetrics.
  • Explicit selectionPolicy.mode: roundRobin.
  • Three fresh NewAndExisting candidates in selection group 0.
  • One consumer gateway routing to three separate provider gateways.
  • Exact 20/20/20 distribution over 60 serial requests.
  • Repeating three-provider selection sequence.
  • VCR-backed provider attribution.
  • Scoped teardown that removes only the demo clusters and network.

This PR does not claim weighted routing, metric-derived traffic ratios,
provider-local replica balancing, GLB, DNS/GTM routing, globally coordinated
round-robin, or automatic retry after an upstream request has started.

Pinned development images

The demo uses immutable project-owned development image tags and records their
expected registry digests in demos/grid-provider-traffic/configs/images.env.
It does not require local container builds.

  • Gateway: ghcr.io/nerdalert/praxis-ai:grid-provider-selection-otel-20260814-536534aba5c1
  • Operator: ghcr.io/nerdalert/grid-operator:provider-selection-20260814-d965540dad8d
  • Overlay sync: ghcr.io/nerdalert/grid-overlay-sync:provider-selection-20260814-d965540dad8d
  • VCR backend: ghcr.io/neuralmagic/vllm-vcr:vllm0.23

The tracing UI image is documented as an optional supporting component and is
not required for the core routing proof.

Running the demo

Until the provider-traffic xtask entrypoint is merged into Grid main, use the
public Grid feature branch that contains the command:

git clone --branch feat/provider-selection-groups \
  https://github.com/nerdalert/grid.git grid-provider-selection-grid
export GRID_REPO="$PWD/grid-provider-selection-grid"
git clone https://github.com/praxis-proxy/demos.git demos
cd demos
source demos/grid-provider-traffic/configs/images.env
./demos/grid-provider-traffic/run.sh --quick --teardown

The wrapper builds only Forge and xtask locally. It does not build the
gateway, operator, overlay-sync, or tracing UI images.

Validation

The clean validation used the pinned image tags, the Grid provider-selection
branch, and zero existing provider-traffic clusters.

  • git diff --check
  • bash -n demos/grid-provider-traffic/run.sh scripts/run-grid-demo.sh
  • Ruby YAML parsing for the Forge and Kubernetes resource files
  • Clean three-cluster install
  • SWIM convergence and remote GridSite authorization
  • Global overlay convergence
  • Exact 60-request proof
  • Exact provider distribution: 20/20/20
  • Repeating provider sequence
  • Scoped teardown

Runtime evidence showed:

  • one consumer replica;
  • three provider gateways;
  • three VCR backends;
  • all candidates in group 0;
  • roundRobin selection mode;
  • stable semantic and serving revisions during measurement;
  • zero request failures.

The clean validation completed successfully in 380 seconds and removed only
the three provider-traffic Kind clusters and their network.

Related work

This is intentionally staying in draft until the Grid provider-selection
feature branch merges and the public demo can use the supported Grid main
entrypoint. It does not change Grid or Praxis AI implementation code.

Checklist

  • Public demo README and topology documentation added.
  • Pinned development image references documented.
  • Provider-traffic xtask wrapper wiring added.
  • Clean install and exact distribution proof completed.
  • Teardown verified and unrelated Kind cluster preserved.
  • Grid provider-selection branch merged into Grid main.
  • Cross-repository image set promoted beyond research use.

Signed-off-by: Brent Salisbury <bsalisbu@redhat.com>
@nerdalert nerdalert added the holding-pattern Blocked or waiting on demo components to merge label Aug 16, 2026
@nerdalert

Copy link
Copy Markdown
Member Author

Weighted Provider Demo

weighted-provider-distribution.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

holding-pattern Blocked or waiting on demo components to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant