Navigation

Configuration Reference

Every knob, dial, and secret lever. Configure the framework to match your chaos.

Configuration Files

Loaded Vibes uses several configuration files, each with a specific purpose:

FilePurpose
loaded-vibes.config.jsonMain framework configuration
.vscode/settings.jsonVS Code workspace settings
.vscode/mcp.jsonMCP server configuration
.env.localEnvironment variables

loaded-vibes.config.json

The main configuration file with all framework options:

loaded-vibes.config.jsonjson
{
  "$schema": "https://loaded-vibes.dev/schemas/config.json",
  "version": "1.0.0",
  "stack": "fullstack",
  
  "features": {
    "ai": {
      "enabled": true,
      "provider": "copilot",
      "model": "gpt-4o",
      "contextWindow": 128000
    },
    "telemetry": {
      "enabled": true,
      "anonymous": true,
      "endpoint": null
    },
    "upgrades": {
      "strategy": "merge",
      "autoBackup": true,
      "checkFrequency": "weekly"
    },
    "checkpoints": {
      "enabled": true,
      "maxCount": 50,
      "pruneAfterDays": 30
    }
  },
  
  "devcycles": {
    "active": [
      "init", "scaffold", "config", "verify",
      "data", "auth", "test", "validate",
      "features", "debug", "security", "perf",
      "observe", "review", "docs",
      "cicd", "deploy", "updates"
    ],
    "custom": [],
    "defaults": {
      "skipCheckpoints": false,
      "requireApproval": ["deploy", "security"],
      "parallelExecution": false
    }
  },
  
  "paths": {
    "src": "src",
    "tests": "tests",
    "docs": "docs",
    "artifacts": ".github",
    "state": ".loaded-vibes"
  },
  
  "git": {
    "conventionalCommits": true,
    "signCommits": false,
    "protectedBranches": ["main", "production"],
    "defaultBranch": "main"
  },
  
  "security": {
    "firewall": {
      "enabled": true,
      "blockPatterns": [
        "rm -rf",
        "DROP TABLE",
        "DELETE FROM * WHERE 1=1"
      ],
      "requireApproval": ["destructive", "external"]
    },
    "secrets": {
      "scanEnabled": true,
      "blockOnDetection": true
    }
  },
  
  "logging": {
    "level": "info",
    "format": "ndjson",
    "retention": "30d",
    "destinations": ["file", "console"]
  }
}

Section Reference

features.ai

PropertyTypeDefaultDescription
enabledbooleantrueEnable AI features
providerstring"copilot"AI provider: copilot, openai, anthropic
modelstring"gpt-4o"Model to use
contextWindownumber128000Context window size

features.upgrades

PropertyTypeDefaultDescription
strategystring"merge"mirror, merge, or sandbox
autoBackupbooleantrueCreate backup before upgrade
checkFrequencystring"weekly"never, daily, weekly, monthly

VS Code Settings

Workspace settings that integrate with GitHub Copilot and the editor:

.vscode/settings.jsonjson
{
  // Copilot Integration
  "github.copilot.chat.codeGeneration.instructions": [
    { "file": ".github/copilot-instructions.md" }
  ],
  "github.copilot.chat.testGeneration.instructions": [
    { "file": ".github/instructions/testing.instructions.md" }
  ],
  "github.copilot.chat.reviewSelection.instructions": [
    { "file": ".github/instructions/review.instructions.md" }
  ],
  
  // Editor Settings
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "explicit"
  },
  
  // TypeScript
  "typescript.preferences.importModuleSpecifier": "relative",
  "typescript.updateImportsOnFileMove.enabled": "always",
  
  // Files
  "files.exclude": {
    "node_modules": true,
    ".next": true,
    ".loaded-vibes/cache": true
  },
  
  // Search
  "search.exclude": {
    "**/node_modules": true,
    "**/.loaded-vibes/logs": true
  }
}

MCP Configuration

Model Context Protocol server configuration for AI tool access:

.vscode/mcp.jsonjson
{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-filesystem"],
      "env": {
        "ALLOWED_PATHS": "./src,./tests,./docs"
      }
    },
    "git": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-git"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-memory"],
      "env": {
        "MEMORY_PATH": "./.loaded-vibes/memory"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-github"],
      "env": {
        "GITHUB_TOKEN": "${env:GITHUB_TOKEN}"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-postgres"],
      "env": {
        "DATABASE_URL": "${env:DATABASE_URL}"
      }
    },
    "fetch": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-fetch"]
    },
    "sequentialthinking": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-sequentialthinking"]
    }
  }
}
⚠️

Environment variables

MCP servers use environment variable substitution with ${env:VAR_NAME} syntax. Ensure sensitive values are stored in .env.local and never committed.

Environment Variables

.env.localbash
# Required
GITHUB_TOKEN=ghp_your_token_here

# Database (if using postgres MCP)
DATABASE_URL=postgresql://user:pass@localhost:5432/db

# Optional: Custom endpoints
LV_API_ENDPOINT=https://api.loaded-vibes.dev

# Optional: Logging
LV_LOG_LEVEL=debug
LV_TRACE=true

# Optional: Telemetry override
LV_NO_TELEMETRY=true

Toolset Configuration

Toolsets define available MCP tools and their configuration:

.github/toolsets/default.toolset.jsoncjson
{
  "$schema": "https://loaded-vibes.dev/schemas/toolset.json",
  "name": "default",
  "description": "Default toolset for general development",
  
  "tools": {
    "filesystem": {
      "enabled": true,
      "config": {
        "allowedPaths": ["src/**", "tests/**", "docs/**"],
        "blockedPaths": ["node_modules/**", ".env*", "*.key"],
        "maxFileSize": "10MB"
      }
    },
    "git": {
      "enabled": true,
      "config": {
        "allowCommit": true,
        "allowPush": false,
        "requireConventionalCommits": true,
        "protectedBranches": ["main", "production"]
      }
    },
    "github": {
      "enabled": true,
      "config": {
        "allowPR": true,
        "allowIssues": true,
        "allowReviews": true,
        "requireReviewers": true,
        "minReviewers": 1
      }
    },
    "postgres": {
      "enabled": true,
      "config": {
        "readOnly": false,
        "allowMigrations": false,
        "maxQueryTime": "30s",
        "blockedOperations": ["DROP DATABASE", "TRUNCATE"]
      }
    },
    "memory": {
      "enabled": true,
      "config": {
        "maxEntries": 1000,
        "ttl": "7d"
      }
    },
    "fetch": {
      "enabled": true,
      "config": {
        "allowedDomains": ["*.github.com", "*.npmjs.org"],
        "maxResponseSize": "5MB",
        "timeout": "30s"
      }
    }
  },
  
  "securityPolicy": {
    "requireApproval": ["destructive", "external"],
    "blockPatterns": [
      "rm -rf /",
      "DROP TABLE",
      "DELETE FROM .* WHERE 1=1"
    ],
    "auditAll": true
  }
}

DevCycle Manifest

Custom DevCycle definitions in the config:

loaded-vibes.config.json (custom devcycles)json
{
  "devcycles": {
    "custom": [
      {
        "id": "migrate-legacy",
        "name": "Legacy Migration",
        "description": "Migrate code from legacy systems",
        "instruction": ".github/instructions/migrate.instructions.md",
        "prompt": ".github/prompts/migrate.prompt.md",
        "toolset": ".github/toolsets/migrate.toolset.jsonc",
        "phases": ["analyze", "design", "implement", "validate"],
        "checkpoints": {
          "required": ["design", "validate"],
          "autoCreate": true
        }
      }
    ]
  }
}

Configuration Precedence

Configuration values are resolved in this order (later overrides earlier):

  1. Built-in defaults
  2. Global config (~/.loaded-vibes/config.json)
  3. Project config (loaded-vibes.config.json)
  4. Environment variables
  5. CLI flags

View effective config

Use lv config list --resolved to see the final merged configuration with all overrides applied.

Next Steps

Learn how to customize the framework for your specific needs, or explore Running DevCycles to put your configuration to work.