Configuration Examples

Learn from complete, working examples of Atlas workspace configurations. These examples showcase different patterns and use cases.

Basic Assistant

A simple AI assistant for general tasks:
version: "1.0"

workspace:
  name: "personal-assistant"
  description: "AI assistant for daily tasks"

agents:
  assistant:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Help with various tasks"
    prompts:
      system: |
        You are a helpful personal assistant. You can:
        - Answer questions
        - Help with planning and organization
        - Provide recommendations
        - Assist with problem-solving
        
        Be friendly, concise, and practical.

signals:
  ask:
    provider: "cli"
    description: "Ask the assistant anything"

jobs:
  assist:
    triggers:
      - signal: "ask"
    execution:
      agents:
        - id: "assistant"
          input_source: "signal"

Customer Support System

Multi-agent customer support with routing:
version: "1.0"

workspace:
  name: "customer-support"
  description: "Intelligent customer support system"

agents:
  # Understands customer intent
  classifier:
    type: "llm"
    model: "claude-3-5-haiku-20241022"
    purpose: "Classify support requests"
    prompts:
      system: |
        Classify customer support requests into:
        - technical: Product issues, bugs, errors
        - billing: Payment, subscriptions, refunds
        - general: Other questions
        
        Also rate urgency: low, medium, high
        
        Output JSON: {"category": "...", "urgency": "..."}
    config:
      temperature: 0.1
  
  # Technical support specialist
  tech-support:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Resolve technical issues"
    prompts:
      system: |
        You are a technical support expert. You:
        - Diagnose technical problems
        - Provide step-by-step solutions
        - Explain technical concepts clearly
        - Escalate when necessary
    tools: ["knowledge-base", "system-status"]
  
  # Billing specialist
  billing-support:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Handle billing inquiries"
    prompts:
      system: |
        You are a billing specialist. You:
        - Explain charges and subscriptions
        - Process refund requests
        - Update payment information
        - Resolve billing disputes
        
        Always be empathetic about money matters.
  
  # General support
  general-support:
    type: "llm"
    model: "claude-3-5-haiku-20241022"
    purpose: "Handle general inquiries"
    prompts:
      system: |
        You are a friendly support agent handling general questions.
        Be helpful, patient, and direct customers to resources.

signals:
  support-ticket:
    provider: "webhook"
    description: "New support ticket"
    config:
      path: "/webhooks/support"
    schema:
      type: "object"
      properties:
        customer_id: { type: "string" }
        message: { type: "string" }
        metadata: { type: "object" }
      required: ["customer_id", "message"]

jobs:
  handle-ticket:
    name: "Support Ticket Handler"
    triggers:
      - signal: "support-ticket"
    
    execution:
      strategy: "sequential"
      agents:
        # First: classify the request
        - id: "classifier"
          input_source: "signal"
          task: "Classify this support request"
        
        # Then: route to appropriate specialist
        - id: "dynamic"
          input_source: "signal"
          routing:
            based_on: "previous.category"
            routes:
              technical: "tech-support"
              billing: "billing-support"
              general: "general-support"
    
    config:
      memory:
        enabled: true
        create_memories: true
        memory_tags: ["support", "customer-interaction"]

tools:
  mcp:
    servers:
      knowledge-base:
        transport:
          type: "http"
          url: "http://kb-api:8080/mcp"
        config:
          index: "support-docs"
      
      system-status:
        transport:
          type: "stdio"
          command: "mcp-status-checker"

Content Creation Pipeline

Blog content creation workflow:
version: "1.0"

workspace:
  name: "content-creator"
  description: "AI-powered content creation pipeline"

agents:
  researcher:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Research topics thoroughly"
    prompts:
      system: |
        You are a research specialist who:
        - Finds accurate, current information
        - Identifies key themes and insights
        - Provides comprehensive background
        - Cites all sources
        
        Focus on depth and accuracy over speed.
    tools: ["web-search", "academic-search"]
    config:
      temperature: 0.3
  
  writer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Write engaging content"
    prompts:
      system: |
        You are a professional content writer who creates:
        - Engaging, well-structured articles
        - SEO-optimized content
        - Reader-friendly formatting
        - Compelling headlines
        
        Match tone to the target audience.
    config:
      temperature: 0.7
      max_tokens: 3000
  
  editor:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Edit and polish content"
    prompts:
      system: |
        You are a professional editor who:
        - Improves clarity and flow
        - Fixes grammar and style
        - Ensures factual accuracy
        - Optimizes for readability
        
        Preserve the author's voice while improving quality.
    config:
      temperature: 0.2
  
  seo-optimizer:
    type: "llm"
    model: "claude-3-5-haiku-20241022"
    purpose: "Optimize for search engines"
    prompts:
      system: |
        You are an SEO specialist. Optimize content by:
        - Adding relevant keywords naturally
        - Creating meta descriptions
        - Suggesting internal links
        - Improving headings structure
        
        Output: {content, meta_description, keywords[], suggestions[]}

signals:
  create-content:
    provider: "cli"
    description: "Create new content"
    schema:
      type: "object"
      properties:
        topic: { type: "string" }
        audience: 
          type: "string"
          enum: ["technical", "business", "general"]
        length: 
          type: "integer"
          minimum: 500
          maximum: 5000
        keywords:
          type: "array"
          items: { type: "string" }
      required: ["topic", "audience"]
  
  scheduled-content:
    provider: "schedule"
    description: "Weekly content creation"
    config:
      schedule: "0 9 * * MON"  # Every Monday at 9 AM
      data:
        source: "content-calendar"

jobs:
  content-pipeline:
    name: "Content Creation Pipeline"
    triggers:
      - signal: "create-content"
      - signal: "scheduled-content"
    
    execution:
      strategy: "sequential"
      agents:
        - id: "researcher"
          input_source: "signal"
          task: "Research {topic} for {audience} audience"
          config:
            min_sources: 5
        
        - id: "writer"
          input_source: "combined"
          input_mapping:
            research: "previous"
            requirements: "signal"
          task: "Write a {length}-word article based on research"
        
        - id: "editor"
          input_source: "previous"
          task: "Edit and improve the article"
        
        - id: "seo-optimizer"
          input_source: "combined"
          input_mapping:
            content: "previous"
            keywords: "signal.keywords"
          task: "Optimize for SEO"
    
    config:
      timeout: "1800s"  # 30 minutes
      output:
        save_to: "./content/articles/"
        format: "markdown"

tools:
  mcp:
    servers:
      web-search:
        transport:
          type: "stdio"
          command: "mcp-websearch"
        env:
          SEARCH_API_KEY: "${SEARCH_API_KEY}"
      
      academic-search:
        transport:
          type: "http"
          url: "https://scholar-api.example.com/mcp"
        auth:
          type: "api_key"
          key_env: "SCHOLAR_API_KEY"

Data Analysis Workspace

Automated data analysis and reporting:
version: "1.0"

workspace:
  name: "data-analytics"
  description: "Automated data analysis and insights"

agents:
  data-validator:
    type: "llm"
    model: "claude-3-5-haiku-20241022"
    purpose: "Validate and clean data"
    prompts:
      system: |
        You validate data quality by checking for:
        - Missing values
        - Data type consistency
        - Outliers and anomalies
        - Format compliance
        
        Output a data quality report with issues and recommendations.
  
  statistician:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Perform statistical analysis"
    prompts:
      system: |
        You are a statistical analyst who:
        - Calculates descriptive statistics
        - Identifies correlations
        - Tests hypotheses
        - Explains findings clearly
        
        Always show your calculations and confidence levels.
    tools: ["calculator", "python-executor"]
  
  visualizer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Create data visualizations"
    prompts:
      system: |
        You create data visualizations by:
        - Choosing appropriate chart types
        - Writing Python code using matplotlib/seaborn
        - Explaining what the visualization shows
        
        Focus on clarity and insight.
    tools: ["python-executor", "chart-builder"]
  
  insight-generator:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Generate business insights"
    prompts:
      system: |
        You translate data analysis into business insights:
        - Identify key findings
        - Explain business impact
        - Provide recommendations
        - Highlight risks and opportunities
        
        Write for executive audiences.

signals:
  analyze-data:
    provider: "cli"
    description: "Analyze uploaded data"
    schema:
      type: "object"
      properties:
        file_path: { type: "string" }
        analysis_type:
          type: "string"
          enum: ["exploratory", "diagnostic", "predictive"]
        focus_areas:
          type: "array"
          items: { type: "string" }
  
  daily-metrics:
    provider: "schedule"
    description: "Daily metrics analysis"
    config:
      schedule: "0 7 * * *"  # 7 AM daily
      data:
        source: "metrics-database"
        period: "last_24_hours"

jobs:
  analyze-pipeline:
    name: "Data Analysis Pipeline"
    triggers:
      - signal: "analyze-data"
    
    execution:
      strategy: "sequential"
      agents:
        - id: "data-validator"
          input_source: "signal"
          task: "Validate data from {file_path}"
        
        - id: "statistician"
          input_source: "previous"
          task: "Perform {analysis_type} analysis"
          context:
            focus_areas: "{focus_areas}"
        
        - id: "visualizer"
          input_source: "previous"
          task: "Create visualizations for key findings"
        
        - id: "insight-generator"
          input_source: "combined"
          input_mapping:
            validation: "agents.data-validator"
            analysis: "agents.statistician"
            visuals: "agents.visualizer"
          task: "Generate executive insights report"
    
    config:
      memory:
        enabled: true
        create_memories: true
        memory_tags: ["analysis", "data-insights"]
      
      output:
        format: "pdf"
        include_visualizations: true
        email_to: ["analytics@example.com"]

tools:
  mcp:
    servers:
      calculator:
        transport:
          type: "stdio"
          command: "mcp-calculator"
      
      python-executor:
        transport:
          type: "stdio"
          command: "mcp-python"
        config:
          packages: ["pandas", "numpy", "scipy", "matplotlib", "seaborn"]
          memory_limit: "2GB"
          timeout: "60s"
      
      chart-builder:
        transport:
          type: "http"
          url: "http://chart-service:8080/mcp"
        config:
          output_format: "png"
          resolution: "300dpi"

Development Assistant

Code review and development helper:
version: "1.0"

workspace:
  name: "dev-assistant"
  description: "AI-powered development assistant"

agents:
  code-reviewer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Review code quality"
    prompts:
      system: |
        You are a senior code reviewer who checks for:
        - Code quality and readability
        - Security vulnerabilities
        - Performance issues
        - Best practices
        - Test coverage
        
        Provide specific, actionable feedback with examples.
    tools: ["code-analyzer", "security-scanner"]
  
  test-writer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Write comprehensive tests"
    prompts:
      system: |
        You write comprehensive tests including:
        - Unit tests for all functions
        - Integration tests for workflows
        - Edge case handling
        - Mock data and fixtures
        
        Use the project's testing framework.
    tools: ["code-executor", "test-runner"]
  
  doc-writer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Write technical documentation"
    prompts:
      system: |
        You write clear technical documentation:
        - API documentation
        - Code comments
        - README files
        - Architecture docs
        
        Focus on clarity and completeness.
  
  refactorer:
    type: "llm"
    model: "claude-3-5-sonnet-20241022"
    purpose: "Suggest code improvements"
    prompts:
      system: |
        You suggest code refactoring to improve:
        - Code organization
        - Reusability
        - Performance
        - Maintainability
        
        Provide before/after examples.

signals:
  review-pr:
    provider: "webhook"
    description: "Review pull request"
    config:
      path: "/webhooks/github"
      auth:
        type: "secret"
        header: "X-Hub-Signature-256"
        secret_env: "GITHUB_WEBHOOK_SECRET"
  
  improve-code:
    provider: "cli"
    description: "Improve specific code"
    schema:
      type: "object"
      properties:
        file_path: { type: "string" }
        focus:
          type: "array"
          items:
            type: "string"
            enum: ["performance", "security", "readability", "tests"]

jobs:
  pr-review:
    name: "Pull Request Review"
    triggers:
      - signal: "review-pr"
        condition:
          type: "json_logic"
          logic:
            "==": [{"var": "action"}, "opened"]
    
    execution:
      strategy: "parallel"
      agents:
        - id: "code-reviewer"
          task: "Review code changes"
        
        - id: "security-scanner"
          task: "Check for security issues"
        
        - id: "test-analyzer"
          task: "Analyze test coverage"
      
      # Synthesize results
      post_execution:
        agent: "reviewer"
        task: "Synthesize all feedback into PR comment"
  
  code-improvement:
    name: "Code Improvement Assistant"
    triggers:
      - signal: "improve-code"
    
    execution:
      strategy: "sequential"
      agents:
        - id: "code-reviewer"
          input_source: "signal"
          task: "Analyze {file_path} focusing on {focus}"
        
        - id: "refactorer"
          input_source: "previous"
          task: "Suggest specific improvements"
        
        - id: "test-writer"
          input_source: "signal"
          task: "Write tests for {file_path}"
          condition:
            includes: ["tests", "focus"]
        
        - id: "doc-writer"
          input_source: "combined"
          task: "Update documentation"

tools:
  mcp:
    servers:
      code-analyzer:
        transport:
          type: "stdio"
          command: "mcp-code-analyzer"
        config:
          languages: ["python", "javascript", "typescript", "go"]
      
      security-scanner:
        transport:
          type: "http"
          url: "https://security-api.example.com/mcp"
        auth:
          type: "bearer"
          token_env: "SECURITY_API_TOKEN"
      
      github:
        transport:
          type: "stdio"
          command: "mcp-github"
        env:
          GITHUB_TOKEN: "${GITHUB_TOKEN}"

Best Practices Demonstrated

These examples showcase:
  1. Clear Agent Roles - Each agent has a specific purpose
  2. Appropriate Models - Using Haiku for simple tasks, Sonnet for complex
  3. Tool Integration - Agents have access to relevant tools
  4. Error Handling - Validation and conditions prevent failures
  5. Memory Usage - Strategic memory creation for learning
  6. Output Management - Structured outputs and storage
  7. Security - Proper authentication and secrets management
  8. Scalability - Parallel execution where appropriate

Customizing Examples

To adapt these examples:
  1. Change Models - Adjust based on your needs and budget
  2. Add Tools - Include additional MCP servers
  3. Modify Prompts - Tailor to your specific requirements
  4. Adjust Workflows - Change execution strategies
  5. Add Signals - Include more trigger types
  6. Configure Memory - Adjust retention and scope

Next Steps