Configuration
Rover uses a two different configuration files for the project-wide settings and user-specific preferences:
rover.json: Project-wide configuration committed to version control. Defines project context (languages, package managers, MCP servers) that all team members share..rover/settings.json: User-specific settings automatically added to.gitignore. Stores user-specific configuration like installed AI agents and your default agent preference.
Both files are created automatically when you run rover init. Rover detects your project environment and populates them with appropriate defaults. Checkout the quickstart guide to learn how to initialize Rover in your projects.
Project Configuration (rover.json)
Section titled “Project Configuration (rover.json)”The rover.json file defines project-wide settings shared across your team. This file is committed to version control. It defines:
- languages: Programming languages used in the project
- packageManagers: Package managers available (npm, pnpm, pip, etc.)
- taskManagers: Task runners like Make, Just, or Task
- mcps: Model Context Protocol servers providing additional context to AI agents
- attribution: Whether Rover adds itself as co-author on AI-assisted commits
- envs: Custom environment variables passed to containerized agents
- envsFile: Path to a dotenv file with environment variables
Basic rover.json Structure
Section titled “Basic rover.json Structure”Here’s a minimal example:
{ // Schema version for automatic migration "version": "1.2",
// Programming languages used in the project "languages": ["typescript", "javascript"],
// Package managers available "packageManagers": ["npm"],
// Task runners (optional) "taskManagers": [],
// MCP servers for AI context (optional) "mcps": [],
// Add Rover as co-author on commits "attribution": true}Version Control
Section titled “Version Control”✅ Commit this file so your team shares the same project configuration
Configuring MCP Servers
Section titled “Configuring MCP Servers”Add Model Context Protocol servers to provide additional context to AI agents. These MCP servers will be automatically installed in each task’s sandboxed environment.
{ "version": "1.2", "languages": ["typescript"], "packageManagers": ["npm"], "taskManagers": [], "mcps": [ { "name": "filesystem", "commandOrUrl": "npx -y @modelcontextprotocol/server-filesystem /path/to/files", "transport": "stdio" }, { "name": "database", "commandOrUrl": "npx -y @modelcontextprotocol/server-postgres", "transport": "stdio", "envs": ["DATABASE_URL"] } ], "attribution": true}Custom Environment Variables
Section titled “Custom Environment Variables”Pass environment variables to containerized AI agents using two methods:
Method 1: Inline environment variables using the envs array:
{ "version": "1.2", "languages": ["javascript"], "packageManagers": ["npm"], "taskManagers": [], "mcps": [], "attribution": true, "envs": [ "NODE_ENV", // Pass through from host "DEBUG=true", // Set explicit value "API_KEY" // Pass through from host ]}Environment variable formats:
"ENV_NAME": Pass the current value from your host machine to the container"ENV_NAME=VALUE": Set a specific value in the container (overrides host value)
Method 2: Load from a dotenv file using the envsFile field:
{ "version": "1.2", "languages": ["javascript"], "packageManagers": ["npm"], "taskManagers": [], "mcps": [], "attribution": true, "envsFile": ".env.rover"}Create a .env.rover file in your project root:
NODE_ENV=developmentDEBUG=trueAPI_KEY=your-api-key-hereDATABASE_URL=postgres://localhost:5432/mydbSecurity note: Never commit .env files with sensitive credentials. Add them to .gitignore and provide a .env.example file instead.
Combined approach: You can use both envs and envsFile together. Values in envs take precedence:
{ "version": "1.2", "languages": ["javascript"], "packageManagers": ["npm"], "taskManagers": [], "mcps": [], "attribution": true, "envsFile": ".env.rover", // Load from file "envs": ["DEBUG=false"] // Override specific values}Disabling Attribution
Section titled “Disabling Attribution”Control whether Rover adds itself as co-author on commits:
{ "version": "1.2", "languages": ["typescript"], "packageManagers": ["npm"], "taskManagers": [], "mcps": [], "attribution": false}When attribution is enabled, commits generated by Rover will include:
Co-Authored-By: Rover <[email protected]>Reference
Section titled “Reference”You have a full reference of all available configuration options in the Project Config reference.
User Settings (.rover/settings.json)
Section titled “User Settings (.rover/settings.json)”The .rover/settings.json file stores user-specific preferences that should not be shared across your team. This file is automatically added to .gitignore. It defines:
- aiAgents: List of AI agents installed on your machine
- defaultAgent: Your preferred AI agent to use by default
These settings are user-specific because different developers may have different AI agents installed and prefer different agents for different tasks.
Basic settings.json Structure
Section titled “Basic settings.json Structure”Here’s a typical user settings file:
{ // Schema version for automatic migration "version": "1.0",
// AI agents installed on this machine "aiAgents": ["claude", "gemini"],
// Default agent preference "defaults": { "aiAgent": "claude" }}Version Control
Section titled “Version Control”❌ Do not commit this file (automatically added to .gitignore)
Setting a Default Agent
Section titled “Setting a Default Agent”Choose your preferred AI agent:
{ "version": "1.0", "aiAgents": ["claude", "gemini"], "defaults": { "aiAgent": "gemini" }}The default agent is used when you create tasks without explicitly specifying an agent. You can always override this choice for specific tasks.
Reference
Section titled “Reference”You have a full reference of all available configuration options in the User Config reference.
Schema Versioning
Section titled “Schema Versioning”Both files include a version field for automatic migration.
{ "version": "1.2", // Current project config version // ... other settings}When Rover detects an older schema version, it automatically migrates your configuration to the latest format. This ensures backward compatibility when upgrading Rover.
Telemetry
Section titled “Telemetry”Rover has very basic telemetry reporting to help us understand how you use the tool. This telemetry does not identify you, as it generates a fully random hash you can change. You can find your random ID at ~/.config/rover/.user.
The only information that is recorded by the telemetry is which action was invoked, and very basic metadata like the action source (CLI or VSCode Extension). Telemetry does not record any data from prompts or task titles and descriptions.
Disabling telemetry
Section titled “Disabling telemetry”There are two ways to completely disable telemetry in Rover. One is in your home directory Rover settings, and the other one is by exporting the ROVER_NO_TELEMETRY environment variable.
Disabling Rover telemetry in your home directory
- 1
Terminal window mkdir -p ~/.config/rover - 2
Terminal window touch ~/.config/rover/.no-telemetry
Disabling Rover telemetry with an environment variable
- 1
Terminal window ROVER_NO_TELEMETRY=true rover list
You can either export a ROVER_NO_TELEMETRY environment variable set to true globally, or you can set it every time you run the Rover CLI.