Files
dreamtail/config.py
Vixy 504f30779f Add ENABLE_IP_ADAPTER config flag (default: False)
Allows disabling IP-Adapter FaceID entirely for cleaner output quality.
Set to True in config.py to re-enable face-locked generation.
2026-01-01 22:23:51 -06:00

74 lines
2.1 KiB
Python
Executable File

"""
DreamTail Configuration
Configuration for SDXL image generation service running on AGX Orin.
"""
import os
from pathlib import Path
# Application settings
APP_NAME = "DreamTail"
APP_VERSION = "1.0.0"
API_HOST = "0.0.0.0"
API_PORT = 8765
# Paths
BASE_DIR = Path(__file__).parent
STORAGE_DIR = Path(os.getenv("DREAMTAIL_STORAGE", "/app/storage"))
MODELS_DIR = Path(os.getenv("DREAMTAIL_MODELS", "/app/models"))
IMAGES_DIR = STORAGE_DIR / "images"
# Ensure directories exist
STORAGE_DIR.mkdir(parents=True, exist_ok=True)
IMAGES_DIR.mkdir(parents=True, exist_ok=True)
# Model settings
SDXL_MODEL_ID = "SG161222/RealVisXL_V4.0"
SDXL_REFINER_ID = "stabilityai/stable-diffusion-xl-refiner-1.0"
USE_REFINER = False # Set to True to enable refiner (requires more VRAM)
# IP-Adapter FaceID settings
ENABLE_IP_ADAPTER = False # Set to True to enable face-locked generation
IP_ADAPTER_DIR = Path(os.getenv("DREAMTAIL_IP_ADAPTER", MODELS_DIR / "ip-adapter"))
IP_ADAPTER_PATH = IP_ADAPTER_DIR / "ip-adapter-faceid_sdxl.bin"
FACE_REFERENCE_DIR = STORAGE_DIR / "faces" # Directory for face reference images
DEFAULT_FACE_STRENGTH = 0.6 # How strongly to apply face conditioning (0.0-1.0)
# Ensure IP-Adapter directories exist
IP_ADAPTER_DIR.mkdir(parents=True, exist_ok=True)
FACE_REFERENCE_DIR.mkdir(parents=True, exist_ok=True)
# Generation defaults
DEFAULT_WIDTH = 1024
DEFAULT_HEIGHT = 1024
DEFAULT_STEPS = 30
DEFAULT_GUIDANCE_SCALE = 7.5
MIN_STEPS = 10
MAX_STEPS = 100
MIN_GUIDANCE = 1.0
MAX_GUIDANCE = 20.0
# Performance settings
MAX_CONCURRENT_JOBS = 1 # AGX Orin can handle 1 SDXL generation at a time
ENABLE_ATTENTION_SLICING = True
ENABLE_VAE_SLICING = True
ENABLE_CPU_OFFLOAD = False # Only if VRAM is insufficient
USE_FP16 = True # Half precision for reduced VRAM usage
# Queue settings
MAX_QUEUE_SIZE = 50 # Maximum queued jobs
JOB_TIMEOUT_SECONDS = 300 # 5 minutes max per job
# Storage settings
IMAGE_RETENTION_DAYS = 10
CLEANUP_INTERVAL_HOURS = 24
IMAGE_FORMAT = "PNG"
IMAGE_QUALITY = 95 # For JPEG (not used for PNG)
# Logging
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
LOG_FORMAT = "[%(asctime)s] %(levelname)s [%(name)s] %(message)s"
LOG_DATE_FORMAT = "%H:%M:%S"