Self-hosted AI workspace for LoRA training, datasets, inference, and galleries.
10K+
End-to-end Stable Diffusion workspace in one container, with one persistent
/workspace. LoRA Pilot bundles dataset prep, model management, training, inference, and media workflow into one integrated stack, so you can spend time creating instead of fixing broken envs.
/workspace.Quick Start:
docker pull notrius/lora-pilot:stable
docker run --gpus all -p 7878:7878 -p 5555:5555 -p 6666:6666 -v /path/to/your/data:/workspace notrius/lora-pilot:stable
(This would pull the image and run Comfy UI, Kohya SS and ControlPilot services, exposing the ControlPilot dashboard on port 7878)
Short version: it supports SD1, SD2, SDXL, SD3, FLUX.1 (dev/schnell/kontext), Chroma, Lumina-Image 2.0, LTX/LTX2, HunyuanVideo, Wan2.1/Wan2.2, Cosmos, HiDream, Qwen-Image, Z-Image and more for training, plus almost everything for inference.
Everything is orchestrated by supervisord and writes to /workspace, so reboots do not nuke your progress.
Nice quality-of-life bits:
:stable. Want newest features? Use :latest.mc, nano, unzip, model scripts) are already there.models pull sdxl-base and continue with your life.trainpilot builds a sane config from dataset size + selected quality.pilot status, pilot start, pilot stop are right there.cp .env.example .env
docker compose -f docker-compose.yml up -d
More setup docs:
DOCKER_COMPOSE.mddocker-compose/README.mddocs/WINDOWS_INSTALLATION.md/workspace is home base. Keep that persisted and you keep your project.
Expected directories (created on boot if possible):
/workspace/models (shared by everything; Invoke now points here too)/workspace/datasets (with /workspace/datasets/images and /workspace/datasets/ZIPs)/workspace/outputs (with /workspace/outputs/comfy and /workspace/outputs/invoke)/workspace/apps
/workspace/apps/comfy/workspace/apps/diffusion-pipe/workspace/apps/invoke/workspace/apps/kohya/workspace/apps/MediaPilot (https://github.com/vavo/MediaPilot)/workspace/apps/TagPilot (https://github.com/vavo/TagPilot)/workspace/apps/TrainPilot(not yet on GitHub)/opt/pilot/repos/ai-toolkit (source) with persistent links to /workspace/datasets, /workspace/models, and /workspace/outputs/ai-toolkit/workspace/config/workspace/cache/workspace/logsThe /workspace directory is the only volume that truly matters. Models, datasets, outputs, and config all live there, so that is the one you back up.
Disk sizing (practical, not theoretical):
/workspace volume: 100 GB minimum, more if you plan to store multiple base models/checkpoints.Bootstrapping writes secrets to:
/workspace/config/secrets.envTypical entries:
JUPYTER_TOKEN=...CODE_SERVER_PASSWORD=...| Service | Port |
|---|---|
| Diffusion Pipe (TensorBoard) | 4444 |
| ComfyUI | 5555 |
| Kohya SS | 6666 |
| ControlPilot | 7878 |
| MediaPilot | 7878 (/mediapilot) |
| code-server | 8443 |
| AI Toolkit | 8675 |
| JupyterLab | 8888 |
| InvokeAI (optional) | 9090 |
| Copilot sidecar (internal) | 7879 |
COMFY_PORT=5555 KOHYA_PORT=6666 DIFFPIPE_PORT=4444 CODE_SERVER_PORT=8443 JUPYTER_PORT=8888 INVOKE_PORT=9090 AI_TOOLKIT_PORT=8675 COPILOT_SIDECAR_PORT=7879
AI_TOOLKIT_DB_PATH=/workspace/config/ai-toolkit/aitk_db.db
DB is persisted under /workspace by default
JUPYTER_ALLOW_ORIGIN_PAT=... # extra origin regex appended to defaults (RunPod proxy + localhost + 127.0.0.1)
RUNPOD_POD_SHUTDOWN=stop # default; safe for local storage RUNPOD_POD_SHUTDOWN=remove # terminate pod (network volume only) RUNPOD_VOLUME_TYPE=network # auto-select remove RUNPOD_VOLUME_TYPE=local # auto-select stop
HF_TOKEN=... # for gated models HF_HUB_ENABLE_HF_TRANSFER=1 # faster downloads (requires hf_transfer, included) HF_XET_HIGH_PERFORMANCE=1 # faster Xet storage downloads (included)
DIFFPIPE_CONFIG=/workspace/config/diffusion-pipe.toml DIFFPIPE_LOGDIR=/workspace/diffusion-pipe/logs DIFFPIPE_NUM_GPUS=1 If DIFFPIPE_CONFIG is unset, the service just runs TensorBoard on DIFFPIPE_PORT.
The image includes a system-wide command: • models (alias: pilot-models)
Usage: • models list • models pull [--dir SUBDIR] • models pull-all
You can also download models using Lora Pilot's web interface running at port 7878.
Models are defined in the manifest shipped in the image: • /opt/pilot/models.manifest
A default copy is also shipped here (useful as a reference/template): • /opt/pilot/config/models.manifest.default
If your get-models.sh supports workspace overrides, the intended override location is: • /workspace/config/models.manifest
(If you don’t have override logic yet, copy the default into /workspace/config/ and point the script there. Humans love paper cuts.)
Both models and modelsgui will use /workspace/config/models.manifest when present.
models pull sdxl-base
models list
LoRA Pilot is not just a side project, it is actively used in real production workflows. Builds are frequent, breakages are taken seriously, and reasonable feature requests are welcome. If you need help or have questions, feel free to reach out or open an issue on GitHub.
Reddit: u/no3us
See full details in CHANGELOG.
/workspace./workspace/config/service-updates.toml./workspace.MIT License - go wild, make cool stuff, just don't blame us if your AI starts writing poetry about toast.
Made with ❤️ and way too much coffee by vavo
"If it works, don't touch it. If it doesn't, reboot. If that fails, we have Docker." - Ancient sysadmin wisdom
Content type
Image
Digest
sha256:6f374fb2e…
Size
17.9 GB
Last updated
8 days ago
docker pull notrius/lora-pilot