HyperRoute

Core Concepts

Subgraph Types

HyperRoute supports three subgraph types, allowing you to federate services regardless of their transport protocol:

TypeDescriptionURL FormatDirective
GraphQLStandard GraphQL subgraph (default)http://host:port/graphqlNone required
RESTHTTP/REST API backendhttp://host:port@rest on fields
gRPCgRPC service backendgrpc://host:port@grpc on fields

Bundles

A bundle is an immutable deployment artifact pushed to the router. It contains everything the router needs to serve your federated graph:

bundle.tar.gz/
├── bundle.json           # Metadata (snapshot_id, checksums)
├── supergraph.graphql    # Composed supergraph SDL
├── subgraphs.json        # Subgraph routing config (URLs, types)
├── router.yaml           # Router configuration
├── ownership.json        # Field-level ownership map
├── federation.json       # Federation metadata
└── subgraphs/
    ├── users/
    │   ├── schema.graphql
    │   └── metadata.json
    └── products/
        ├── schema.graphql
        └── metadata.json

Snapshots

A snapshot is a deterministic, content-addressed identifier (UUIDv5) for a specific composition state. Same schemas always produce the same snapshot ID, enabling:

  • Deduplication — identical compositions are never re-uploaded
  • Idempotent deployments — pushing the same schemas is a no-op
  • Traceability — every deployment is linked to an immutable snapshot

Environments

DevKit supports multiple environments (dev, staging, production, etc.) with independent registries and governance policies. Each environment has its own:

  • Registry namespace — isolated storage for bundles and schemas
  • Governance policies — approval requirements, breaking change rules
  • Deployment targets — which router(s) receive bundles

How Routing Directives Work

         GraphQL Query
              │
              ▼
    ┌─────────────────┐
    │  HyperRoute     │
    │  Router          │  ← Reads @rest/@grpc from supergraph
    └────────┬────────┘
             │
    ┌────────┼────────────────┐
    │        │                │
    ▼        ▼                ▼
┌────────┐ ┌────────────┐ ┌──────────┐
│GraphQL │ │ REST/HTTP   │ │  gRPC    │
│Service │ │ GET /users  │ │ GetProduct│
└────────┘ └────────────┘ └──────────┘
  1. Compose time — DevKit preserves @rest/@grpc directives in the supergraph SDL
  2. Bundle time — DevKit writes type: "rest" or type: "grpc" to subgraphs.json
  3. Runtime — Router parses directives from the supergraph and routes queries to the correct backend using the appropriate protocol

Next Steps