ComfyUI on Fedora 43: Two Virtual Environments + One-Click Start (March 2026)

Illustration
ComfyUI on Fedora 43: Two Virtual Environments + One-Click Start (March 2026)
Date: March 2026
OS: Fedora 43
Goal: Keep two Python venvs (e.g., 3.12 + 3.14) for compatibility, but start ComfyUI automatically with a clean, lightweight setup.
Enterprise Delivery Operating System
This guide is part of the Enterprise Delivery Operating System series. Use these category hubs to navigate the full stack (infra → workflows → governance).
ArchitectureReference architecture for the Enterprise Delivery Operating System.
DevOps & RuntimeDeployments, services, ports, runtime operations, and repeatability.
AI Tooling & AutomationLocal AI stack, orchestration, automation, and stable workflows.
Security & CompliancePermissions, hardening, and safe defaults for local AI systems.
Observability & PerformancePerformance tuning, monitoring, VRAM/RAM budgeting, and stability.
Why keep two venvs?
AI tooling moves fast. Some nodes and wheels lag behind the newest Python, while others require it.
- Python 3.12 venv → “boring but compatible” (TensorRT/LW wheels/Lightning often happier)
- Python 3.14 venv → newest features, but more missing wheels / import issues are common
Rule: never mix installs between venvs. Always run ComfyUI from the venv you intend.
Setup: One script per venv
Create a small launcher script that:
1) switches into ComfyUI folder
2) activates the chosen venv
3) runs ComfyUI on localhost
1) Create a launcher for Python 3.12 venv
mkdir -p ~/.local/bin
cat > ~/.local/bin/comfyui-start-312.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd /home/x/ai/ComfyUI
source /home/x/ai/ComfyUI/.venv312/bin/activate
exec python main.py --listen 127.0.0.1 --port 8188
EOF
chmod +x ~/.local/bin/comfyui-start-312.sh
2) (Optional) Create a launcher for Python 3.14 venv
cat > ~/.local/bin/comfyui-start-314.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd /home/x/ai/ComfyUI
source /home/x/ai/ComfyUI/.venv/bin/activate
exec python main.py --listen 127.0.0.1 --port 8189
EOF
chmod +x ~/.local/bin/comfyui-start-314.sh
Now you can run either version without thinking:
- ~/.local/bin/comfyui-start-312.sh
- ~/.local/bin/comfyui-start-314.sh
Autostart: systemd user service (best option)
This starts ComfyUI at login, restarts on crash, and stays minimal (no root, no heavy wrappers).
1) Create the user service for 3.12
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/comfyui312.service <<'EOF'
[Unit]
Description=ComfyUI (Python 3.12 venv)
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/x/ai/ComfyUI
ExecStart=/home/x/.local/bin/comfyui-start-312.sh
Restart=on-failure
RestartSec=2
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=default.target
EOF
2) Enable + start
systemctl --user daemon-reload
systemctl --user enable --now comfyui312.service
systemctl --user status comfyui312.service --no-pager
3) Logs (debug)
journalctl --user -u comfyui312.service -f
(If you also want the 3.14 service, repeat with comfyui314.service and the other script.)
One click GUI: Desktop launcher (open ComfyUI in browser)
This creates an app entry in your menu. Clicking it:
1) starts the service
2) opens the UI in your browser
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/comfyui.desktop <<'EOF'
[Desktop Entry]
Type=Application
Name=ComfyUI (Local)
Comment=Start ComfyUI and open the UI
Exec=sh -lc 'systemctl --user start comfyui312.service; xdg-open http://127.0.0.1:8188'
Icon=utilities-terminal
Terminal=false
Categories=Graphics;AI;
EOF
Notes that prevent common mistakes
- If you see pip installing into ~/.local/..., you’re not in the right venv (or you didn’t activate it).
- If a node fails with pkg_resources missing → install setuptools inside the chosen venv:source /home/x/ai/ComfyUI/.venv312/bin/activatepython -m pip install -U pip setuptools wheel
- TensorRT node failures are normal on newer Python builds: if you don’t need it, disable that custom node folder.
Next reads
If you want to go deeper, these guides connect directly to the setup above:
ComfyUI nodes: dependency fixes (Lightning, pkg_resources, ffmpeg)Fix common node import failures and keep your ComfyUI stack stable across updates.
Two venvs, two ports, zero confusionRun multiple ComfyUI instances cleanly: ports, services, and predictable profiles.
VRAM budgeting: what actually reduces OOMPractical VRAM tactics: attention modes, model sizes, batching, and real-world limits.
Local AI hardening: permissions, sandboxing, and safe defaultsReduce risk on local AI systems: file permissions, service isolation, and safer defaults.
Tradeoffs (quick)
systemd user service
- ✅ stable, auto-restart, low overhead, clean
- ⛔ needs initial setup once
desktop launcher
- ✅ one click workflow
- ⛔ still depends on the browser UI
two venvs
- ✅ best of both worlds (compat + latest)
- ⛔ you must keep ports/services separated to avoid confusion
Related Articles

Laravel 12 Custom CMS with Filament 3: The Expert Workflow
A detailed look at the synergies between Laravel 12 and Filament 3 for creating customized Content Management Systems. Experts analyze the innovative workflow, advantages, disadvantages, and the challenge of the Jetstream workflow.