rover

Apollo Rover CLI for managing GraphQL schemas, federation, and local supergraph development. Publish, fetch, and validate subgraph schemas; compose federated supergraphs locally or via GraphOS Includes schema checking (pre-deploy validation), linting, and introspection from running servers rover dev command starts a local Router with automatic schema composition for development workflows Supports CI/CD patterns with check-before-publish validation and JSON output for scripting Requires authentication via rover config auth or APOLLO_KEY environment variable; works on Node.js v18+, Linux/macOS/Windows

INSTALLATION
npx skills add https://github.com/apollographql/skills --skill rover
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$2a

Step 2: Authenticate

# Interactive authentication (opens browser)

rover config auth

# Or set environment variable

export APOLLO_KEY=your-api-key

Step 3: Verify Installation

rover --version

rover config whoami

Core Commands Overview

Command

Description

Use Case

rover subgraph publish

Publish subgraph schema to GraphOS

CI/CD, schema updates

rover subgraph check

Validate schema changes

PR checks, pre-deploy

rover subgraph fetch

Download subgraph schema

Local development

rover supergraph compose

Compose supergraph locally

Local testing

rover dev

Local supergraph development

Development workflow

rover graph publish

Publish monograph schema

Non-federated graphs

Graph Reference Format

Most commands require a graph reference in the format:

<GRAPH_ID>@<VARIANT>

Examples:

  • my-graph@production
  • my-graph@staging
  • my-graph@current (default variant)

Set as environment variable:

export APOLLO_GRAPH_REF=my-graph@production

Subgraph Workflow

Publishing a Subgraph

# 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/graphql

Checking Schema Changes

# Check against production traffic

rover subgraph check my-graph@production \

  --name products \

  --schema ./schema.graphql

Fetching Schema

# Fetch from GraphOS

rover subgraph fetch my-graph@production --name products

# Introspect running server

rover subgraph introspect http://localhost:4001/graphql

Supergraph Composition

Local Composition

Create supergraph.yaml:

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/graphql

Compose:

rover supergraph compose --config supergraph.yaml > supergraph.graphql

Fetch Composed Supergraph

rover supergraph fetch my-graph@production

Local Development with rover dev

Start a local Router with automatic schema composition:

# 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.yaml

With MCP Integration

# Start with MCP server enabled

rover dev --supergraph-config supergraph.yaml --mcp

Reference Files

Detailed documentation for specific topics:

  • Subgraphs - fetch, publish, check, lint, introspect, delete
  • Graphs - monograph commands (non-federated)
  • Dev - rover dev for local development

Common Patterns

CI/CD Pipeline

# 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_URL

Schema Linting

# Lint against GraphOS rules

rover subgraph lint --name products ./schema.graphql

# Lint monograph

rover graph lint my-graph@production ./schema.graphql

Output Formats

# 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 plain

Ground Rules

  • ALWAYS authenticate before using GraphOS commands (rover config auth or APOLLO_KEY)
  • ALWAYS use the correct graph reference format: graph@variant
  • PREFER rover subgraph check before rover subgraph publish in CI/CD
  • USE rover dev for local supergraph development instead of running Router manually
  • NEVER commit APOLLO_KEY to version control; use environment variables
  • USE --format json when parsing output programmatically
  • SPECIFY federation_version explicitly in supergraph.yaml for reproducibility
  • USE rover subgraph introspect to extract schemas from running services
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card