Development Environment Setup
This guide will help you set up your local development environment for building and testing agents and MCP servers.
Prerequisites​
Required Software​
Before starting, ensure you have the following installed:
- Python 3.11 or higher (Download)
- uv - Fast Python package manager (Install Guide)
- Git - Version control (Download)
- Docker - Container runtime (Download)
- Make - Build automation (usually pre-installed on macOS/Linux)
Verify Installation​
# Check Python version
python --version # Should be 3.11 or higher
# Check uv installation
uv --version
# Check Git
git --version
# Check Docker
docker --version
# Check Make
make --version
Clone the Repository​
# Clone the repository
git clone https://github.com/cnoe-io/ai-platform-engineering.git
cd ai-platform-engineering
# Create a development branch
git checkout -b feat/my-new-feature
Environment Configuration​
LLM API Keys​
You'll need an API key from at least one LLM provider:
- OpenAI: Get API Key
- Anthropic: Get API Key
- Azure OpenAI: Get Access
Create .env File​
Create a .env file in the project root:
# Copy the example environment file
cp .env.example .env
Edit .env with your configuration:
############################
# LLM Configuration
############################
# Choose your LLM provider: openai, anthropic, or azure-openai
LLM_PROVIDER=openai
# OpenAI Configuration
OPENAI_API_KEY=sk-your-key-here
MODEL_NAME=gpt-4o
# Anthropic Configuration (if using)
ANTHROPIC_API_KEY=your-anthropic-key-here
# MODEL_NAME=claude-3-5-sonnet-20241022
# Azure OpenAI Configuration (if using)
# AZURE_OPENAI_API_KEY=your-azure-key-here
# AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
# AZURE_OPENAI_DEPLOYMENT=gpt-4o
# OPENAI_API_VERSION=2024-08-01-preview
############################
# Agent Configuration
############################
AGENT_HOST=0.0.0.0
AGENT_PORT=8000
LOG_LEVEL=INFO
############################
# Context Management
############################
MAX_CONTEXT_TOKENS=20000
MAX_TOOL_OUTPUT_SIZE=5000
############################
# A2A Protocol
############################
A2A_AGENT_PORT=8000
A2A_AUTH_ENABLED=false
Install Dependencies​
Using uv (Recommended)​
# Install all dependencies including dev tools
uv sync --all-groups
# Activate the virtual environment
source .venv/bin/activate
Verify Installation​
# Check installed packages
uv pip list
# Test Python imports
python -c "import langchain; import langgraph; print('✓ Dependencies installed successfully')"
IDE Setup​
Visual Studio Code​
Install recommended extensions:
# Install VS Code extensions (optional)
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension charliermarsh.ruff
Create .vscode/settings.json:
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"python.linting.enabled": true,
"python.linting.ruffEnabled": true,
"python.formatting.provider": "none",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
}
},
"files.exclude": {
"**/__pycache__": true,
"**/*.pyc": true
}
}
PyCharm / IntelliJ IDEA​
- Open the project in PyCharm
- Configure Python interpreter: Settings → Project → Python Interpreter
- Select the
.venv/bin/pythoninterpreter - Enable Ruff: Settings → Tools → External Tools
Project Structure Overview​
ai-platform-engineering/
├── ai_platform_engineering/
│ ├── agents/ # Individual agent implementations
│ │ ├── argocd/ # ArgoCD agent
│ │ ├── aws/ # AWS agent
│ │ ├── jira/ # Jira agent
│ │ └── template/ # Template agent (start here!)
│ ├── multi_agents/ # Multi-agent orchestration
│ │ └── platform_engineer/ # Platform engineer supervisor
│ ├── utils/ # Shared utilities
│ │ └── a2a_common/ # A2A protocol utilities
│ └── knowledge_bases/ # RAG implementations
├── charts/ # Helm charts for deployment
├── build/ # Docker build files
├── docs/ # Documentation (Docusaurus)
├── evals/ # Evaluation suites
├── integration/ # Integration tests
├── scripts/ # Build and utility scripts
├── docker-compose.yaml # Production compose
├── docker-compose.dev.yaml # Development compose
├── Makefile # Build automation
├── pyproject.toml # Python dependencies
└── uv.lock # Locked dependencies
Development Workflow​
Running Tests​
# Run all tests
make test
# Run supervisor tests only
make test-supervisor
# Run agent tests
make test-agents
# Run specific agent tests
make test-agent-argocd
make test-mcp-jira
Code Quality​
# Run linter
make lint
# Auto-fix linting issues
make lint-fix
# Format code
ruff format .
Running Agents Locally​
# Run a specific agent (e.g., Jira)
cd ai_platform_engineering/agents/jira
make run-a2a
# In another terminal, connect a client
make run-a2a-client
Using Docker Compose​
# Start all services in development mode
docker compose -f docker-compose.dev.yaml up
# Start specific services
docker compose -f docker-compose.dev.yaml up caipe-supervisor mcp-jira
# Rebuild after code changes
docker compose -f docker-compose.dev.yaml up --build
# View logs
docker compose -f docker-compose.dev.yaml logs -f agent-jira
Common Development Tasks​
Create a New Branch​
# Feature branch
git checkout -b feat/my-new-feature
# Bug fix branch
git checkout -b fix/bug-description
# Documentation branch
git checkout -b docs/update-guide
Commit Changes (with DCO)​
All commits must be signed off (Developer Certificate of Origin):
# Stage changes
git add .
# Commit with sign-off
git commit -s -m "feat: add new feature
Detailed description of the changes.
Closes #123"
Push and Create PR​
# Push to your fork
git push origin feat/my-new-feature
# Create PR using GitHub CLI (optional)
gh pr create --title "feat: add new feature" --body "Description..."
Troubleshooting​
Common Issues​
uv command not found​
# Install uv using pip
pip install uv
# Or using curl (macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
Python version mismatch​
# Install Python 3.11+ using pyenv
pyenv install 3.11
pyenv local 3.11
Docker permission denied​
# Add your user to the docker group (Linux)
sudo usermod -aG docker $USER
newgrp docker
# Or use Docker Desktop (macOS/Windows)
Port already in use​
# Find what's using the port
lsof -i :8000
# Kill the process
kill -9 <PID>
# Or change the port in .env
A2A_AGENT_PORT=8001
Getting Help​
- Check existing issues: GitHub Issues
- Ask in discussions: GitHub Discussions
- Join community meetings: Community Calendar
Next Steps​
Now that your environment is set up, you're ready to:
- Create Your First Agent - Build a new agent from the template
- Build an MCP Server - Connect to external APIs
- Explore Existing Agents - Learn from production examples
Pro Tips:
- Use
make helpto see all available make targets - Keep your
.envfile updated with required credentials - Run tests frequently to catch issues early
- Use Docker for consistent environments across team members
- Enable pre-commit hooks for automated checks
Happy coding! 🚀