Skip to content

Feature: Multiple grpc targets - #7

Merged
pranavpsawant merged 4 commits into
mainfrom
feature/multi-target-support-v1
Jul 27, 2026
Merged

Feature: Multiple grpc targets#7
pranavpsawant merged 4 commits into
mainfrom
feature/multi-target-support-v1

Conversation

@pranavpsawant

Copy link
Copy Markdown
Contributor

Summary

Adds first-class multi-target support — a single gRPC Studio instance can now
connect to several gRPC servers at once and switch between them from a server
selector in the UI. Also ships a second bundled example service, restructures the
examples, and adds demo/deployment tooling. This is a breaking change to the
backend and Helm config (single target → list of targets), so the app and chart
are bumped to 2.0.0.

Features

Multi-target

  • Backend connects to multiple gRPC targets defined under client.targets[]
    (each with its own host/port/mode and TLS/mTLS settings); at least one is
    required. Per-target client management via a new multi-client manager.
  • Server selector in the UI to choose which target(s) to explore.
  • Method tabs — open many methods side by side, duplicate and close tabs.
  • Indexed env overrides (GRPC_TARGET_<i>_HOST/PORT/...) for per-target config.

Second example service

  • New BookStore example gRPC server (:50052) mirroring PetStore (:50051),
    exercising the full proto3 feature set (nesting, oneOf, maps, wrappers, Struct,
    Any, FieldMask, all four RPC modes).
  • Examples restructured example/examples/{petstore,bookstore}/.
  • Default config now targets both, so they appear side by side out of the box.

Developer experience

  • Rewritten Quick Start in the README: install → try-it-all → run pieces
    individually → point at your own server.
  • New scripts: dev:all (UI + backend + both examples), dev:petstore,
    dev:bookstore, dev:multi, and stop (frees dev ports; auto-runs before
    every dev* command to prevent EADDRINUSE).
  • quickstart now accepts multiple targets (-- 50051 50052, named
    --target name=host:port,mode=tls) and generates a temp config.

Demo assets

  • Programmatic capture via Playwright: demo:capture (screenshots + a chaptered
    walkthrough video) and demo:gif / demo:mp4 converters.
  • Walkthrough covers multi-server, search, tabs, Form/JSON/Schema, all streaming
    modes, request history, and shareable URLs.

Deployment

  • Helm chart migrated to connection.targets[] (removed dead
    connection.timeout.connect/tls.* keys); shared mTLS secret across mtls
    targets; updated examples, NOTES, and docs.
  • CI (docker-publish.yml) now also builds & publishes multi-arch petstore
    and bookstore images to GHCR (fixed out-of-sync example lockfiles).

Layout fix

  • App fits a single page in its empty state and scrolls the outer page (not an
    inner panel) when content is tall; Service/Method explorer columns are equal height.

Breaking changes

  • Backend client.mode/client.targetclient.targets[] (min 1, each needs a name).
  • Helm connection.target/modeconnection.targets[].
  • See MIGRATION.md and helm/MIGRATION.md.

Testing

  • Backend: 365/365 pass. Frontend: 511/511 pass. helm lint clean;
    all example configs validate against the schema; both example Docker images
    build and start (reflection enabled). Scanned clean for secrets/IDs.

Introduce readme and fix quick starts

Add bookstore as multi target service

Fix height and add demo

Add demo
@pranavpsawant
pranavpsawant merged commit ada9ee6 into main Jul 27, 2026
11 checks passed
@pranavpsawant
pranavpsawant deleted the feature/multi-target-support-v1 branch August 5, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant