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

18 KiB
Raw Permalink Blame History

🚀 Deployment Options: Complete Guide

5 deployment strategies • Local to cloud scale • Production-ready


📑 Quick Navigation

← Back to Main README | MCP Tools ← | Agent Booster →


🎯 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

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

# 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

# Install globally
npm install -g agentic-flow

# Verify installation
agentic-flow --version
agentic-flow --help

Configuration

Create ~/.agentic-flow/config.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

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

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

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:

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

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

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:

docker-compose up -d
docker-compose logs -f agent
docker-compose down

CI/CD Integration

GitHub Actions

Create .github/workflows/agent.yml:

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:

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

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

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)

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)

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)

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)

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

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

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:

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

# 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

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

# 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

# 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

# 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

# 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

# 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

# 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

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

Core Components

External Resources


🤝 Contributing

Deployment improvements welcome! See CONTRIBUTING.md.


📄 License

MIT License - see LICENSE for details.


Deploy anywhere. Local to cloud. Production-ready. 🚀

← Back to Main README