tasq/node_modules/agentic-flow/docs/guides/DEPLOYMENT.md

907 lines
18 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Deployment Options: Complete Guide
**5 deployment strategies • Local to cloud scale • Production-ready**
---
## 📑 Quick Navigation
[← Back to Main README](https://github.com/ruvnet/agentic-flow/blob/main/README.md) | [MCP Tools ←](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/MCP-TOOLS.md) | [Agent Booster →](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/AGENT-BOOSTER.md)
---
## 🎯 Deployment Strategy Overview
Choose the right deployment based on your needs:
| Deployment | Best For | Setup Time | Cost | Scale |
|------------|----------|------------|------|-------|
| **Local (npx)** | Development, testing | 30 seconds | Free | 1-10 agents |
| **Local (Global)** | Personal projects | 2 minutes | Free | 10-50 agents |
| **Docker** | CI/CD, production | 10 minutes | Low | 50-500 agents |
| **Kubernetes** | Enterprise scale | 30 minutes | Medium | 500-10K+ agents |
| **Flow Nexus Cloud** | Instant scale, managed | 5 minutes | Pay-as-you-go | Unlimited |
---
## 1⃣ Local Development (npx)
**Perfect for**: Quick experiments, one-off tasks, development
### Quick Start
```bash
# No installation needed - run directly
npx agentic-flow --agent coder --task "Build a REST API"
# With specific model
npx agentic-flow \
--agent researcher \
--task "Analyze microservices trends" \
--model "claude-3-5-sonnet-20241022"
# With streaming output
npx agentic-flow \
--agent coder \
--task "Create web scraper" \
--stream
```
### Configuration
Set environment variables:
```bash
# API Keys
export ANTHROPIC_API_KEY=sk-ant-...
export OPENROUTER_API_KEY=sk-or-...
export GOOGLE_GEMINI_API_KEY=...
# Optional: Model preferences
export PROVIDER=anthropic # anthropic, openrouter, gemini, onnx
export MODEL=claude-3-5-sonnet-20241022
# Optional: Cost optimization
export ROUTER_ENABLED=true
export ROUTER_PRIORITY=balanced # cost, quality, speed, balanced
```
### Pros & Cons
**Pros:**
- ✅ Zero installation
- ✅ Perfect for quick tasks
- ✅ Always latest version
- ✅ No configuration needed
**Cons:**
- ❌ Slower startup (downloads on each run)
- ❌ No persistent configuration
- ❌ Limited to single agent tasks
---
## 2⃣ Local Installation (Global)
**Perfect for**: Regular use, personal automation, local development
### Installation
```bash
# Install globally
npm install -g agentic-flow
# Verify installation
agentic-flow --version
agentic-flow --help
```
### Configuration
Create `~/.agentic-flow/config.json`:
```json
{
"defaultProvider": "anthropic",
"defaultModel": "claude-3-5-sonnet-20241022",
"router": {
"enabled": true,
"priority": "balanced",
"maxCost": 1.00
},
"providers": {
"anthropic": {
"apiKey": "${ANTHROPIC_API_KEY}",
"baseUrl": "https://api.anthropic.com"
},
"openrouter": {
"apiKey": "${OPENROUTER_API_KEY}",
"baseUrl": "https://openrouter.ai/api/v1"
},
"gemini": {
"apiKey": "${GOOGLE_GEMINI_API_KEY}"
}
},
"reasoningbank": {
"enabled": true,
"dbPath": "~/.agentic-flow/memory.db"
}
}
```
### Usage
```bash
# Run agents directly
agentic-flow --agent coder --task "Build API"
# List available agents
agentic-flow --list
# MCP server management
agentic-flow mcp add weather 'npx @modelcontextprotocol/server-weather'
agentic-flow mcp list
agentic-flow mcp remove weather
# ReasoningBank commands
agentic-flow reasoningbank init
agentic-flow reasoningbank status
```
### Advanced Configuration
Create `~/.agentic-flow/agents/custom-agent.md`:
```markdown
# Custom Developer Agent
## Role
Full-stack developer specializing in React and Node.js
## Capabilities
- Frontend: React, TypeScript, Tailwind
- Backend: Node.js, Express, PostgreSQL
- DevOps: Docker, GitHub Actions
## Instructions
You are an expert full-stack developer. Always:
1. Write TypeScript with strict types
2. Include comprehensive tests
3. Follow clean code principles
4. Document all public APIs
```
Then use it:
```bash
agentic-flow --agent custom-developer --task "Build dashboard"
```
### Pros & Cons
**Pros:**
- ✅ Fast startup (no downloads)
- ✅ Persistent configuration
- ✅ Custom agents support
- ✅ Full MCP tool access
**Cons:**
- ❌ Manual updates needed
- ❌ Single machine only
- ❌ Limited to local resources
---
## 3⃣ Docker Deployment
**Perfect for**: CI/CD pipelines, reproducible environments, production
### Basic Dockerfile
Create `Dockerfile`:
```dockerfile
FROM node:18-alpine
# Install dependencies
RUN apk add --no-cache \
git \
python3 \
make \
g++
# Create app directory
WORKDIR /app
# Install agentic-flow
RUN npm install -g agentic-flow
# Copy configuration
COPY config.json /root/.agentic-flow/config.json
# Set environment variables
ENV ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
ENV OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
# Entry point
ENTRYPOINT ["agentic-flow"]
CMD ["--help"]
```
### Build and Run
```bash
# Build image
docker build -t agentic-flow:latest .
# Run single agent
docker run --rm \
-e ANTHROPIC_API_KEY=sk-ant-... \
agentic-flow:latest \
--agent coder \
--task "Build REST API"
# Run with volume mount (for persistent memory)
docker run --rm \
-e ANTHROPIC_API_KEY=sk-ant-... \
-v $(pwd)/memory:/root/.agentic-flow \
agentic-flow:latest \
--agent researcher \
--task "Analyze trends"
```
### Docker Compose
Create `docker-compose.yml`:
```yaml
version: '3.8'
services:
agent:
build: .
image: agentic-flow:latest
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
- ROUTER_ENABLED=true
- REASONINGBANK_ENABLED=true
volumes:
- ./config:/root/.agentic-flow
- ./data:/data
command: --agent coder --task "Build API"
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=agentic_flow
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
ports:
- "6379:6379"
volumes:
postgres_data:
redis_data:
```
Run with:
```bash
docker-compose up -d
docker-compose logs -f agent
docker-compose down
```
### CI/CD Integration
#### GitHub Actions
Create `.github/workflows/agent.yml`:
```yaml
name: Run Agentic Flow
on:
pull_request:
types: [opened, synchronize]
jobs:
code-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run code review agent
uses: docker://agentic-flow:latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
args: --agent reviewer --task "Review PR changes"
- name: Run tests
run: npm test
```
#### GitLab CI
Create `.gitlab-ci.yml`:
```yaml
stages:
- review
- test
code-review:
stage: review
image: agentic-flow:latest
script:
- agentic-flow --agent reviewer --task "Review MR $CI_MERGE_REQUEST_IID"
only:
- merge_requests
variables:
ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY
```
### Pros & Cons
**Pros:**
- ✅ Reproducible environments
- ✅ Easy CI/CD integration
- ✅ Version control for config
- ✅ Isolated dependencies
**Cons:**
- ❌ Docker overhead
- ❌ More complex setup
- ❌ Resource limits per container
---
## 4⃣ Kubernetes Deployment
**Perfect for**: Enterprise scale, high availability, auto-scaling
### Prerequisites
```bash
# Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Install Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```
### Kubernetes Manifests
#### 1. ConfigMap (`config.yaml`)
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: agentic-flow-config
namespace: agentic-flow
data:
config.json: |
{
"defaultProvider": "anthropic",
"router": {
"enabled": true,
"priority": "balanced"
}
}
```
#### 2. Secret (`secrets.yaml`)
```yaml
apiVersion: v1
kind: Secret
metadata:
name: agentic-flow-secrets
namespace: agentic-flow
type: Opaque
stringData:
anthropic-api-key: sk-ant-...
openrouter-api-key: sk-or-...
```
#### 3. Deployment (`deployment.yaml`)
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: agentic-flow-agent
namespace: agentic-flow
spec:
replicas: 3
selector:
matchLabels:
app: agentic-flow
template:
metadata:
labels:
app: agentic-flow
spec:
containers:
- name: agent
image: agentic-flow:latest
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: agentic-flow-secrets
key: anthropic-api-key
- name: OPENROUTER_API_KEY
valueFrom:
secretKeyRef:
name: agentic-flow-secrets
key: openrouter-api-key
- name: ROUTER_ENABLED
value: "true"
volumeMounts:
- name: config
mountPath: /root/.agentic-flow
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
volumes:
- name: config
configMap:
name: agentic-flow-config
```
#### 4. Service (`service.yaml`)
```yaml
apiVersion: v1
kind: Service
metadata:
name: agentic-flow-service
namespace: agentic-flow
spec:
selector:
app: agentic-flow
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer
```
#### 5. HorizontalPodAutoscaler (`hpa.yaml`)
```yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: agentic-flow-hpa
namespace: agentic-flow
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: agentic-flow-agent
minReplicas: 3
maxReplicas: 100
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
```
### Deploy to Kubernetes
```bash
# Create namespace
kubectl create namespace agentic-flow
# Apply manifests
kubectl apply -f config.yaml
kubectl apply -f secrets.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f hpa.yaml
# Verify deployment
kubectl get pods -n agentic-flow
kubectl get svc -n agentic-flow
# View logs
kubectl logs -f deployment/agentic-flow-agent -n agentic-flow
# Scale manually
kubectl scale deployment/agentic-flow-agent --replicas=10 -n agentic-flow
```
### Helm Chart
Create `helm/agentic-flow/values.yaml`:
```yaml
replicaCount: 3
image:
repository: agentic-flow
tag: latest
pullPolicy: IfNotPresent
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 100
targetCPUUtilization: 70
targetMemoryUtilization: 80
config:
defaultProvider: anthropic
router:
enabled: true
priority: balanced
secrets:
anthropicApiKey: "" # Set via --set secrets.anthropicApiKey=sk-ant-...
openrouterApiKey: ""
```
Install with Helm:
```bash
helm install agentic-flow ./helm/agentic-flow \
--namespace agentic-flow \
--create-namespace \
--set secrets.anthropicApiKey=sk-ant-... \
--set secrets.openrouterApiKey=sk-or-...
```
### Pros & Cons
**Pros:**
- ✅ Auto-scaling (3-100+ pods)
- ✅ High availability
- ✅ Rolling updates
- ✅ Health checks & self-healing
- ✅ Enterprise-grade
**Cons:**
- ❌ Complex setup
- ❌ Higher infrastructure cost
- ❌ Requires Kubernetes expertise
---
## 5⃣ Flow Nexus Cloud
**Perfect for**: Instant scale, managed infrastructure, zero DevOps
### Quick Start
```bash
# Install Flow Nexus CLI
npm install -g flow-nexus
# Register account
npx flow-nexus register
# Login
npx flow-nexus login
# Deploy swarm
npx flow-nexus swarm create \
--topology mesh \
--max-agents 10 \
--strategy balanced
```
### Cloud Deployment via MCP
```javascript
// Initialize cloud swarm
await query({
mcp: {
server: 'flow-nexus',
tool: 'swarm_init',
params: {
topology: 'mesh',
maxAgents: 50,
strategy: 'adaptive'
}
}
});
// Spawn cloud agents
await query({
mcp: {
server: 'flow-nexus',
tool: 'agent_spawn',
params: {
type: 'coder',
name: 'cloud-backend-dev'
}
}
});
// Create cloud sandbox for execution
await query({
mcp: {
server: 'flow-nexus',
tool: 'sandbox_create',
params: {
template: 'node',
env_vars: {
DATABASE_URL: '...',
API_KEY: '...'
}
}
}
});
```
### Features
- **Instant Scale**: 0 to 1000+ agents in seconds
- **Managed Infrastructure**: No servers to maintain
- **E2B Sandboxes**: Isolated execution environments
- **Neural Network Training**: Distributed GPU acceleration
- **Real-time Monitoring**: Live execution streams
- **Pay-as-you-go**: Only pay for what you use
### Pricing
| Tier | Price | Agents | Features |
|------|-------|--------|----------|
| **Free** | $0/month | 5 concurrent | Basic features |
| **Pro** | $29/month | 50 concurrent | Neural networks, sandboxes |
| **Team** | $99/month | 200 concurrent | Priority support, SLA |
| **Enterprise** | Custom | Unlimited | Dedicated, custom SLA |
### Pros & Cons
**Pros:**
- ✅ Zero infrastructure management
- ✅ Instant global scale
- ✅ Built-in neural networks
- ✅ E2B sandbox integration
- ✅ Real-time monitoring
**Cons:**
- ❌ Requires internet connection
- ❌ Monthly cost (after free tier)
- ❌ Data leaves your infrastructure
---
## 🔒 Security Best Practices
### API Key Management
```bash
# Use environment variables
export ANTHROPIC_API_KEY=sk-ant-...
# Use secrets management (Kubernetes)
kubectl create secret generic api-keys \
--from-literal=anthropic=sk-ant-... \
--from-literal=openrouter=sk-or-...
# Use HashiCorp Vault
vault kv put secret/agentic-flow \
anthropic_key=sk-ant-... \
openrouter_key=sk-or-...
```
### Network Security
```yaml
# Kubernetes NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: agentic-flow-netpol
namespace: agentic-flow
spec:
podSelector:
matchLabels:
app: agentic-flow
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: agentic-flow
ports:
- protocol: TCP
port: 8080
egress:
- to:
- namespaceSelector: {}
ports:
- protocol: TCP
port: 443 # HTTPS only
```
### Data Protection
- **Encrypt at rest**: Use encrypted volumes
- **Encrypt in transit**: TLS 1.3 for all communications
- **PII scrubbing**: Enable ReasoningBank PII scrubber
- **Audit logging**: Track all API calls and agent actions
---
## 📊 Performance Optimization
### Local Optimization
```bash
# Enable caching
export CACHE_ENABLED=true
export CACHE_TTL=3600
# Limit concurrency
export MAX_CONCURRENT_AGENTS=5
# Use local ONNX models
export PROVIDER=onnx
export ONNX_MODEL_PATH=./models/phi-4
```
### Docker Optimization
```dockerfile
# Multi-stage build for smaller images
FROM node:18-alpine AS builder
WORKDIR /app
RUN npm install -g agentic-flow --production
FROM node:18-alpine
COPY --from=builder /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=builder /usr/local/bin/agentic-flow /usr/local/bin/agentic-flow
```
### Kubernetes Optimization
```yaml
# Resource limits
resources:
requests:
memory: "256Mi" # Start small
cpu: "250m"
limits:
memory: "1Gi" # Allow bursts
cpu: "1000m"
# Pod affinity for better locality
affinity:
podAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: agentic-flow
topologyKey: kubernetes.io/hostname
```
---
## 📈 Monitoring & Observability
### Prometheus Metrics
```yaml
# ServiceMonitor for Prometheus
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: agentic-flow
namespace: agentic-flow
spec:
selector:
matchLabels:
app: agentic-flow
endpoints:
- port: metrics
interval: 30s
```
### Grafana Dashboard
Import dashboard JSON:
- Panel 1: Agent count over time
- Panel 2: Task success rate
- Panel 3: Average task duration
- Panel 4: Token usage
- Panel 5: Cost tracking
### Logging
```yaml
# Fluentd configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluent.conf: |
<source>
@type tail
path /var/log/agentic-flow/*.log
tag agentic-flow.*
</source>
<match agentic-flow.**>
@type elasticsearch
host elasticsearch.logging.svc
port 9200
</match>
```
---
## 🔗 Related Documentation
### Core Components
- [← Back to Main README](https://github.com/ruvnet/agentic-flow/blob/main/README.md)
- [Agent Booster (Code Transformations)](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/AGENT-BOOSTER.md)
- [ReasoningBank (Learning Memory)](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/REASONINGBANK.md)
- [Multi-Model Router (Cost Optimization)](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/MULTI-MODEL-ROUTER.md)
- [MCP Tools Reference](https://github.com/ruvnet/agentic-flow/blob/main/docs/guides/MCP-TOOLS.md)
### External Resources
- [Docker Documentation](https://docs.docker.com)
- [Kubernetes Documentation](https://kubernetes.io/docs)
- [Flow Nexus Platform](https://flow-nexus.ruv.io)
- [E2B Sandboxes](https://e2b.dev)
---
## 🤝 Contributing
Deployment improvements welcome! See [CONTRIBUTING.md](https://github.com/ruvnet/agentic-flow/blob/main/CONTRIBUTING.md).
---
## 📄 License
MIT License - see [LICENSE](https://github.com/ruvnet/agentic-flow/blob/main/LICENSE) for details.
---
**Deploy anywhere. Local to cloud. Production-ready.** 🚀
[← Back to Main README](https://github.com/ruvnet/agentic-flow/blob/main/README.md)