mram
09d4e81eab
Pin compose example to v0.2.6
ci / test (push) Successful in 15s
ci / docker (push) Successful in 1m6s
ci / release (push) Successful in 15s
v0.2.6
2026-09-22 08:36:36 +02:00
mram
1264afe40e
Monitor restarts itself when the service updated its binary on disk
2026-09-22 08:34:47 +02:00
mram
c95d401a36
Pin compose example to v0.2.5
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m6s
ci / release (push) Successful in 16s
v0.2.5
2026-09-22 08:32:06 +02:00
mram
f7ea30a494
Fix control pipe races: treat ERROR_PIPE_CONNECTED as success, flush+disconnect before close so replies are never discarded
2026-09-22 08:31:13 +02:00
mram
620be9d57c
Add short flags: -i (install), -r (remove), -m (monitor)
2026-09-22 08:23:40 +02:00
mram
cffb4151a6
Pin compose example to v0.2.4
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m9s
ci / release (push) Successful in 15s
v0.2.4
2026-09-22 08:19:13 +02:00
mram
16dc7fe462
Add --monitor: live status view (downstream health, GPU lock, queue) via the control channel
2026-09-22 08:17:05 +02:00
mram
a74cd49fe5
Pin compose example to v0.2.3
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m9s
ci / release (push) Successful in 15s
v0.2.3
2026-09-21 23:03:45 +02:00
mram
cc2a2cad27
Add --update-now: update trigger that only goes through the service's control channel
2026-09-21 23:03:45 +02:00
mram
f707d07fd8
Local control channel: unprivileged users can trigger --force-update via the running service
2026-09-21 23:00:38 +02:00
mram
ca33a3db82
Pin compose example to v0.2.2
ci / test (push) Successful in 16s
ci / docker (push) Successful in 1m8s
ci / release (push) Successful in 15s
v0.2.2
2026-09-21 22:34:56 +02:00
mram
507af1dbff
Managed ComfyUI picks up Comfy-Desktop shared models/input/output automatically
2026-09-21 22:34:10 +02:00
mram
45bc9fe27c
Strip ANSI escapes from managed ComfyUI output in the log; spawn child with NO_COLOR/TERM=dumb
2026-09-21 22:29:41 +02:00
mram
5b752d5637
Pin compose example to v0.2.1
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m16s
ci / release (push) Successful in 15s
v0.2.1
2026-09-21 22:19:49 +02:00
mram
b55d548c5f
install-service: grant venv base interpreter (pyvenv.cfg home) outside COMFY_DIR
2026-09-21 22:19:08 +02:00
mram
2d5be72436
--force-update reports from/to versions; elevated parent no longer claims "update applied" when nothing changed
2026-09-21 21:58:50 +02:00
mram
21e40a1774
Pin compose example to v0.2.0
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m7s
ci / release (push) Successful in 15s
v0.2.0
2026-09-21 21:47:48 +02:00
mram
bdc844872d
Install narrates itself: stop/copy/start steps and the potentially long icacls tree grant
2026-09-21 21:36:45 +02:00
mram
299b6dc0bb
Distinguish EACCES from ENOENT in the COMFY_DIR startup check
2026-09-21 21:32:45 +02:00
mram
9589e58ce6
Install opens up COMFY_DIR for the sandboxed service: ACL grant on Windows, BindPaths on Linux
2026-09-21 21:30:35 +02:00
mram
be0bb36317
Pin compose example to v0.1.10
ci / test (push) Successful in 28s
ci / docker (push) Successful in 1m15s
ci / release (push) Successful in 17s
v0.1.10
2026-09-21 21:20:49 +02:00
mram
9b267533c9
COMFY_DIR alone manages ComfyUI: derive the launch command from the standard venv layout
2026-09-21 21:18:33 +02:00
mram
6f092ddc12
Default GAME_POLL_INTERVAL to 15s: nvidia-smi polls keep the GPU awake
2026-09-21 21:10:21 +02:00
mram
0228ccc296
Pin compose example to v0.1.9
ci / test (push) Successful in 17s
ci / docker (push) Successful in 1m17s
ci / release (push) Successful in 19s
v0.1.9
2026-09-21 20:57:34 +02:00
mram
9997913929
Sync the env file at startup, not just at install: updates append new settings
2026-09-21 20:56:32 +02:00
mram
482731ed9e
Pin compose example to v0.1.8
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m11s
ci / release (push) Successful in 15s
v0.1.8
2026-09-21 17:19:16 +02:00
mram
e4bdc92ece
Game detection: foreign GPU holders take an external lock hold (GAME_PROCS, GPU_FOREIGN_VRAM_MB)
2026-09-21 17:16:56 +02:00
mram
14120bf4a4
Supervisor probes before spawning: an external server on the port is used, never fought or killed
2026-09-21 16:06:28 +02:00
mram
d7566329ae
Managed ComfyUI: COMFY_CMD starts it on demand, idle stop frees VRAM (internal/supervise)
2026-09-21 13:48:07 +02:00
mram
e43ad02fc4
Ignore staged-update leftovers next to the dev exe
2026-09-21 13:14:33 +02:00
mram
232f5b61f2
Periodic upstream health checks (HEALTH_INTERVAL, default 30s); log down/recovered transitions
2026-09-21 13:14:18 +02:00
mram
5e7a042cad
CFG_VER is always a concrete version: dev builds stamp v0.0.0, never "dev"
2026-09-21 12:42:32 +02:00
mram
14c2e30478
Clarify listener wording: Ollama-compatible clients, not Ollama-facing
2026-09-21 12:38:03 +02:00
mram
dcdb2cc72e
Pin compose example to v0.1.7
ci / test (push) Successful in 13s
ci / docker (push) Successful in 1m7s
ci / release (push) Successful in 16s
v0.1.7
2026-09-21 10:04:29 +02:00
mram
44a8e9fbdc
CFG_VER/APP_VER in the env file: invalid configs replaced, updates follow APP_VER (dev/stable/pin)
2026-09-21 09:28:29 +02:00
mram
272a3a467d
force-update: single-shot with a 30s fail-fast timeout
2026-09-21 09:09:27 +02:00
mram
cedf28a809
force-update does not require consumer URLs (ErrNoConsumer sentinel)
2026-09-21 09:05:46 +02:00
mram
e46e92bee8
Sample env carries a version marker; install appends settings missing since the writing version
2026-09-21 08:54:47 +02:00
mram
cf48796183
Install writes a fully commented sample env file when no config exists
2026-09-21 08:48:51 +02:00
mram
dd3187f951
Install sets a default LOG_FILE in the env file on Windows (no console as a service)
2026-09-21 08:37:25 +02:00
mram
1394a76eea
Make service install converge: stop running service, refresh binary/config only on change, restart only if it was running
2026-09-21 08:30:55 +02:00
mram
da02457fd5
Pin compose example to v0.1.6
ci / test (push) Successful in 14s
ci / docker (push) Successful in 1m7s
ci / release (push) Successful in 14s
v0.1.6
2026-09-21 08:22:42 +02:00
mram
6a6359a630
Add --force-update: immediate signed-update check, stage + service restart
2026-09-21 08:22:11 +02:00
mram
e4e4348e8d
Start the Windows service right after install (parity with enable --now)
2026-09-21 08:12:13 +02:00
mram
b421bb7bfb
Add --version and print the version atop every help and error screen
2026-09-21 08:10:46 +02:00
mram
909918657f
Fix install/remove success message (installd -> installed)
2026-09-21 08:08:24 +02:00
mram
a0435c858e
Bare run in a terminal prints the help screen; add -h/--help
...
A zero-argument invocation now shows the usage text when stdout is a
console (double-clicked exe, interactive shell). Without a terminal —
Docker entrypoint, services, pipes — a bare invocation still starts the
proxy, so the container image and service behavior are unchanged.
2026-09-21 08:06:35 +02:00
mram
fbab0bba33
Relaunch through UAC when (un)installing the service unprivileged
...
--install-service/--remove-service on Windows no longer fail with
'Access is denied' from a normal shell: the process re-runs itself via
ShellExecuteEx 'runas', waits for the elevated child and mirrors its
exit code. The child gets --elevated-child and pauses for a keypress so
its console output stays readable. Declining the prompt reports
'UAC prompt declined'.
2026-09-21 08:00:24 +02:00
mram
802a64280f
Self-install into canonical layout on both platforms, --no-copy to opt out
...
Windows: --install-service creates %ProgramFiles%\gpu-turnstile and
%ProgramData%\gpu-turnstile, copies the exe and (if absent) the env
file in, and registers the copy. Linux: binary goes to
/var/lib/gpu-turnstile (not /usr/local/sbin: replacing a running binary
needs directory write, which must not be granted on a shared system dir
to a sandboxed service). --no-copy registers the current location
as-is on both platforms.
2026-09-21 07:52:33 +02:00
mram
a88955e35c
Sandbox the systemd unit: DynamicUser, read-only FS, no capabilities
...
The Linux install now mirrors the Windows virtual-account hardening: the
unit runs with DynamicUser=yes (transient per-service UID, no login),
ProtectSystem=strict with only StateDirectory writable (the install dir,
so self-update can rewrite the binary), NoNewPrivileges, empty
capability sets, restricted address families and a @system-service
syscall filter. Install copies the binary to /var/lib/gpu-turnstile and
the config to /etc/gpu-turnstile.env; Remove cleans up the unit and
binary but keeps the config.
2026-09-21 00:11:25 +02:00