AGENTS.md 2.4 KB

AGENTS.md - Non-obvious Information for stable-diffusion.cpp-rest

This document contains only non-obvious, project-specific information that agents need to know.

Critical Build Gotchas

  • NEVER delete build/_deps folder - Rebuilding dependencies takes hours
  • Use cd webui; npm run build-static for webui-only changes (no server restart needed)
  • Web UI is served from build/webui/ with base path /ui
  • Models directory is ALWAYS /data/SD_MODELS/ (not project root)

Architecture-Specific Patterns

Dual Model Loading Paths

The project uses intelligent model detection with two different loading paths:

  • Traditional models (SD 1.5/2.1/SDXL) → ctxParams.model_path
  • Modern architectures (Flux/SD3/Qwen2VL) → ctxParams.diffusion_model_path

String Lifetime Management

When passing strings to stable-diffusion.cpp:

  • Ensure string lifetime exceeds the entire generation process
  • Use std::string with proper scope management
  • Avoid temporary string objects in API calls

Server Lifecycle Constraints

  • NEVER kill running server processes - User manages server lifecycle
  • Agents should not start/stop servers unless explicitly requested
  • Start server in background during testing with full path to models directory
  • Server automatically serves updated webui files after npm run build-static

Authentication Patterns

  • Unix auth generates pseudo-tokens that must be validated properly
  • JWT tokens require proper expiration handling
  • API keys are static and stored in configuration

Progress Callback Cleanup

  • Progress callbacks must be cleaned up after generation completes
  • Use RAII patterns for callback management
  • Ensure callback deregistration to prevent memory leaks

Path Management Requirements

  • Always use absolute paths when printing to console (std::cout)
  • Model paths must be fully qualified paths
  • Web UI assets use /ui base path in all requests

Counterintuitive Practices

  • Keep project directory clean - no output/queue directories in root
  • Use ninja instead of make for faster builds
  • Web UI development can happen without server restart
  • Model architecture detection happens at runtime, not compile time

MCP Tools Integration

  • Always use available MCP tools for task efficiency
  • Gogs MCP tools for repository issue management
  • Create issues for all non-trivial tasks
  • Mark issues as done when tasks complete