Skip to main content

Endpoint

GET /v1/presets
Returns a list of all 9 pre-configured stack presets. Presets are templates that bundle commonly used services together for specific use cases like research, DevOps, AI experimentation, or content creation.

Authentication

X-API-Key
string
Optional API key for authenticated requests with higher rate limits

Response

presets
array
required
Array of preset definitions
total
number
required
Total number of presets available

Examples

List All Presets

curl http://localhost:3456/v1/presets
Response (200):
{
  "presets": [
    {
      "id": "minimal",
      "name": "Minimal",
      "description": "Lightweight stack with just Redis for caching and state",
      "services": ["redis"],
      "skillPacks": [],
      "estimatedMemoryMB": 1024,
      "proxy": null,
      "gpu": false
    },
    {
      "id": "devops",
      "name": "DevOps",
      "description": "Automation, monitoring, and alerting for DevOps workflows",
      "services": ["n8n", "postgresql", "redis", "uptime-kuma", "grafana", "prometheus"],
      "skillPacks": ["devops"],
      "estimatedMemoryMB": 3072,
      "proxy": "caddy",
      "gpu": false
    },
    {
      "id": "researcher",
      "name": "Researcher",
      "description": "Web research with vector memory and browser automation",
      "services": ["qdrant", "searxng", "browserless", "redis"],
      "skillPacks": ["research"],
      "estimatedMemoryMB": 2560,
      "proxy": "caddy",
      "gpu": false
    },
    {
      "id": "ai-playground",
      "name": "AI Playground",
      "description": "Multi-model AI experimentation with local LLMs",
      "services": ["ollama", "open-webui", "qdrant", "litellm", "redis"],
      "skillPacks": ["local-ai"],
      "estimatedMemoryMB": 6144,
      "proxy": "caddy",
      "gpu": true
    },
    {
      "id": "full-stack",
      "name": "Full Stack",
      "description": "Complete stack with all core services and skill packs",
      "services": [
        "postgresql", "redis", "n8n", "grafana", "prometheus",
        "qdrant", "ollama", "open-webui", "caddy", "minio"
      ],
      "skillPacks": ["devops", "research", "local-ai", "video-creator"],
      "estimatedMemoryMB": 8192,
      "proxy": "caddy",
      "gpu": true
    }
  ],
  "total": 9
}

With Authentication

curl http://localhost:3456/v1/presets \
  -H "X-API-Key: sk_live_abc123"

Get Preset by ID

GET /v1/presets/{id}
Retrieve a single preset with full service details resolved.

Path Parameters

id
string
required
Preset identifier (e.g., minimal, devops, researcher)

Response

preset
object
required
The preset definition (same structure as list endpoint)
services
array
required
Array of full service definitions for all services in the preset. Each service object includes complete metadata (image, ports, dependencies, env vars, etc.)

Example Request

curl http://localhost:3456/v1/presets/devops
Response (200):
{
  "preset": {
    "id": "devops",
    "name": "DevOps",
    "description": "Automation, monitoring, and alerting for DevOps workflows",
    "services": ["n8n", "postgresql", "redis", "uptime-kuma", "grafana", "prometheus"],
    "skillPacks": ["devops"],
    "estimatedMemoryMB": 3072,
    "proxy": "caddy",
    "gpu": false
  },
  "services": [
    {
      "id": "n8n",
      "name": "n8n",
      "description": "Workflow automation platform",
      "category": "automation",
      "maturity": "stable",
      "image": "n8nio/n8n:latest",
      "ports": [{ "container": 5678, "host": 5678 }],
      "dependencies": ["postgresql"],
      "estimatedMemoryMB": 512,
      "env": {
        "DB_TYPE": "postgresdb",
        "DB_POSTGRESDB_HOST": "postgresql",
        "N8N_PROTOCOL": "https"
      }
    },
    {
      "id": "postgresql",
      "name": "PostgreSQL",
      "description": "Open-source relational database",
      "category": "database",
      "maturity": "stable",
      "image": "postgres:16-alpine",
      "ports": [{ "container": 5432, "host": 5432 }],
      "estimatedMemoryMB": 256
    },
    {
      "id": "redis",
      "name": "Redis",
      "description": "In-memory data structure store",
      "category": "database",
      "maturity": "stable",
      "image": "redis:7-alpine",
      "estimatedMemoryMB": 128
    }
    /* ... more services */
  ]
}

Preset Not Found

curl http://localhost:3456/v1/presets/nonexistent
Response (404):
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Preset \"nonexistent\" not found"
  }
}

Error Responses

error
object

Internal Error (500)

{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Failed to fetch presets"
  }
}

Unauthorized (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid API key."
  }
}

Available Presets

PresetServicesMemoryUse Case
minimalRedis~1 GBLightweight caching and state storage
creatorFFmpeg, Remotion, MinIO, Redis~2 GBVideo and media creation
researcherQdrant, SearXNG, Browserless, Redis~2.5 GBWeb research and scraping
devopsn8n, PostgreSQL, Redis, Uptime Kuma, Grafana, Prometheus~3 GBMonitoring and automation
content-creatorFFmpeg, Remotion, MinIO, Redis, Stable Diffusion~4 GBAI-powered content creation
ai-playgroundOllama, Open WebUI, Qdrant, LiteLLM, Redis~6 GBLocal AI experimentation
coding-teamClaude Code, Codex, Redis, PostgreSQL~3 GBAI coding agents
la-suite-meetMeet frontend/backend/agents, Redis, PostgreSQL, LiveKit~4 GBVideo conferencing
full-stackAll core services + skill packs~8 GBComplete development environment

Use Cases

Quick Stack Generation

Generate a preset-based stack:
# Get preset details
curl http://localhost:3456/v1/presets/devops

# Generate stack from preset
curl -X POST http://localhost:3456/v1/generate \
  -H "Content-Type: application/json" \
  -d '{
    "projectName": "my-devops-stack",
    "services": ["n8n", "postgresql", "redis", "uptime-kuma", "grafana", "prometheus"],
    "skillPacks": ["devops"],
    "proxy": "caddy"
  }'

Preset Picker UI

Build a preset selection interface:
const { presets } = await fetch('http://localhost:3456/v1/presets')
  .then(r => r.json());

// Display presets sorted by memory
const sortedPresets = presets.sort((a, b) => 
  a.estimatedMemoryMB - b.estimatedMemoryMB
);

// Show presets with GPU support
const gpuPresets = presets.filter(p => p.gpu);

Extend a Preset

Fetch a preset and add custom services:
const { preset } = await fetch('http://localhost:3456/v1/presets/researcher')
  .then(r => r.json());

// Add custom services to preset
const customStack = {
  projectName: 'my-research-stack',
  services: [...preset.services, 'meilisearch', 'minio'],
  skillPacks: preset.skillPacks,
  proxy: preset.proxy
};

// Generate extended stack
fetch('http://localhost:3456/v1/generate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(customStack)
});

Next Steps

Generate Endpoint

Generate stacks from preset configurations

Validate Endpoint

Validate preset configurations before generation

Build docs developers (and LLMs) love