Repository navigation
Berth v0.3.2
Fixes from the first Windows testers, and four contributions. On Windows, the Epic Games
launcher no longer holds the card from the tray, per-process VRAM counts only the governed card,
and berth service install starts its tasks and writes their logs. Engines get a minimum turn,
drain and park requests carry the engine's key, the key can live in an owner-only file,
--fail-closed now covers drain boundaries, and a ComfyUI session can hand the card back when
its work is done. The harbor gets a Home Screen icon.
Added
min_turnon an[[engine]]entry andberth run --min-turn: a minimum turn. For that
long after the grant the engine keeps the card: a request of equal, lower or higher
priority cannot drain it, only a hold can. A blocked waiter is told how much of the turn is
left, andberth statusshows it in the TURN column. When the turn ends the normal rules
apply; a re-attach after a daemon restart starts a fresh turn.[harbor] listenand[gateway] listenin berth.toml, read byberth harborand
berth gatewaywhen their--listenflags are not given, and validated by
berth config check: the gateway key is loopback only, the harbor key takes any
host:port, a LAN address being the explicit opt-in it already is.berth service install
no longer writes a hardcoded--listeninto the units and tasks, so a port change needs
a restart, not a reinstall (#89).- On Windows,
berth service installstarts each task it creates withschtasks /Runand
reports it, keeps a task it replaces whose XML differs as a .bak in the state directory
like the systemd path keeps a differing unit, and each task appends its output to
<state>\logs\berthd.logand its siblings, whichberth service statusprints (#89). api_key_fileon an[[engine]]entry andberth run --api-key-file: the engine's key in
an absolute file only its owner can read, as an alternative toapi_key_env. Symlinks and
FIFOs are refused, the two sources are exclusive, and on Windows the file form is refused
with a message. #85--fail-closedcovers drain boundaries too: when a slot list or a ComfyUI queue cannot be
read, ordrain_maxpasses, the drain keeps the engine and its lease instead of stopping it,
and the next drain tries again. Without the flag nothing changes.
#86exit_comfyui_idleandexit_comfyui_idle_after(and theirberth runflags): a ComfyUI
run hands the card back once the session's new work is done, or after an interval with no
job. Off by default. #87- The harbor's iOS Home Screen icon: Pilot, the harbor master llama, with
berthas its
title. #93
Fixed
- Drain, park, resume and readiness requests carry the engine's
api_key_envkey, so an
engine that requires it no longer refuses the slot check and unload of its own drain.
#84 - The built-in
epic-gameclaim no longer holds the card while only Epic's background services
run. Its exclusion namedEpicOnlineServices, but the folder on disk isEpic Online Services,
so the overlay and helper processes matched as a running game and every engine waited behind
them. #81 - On Windows, per-process VRAM now counts only the card Berth governs and cannot exceed it
(#82). TheDedicated Usagecounter PDH reads reports a process's committed reservation,
which a driver can report many times above the card's real memory, and on a multi-GPU
machine it mixes every adapter together, so one process could read as holding more VRAM than
the card holds while the other card's memory landed on the governed one. Berth now keeps
only the instances on the governed card's adapter, found by matching itspci.bus_id
against the adapters D3DKMT lists, and caps each process's figure at the card's total. A
capped reading is logged at most once per process per minute, and if the card's adapter
cannot be pinned to one LUID Berth counts every adapter and says so once.