Get up and running with Boundary in minutes. This guide will walk you through installation, setup, and your first debate.
Boundary is a cloud-first, open-source, MCP-native multi-agent debate system that helps you stress-test engineering decisions before they harden. You can fork and run it locally when you need full control. Instead of providing a single answer, Boundary surfaces hidden assumptions, irreversible commitments, and failure modes through structured debates between opinionated AI agents.
The output is not a verdict, it's a decision map that illuminates the risk surfaces and trade-offs inherent in your engineering choices.
Before you begin, ensure you have the following:
OPENAI_API_KEY (recommended for default usage)ANTHROPIC_API_KEYGOOGLE_API_KEYGet Boundary running in 4 simple steps:
Pull the official Boundary MCP server image from GitHub Container Registry:
docker pull ghcr.io/boundary-mcp/boundary-mcp:latestEdit ~/.cursor/mcp.json and add one of the following configurations:
Use this option if you prefer to store your API keys in a .env file:
{
"mcpServers": {
"boundary": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/path/to/your/.env",
"ghcr.io/boundary-mcp/boundary-mcp:latest"
]
}
}
}Replace /path/to/your/.env with the absolute path to your .env file (created in Step 3).
Use this option to pass environment variables directly with the -e flag:
{
"mcpServers": {
"boundary": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPENAI_API_KEY=your-key-here",
"-e",
"ANTHROPIC_API_KEY=your-key-here",
"-e",
"GOOGLE_API_KEY=your-key-here",
"-e",
"MCP_TRANSPORT=stdio",
"ghcr.io/boundary-mcp/boundary-mcp:latest"
]
}
}
}Replace the placeholder values with your actual API keys. At least one API key is required. You can omit optional keys you don't need.
Create a .env file with your API keys:
OPENAI_API_KEY=your-key-here
# Optional:
ANTHROPIC_API_KEY=your-key-here
GOOGLE_API_KEY=your-key-here
MCP_TRANSPORT=stdioAt least one API key is required. OpenAI is used by default if available.
Create the Cursor commands directory:
mkdir -p ~/.cursor/commandsCreate the following files in ~/.cursor/commands/:
You are helping me prepare the input for a Boundary debate by analyzing the decision question, exploring the codebase, identifying relevant context, and refining the question with constraints, invariants, and non-goals.
## Purpose
This command prepares high-quality inputs for the `start-boundary-debate` command by:
1. Understanding the decision question and its scope
2. Exploring the codebase to find all relevant files and context
3. Identifying constraints, invariants, and patterns from the codebase
4. Refining the question with additional context and clarifications
5. Suggesting relevant context files and agent configurations
## Input
- `<DECISION_QUESTION>` - The initial engineering decision question to analyze and refine
- `<INITIAL_CONTEXT>` (optional) - Comma-separated list of file paths to start the analysis from
## Process
### 1. Understand the Question
Analyze the decision question to understand what is being decided, why it matters, scope, key concerns (performance, scale, error handling, etc.), and domain. Extract key terms, concepts, and entities.
### 2. Initial Context Discovery
If `<INITIAL_CONTEXT>` is provided, read each file to understand its purpose, identify key functions/classes/models, extract domain concepts and patterns, and note constraints/validations/invariants.You are helping me start an engineering decision debate using the Boundary MCP server. This requires an **iterative workflow** where you'll provide context multiple times until the debate is complete.
## Context
Boundary relies **entirely on you** to provide code context. You have access to Cursor's superior code intelligence (LSP, "Go to Definition", "Find References", etc.) that Boundary cannot access directly. Your role is to gather and provide comprehensive context through multiple iterations.
**Before starting the debate, you MUST proactively investigate and identify all relevant context.**
Use your code intelligence tools to search for related files, functions, and classes; trace dependencies; find similar implementations; identify related services, models, and utilities; and discover edge cases and error handling patterns.
Be generous with context: Include all files that touch the decision area (even tangentially), related models/schemas, service dependencies, error handling, existing patterns, configuration, and related tests.
## Input
I will provide either:
**Option 1: Prepared Debate File (Most Common)**
- `<PREPARED_DEBATE_FILE>` - Path to a markdown file from `prepare-boundary-debate` output (e.g., `.cursor/boundary-debates/my-decision.md`)
**Option 2: Direct Inputs**
- `<DECISION_QUESTION>` - The engineering decision question to debate
- `<CONTEXT_FILES>` (optional) - Comma-separated list of file paths
- `<AGENT_CONFIG>` (optional) - Agent configuration in list format (`"pragmatist: OpenAI gpt-4"`), JSON format, or comma-separated. Multiple agents of the same type are allowed.
- `<ROUNDS>` (optional) - Number of debate rounds (default: 1)
Restart Required
Restart Cursor to load the commands.
Boundary works best when you follow a three-step process. This approach ensures you have high-quality inputs and get the most valuable debate output.
Use the prepare-boundary-debate command to analyze your question and gather context.
This command will:
Example:
/prepare-boundary-debate "Should we use Redis or PostgreSQL for caching?"Review the output from Step 1 and make any necessary adjustments before starting the debate.
Check that:
This refinement step ensures the debate has the best possible inputs, leading to more valuable insights.
Use the start-boundary-debate command with the prepared debate file from Step 1.
Simply provide the path to the prepared debate file. The command will automatically extract:
Example:
/start-boundary-debate .cursor/boundary-debates/my-decision.mdThe command will parse the prepared file and start the debate with all the refined inputs. The debate will run iteratively, with Boundary asking for additional context as needed until completion.
Note: Direct inputs are still supported for backward compatibility, but using a prepared debate file is recommended for the best results.
The prepare → refine → start workflow ensures:
Now that you've run your first debate, explore these resources: