rover
Original:🇺🇸 English
Translated
Guide for using Apollo Rover CLI to manage GraphQL schemas and federation. Use this skill when: (1) publishing or fetching subgraph/graph schemas, (2) composing supergraph schemas locally or via GraphOS, (3) running local supergraph development with rover dev, (4) validating schemas with check and lint commands, (5) configuring Rover authentication and environment.
15installs
Sourceapollographql/skills
Added on
NPX Install
npx skill4agent add apollographql/skills roverTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Apollo Rover CLI Guide
Rover is the official CLI for Apollo GraphOS. It helps you manage schemas, run composition locally, publish to GraphOS, and develop supergraphs on your local machine.
Quick Start
Step 1: Install
bash
# macOS/Linux
curl -sSL https://rover.apollo.dev/nix/latest | sh
# npm (cross-platform)
npm install -g @apollo/rover
# Windows PowerShell
iwr 'https://rover.apollo.dev/win/latest' | iexStep 2: Authenticate
bash
# Interactive authentication (opens browser)
rover config auth
# Or set environment variable
export APOLLO_KEY=your-api-keyStep 3: Verify Installation
bash
rover --version
rover config whoamiCore Commands Overview
| Command | Description | Use Case |
|---|---|---|
| Publish subgraph schema to GraphOS | CI/CD, schema updates |
| Validate schema changes | PR checks, pre-deploy |
| Download subgraph schema | Local development |
| Compose supergraph locally | Local testing |
| Local supergraph development | Development workflow |
| Publish monograph schema | Non-federated graphs |
Graph Reference Format
Most commands require a graph reference in the format:
<GRAPH_ID>@<VARIANT>Examples:
my-graph@productionmy-graph@staging- (default variant)
my-graph@current
Set as environment variable:
bash
export APOLLO_GRAPH_REF=my-graph@productionSubgraph Workflow
Publishing a Subgraph
bash
# From schema file
rover subgraph publish my-graph@production \
--name products \
--schema ./schema.graphql \
--routing-url https://products.example.com/graphql
# From running server (introspection)
rover subgraph publish my-graph@production \
--name products \
--schema <(rover subgraph introspect http://localhost:4001/graphql) \
--routing-url https://products.example.com/graphqlChecking Schema Changes
bash
# Check against production traffic
rover subgraph check my-graph@production \
--name products \
--schema ./schema.graphqlFetching Schema
bash
# Fetch from GraphOS
rover subgraph fetch my-graph@production --name products
# Introspect running server
rover subgraph introspect http://localhost:4001/graphqlSupergraph Composition
Local Composition
Create :
supergraph.yamlyaml
federation_version: =2.9.0
subgraphs:
products:
routing_url: http://localhost:4001/graphql
schema:
file: ./products/schema.graphql
reviews:
routing_url: http://localhost:4002/graphql
schema:
subgraph_url: http://localhost:4002/graphqlCompose:
bash
rover supergraph compose --config supergraph.yaml > supergraph.graphqlFetch Composed Supergraph
bash
rover supergraph fetch my-graph@productionLocal Development with rover dev
rover devStart a local Router with automatic schema composition:
bash
# Start with supergraph config
rover dev --supergraph-config supergraph.yaml
# Start with GraphOS variant as base
rover dev --graph-ref my-graph@staging --supergraph-config local.yamlWith MCP Integration
bash
# Start with MCP server enabled
rover dev --supergraph-config supergraph.yaml --mcpReference Files
Detailed documentation for specific topics:
- Subgraphs - fetch, publish, check, lint, introspect, delete
- Graphs - monograph commands (non-federated)
- Supergraphs - compose, fetch, config format
- Dev - rover dev for local development
- Configuration - install, auth, env vars, profiles
Common Patterns
CI/CD Pipeline
bash
# 1. Check schema changes
rover subgraph check $APOLLO_GRAPH_REF \
--name $SUBGRAPH_NAME \
--schema ./schema.graphql
# 2. If check passes, publish
rover subgraph publish $APOLLO_GRAPH_REF \
--name $SUBGRAPH_NAME \
--schema ./schema.graphql \
--routing-url $ROUTING_URLSchema Linting
bash
# Lint against GraphOS rules
rover subgraph lint --name products ./schema.graphql
# Lint monograph
rover graph lint my-graph@production ./schema.graphqlOutput Formats
bash
# JSON output for scripting
rover subgraph fetch my-graph@production --name products --format json
# Plain output (default)
rover subgraph fetch my-graph@production --name products --format plainGround Rules
- ALWAYS authenticate before using GraphOS commands (or
rover config auth)APOLLO_KEY - ALWAYS use the correct graph reference format:
graph-id@variant - PREFER before
rover subgraph checkin CI/CDrover subgraph publish - USE for local supergraph development instead of running Router manually
rover dev - NEVER commit to version control; use environment variables
APOLLO_KEY - USE when parsing output programmatically
--format json - SPECIFY explicitly in supergraph.yaml for reproducibility
federation_version - USE to extract schemas from running services
rover subgraph introspect