Od wpisu o TRELLIS.2 minęły trzy tygodnie, a odległość między „generator, który działa” a „infrastruktura, którą można sterować” skróciła się praktycznie do zera. Ostatnie dwa dni zamknęły trzy duże kawałki układanki: studio renderów dostępne dla każdego zalogowanego, panel do sterowania drugą maszyną w sieci i mały, ale ważny regulator obciążeń.
Blender Renderer: wspólna sala maszynowa
Mac mini dostał nową rolę: serwer renderów .blend. Wracam do strony ekosystemu z plikiem sceny — do 8 GiB — a skrypt optymalizacyjny sam rozkłada render Cycles na wszystkie wątki CPU i odpala kolejkę. Pasek postępu pokazuje prawdziwy stan, a po zakończeniu można pobrać oryginał, zoptymalizowaną kopię projektu albo wynik — PNG albo MP4. Szybki tryb EEVEE zostaje na zapas.
Wszystko trafia na trwały dysk zewnętrzny i jest widoczne dla każdego zalogowanego. To świadoma decyzja: biblioteka renderów jest wspólnym zasobem, nie prywatną przestrzenią pojedynczego użytkownika.
.blendoptymalizacja
scenyCycles
10 wątkówpasek
postępuPNG / MP4
wspólna biblioteka
Sandbox, który naprawdę izoluje
Uwaga od niezależnego audytu wyciągnęła sprawę, którą warto opisać otwarcie: --disable-autoexec w Blenderze blokuje wbudowany skrypt, ale nie blokuje kompozytora od wypisywania plików gdzie popadnie. Zapis wyników przeniosłem do osobnego katalogu zadania, a całe rendery działają w sandboxu macOS: bez sieci, bez dostępu do prywatnych katalogów, z limitem wolnego miejsca na dysku. Zewnętrzny code review potwierdził, że ścieżki, kolejka i upload są zamknięte — 26 testów bez regresji.
Most do RTX 5090
Drugim filarem sierpnia jest panel AI Managera. Maszyna wirtualna dostaje własny port w chronionej strefie /ekosystem/ai-manager/. Z przeglądarki do niej nigdy nie łączy się bezpośrednio — wchodzi przez bezpieczny most na Macu mini, który zna tokeny, zna dozwolone adresy i niczego więcej. Konfiguracja jest celowo asymetryczna: klient widzi tylko to, co most uzna za bezpieczne.
Panel pokazuje: aktualny tryb i model, statusy usług backendu i GPU, dziewięć kart metryk na żywo (prefill, generacja, GPU, VRAM, temperatura, moc, kolejka) oraz dziewięć wykresów historycznych z zakresami od 15 minut do 30 dni. Wykresy namalowałem od zera na Canvas 2D — bez biblioteki wykresów, bo headless przeglądarka nie chciała z nią współpracować, a dependency-free było w specyfikacji.
W trakcie testów wykresy przez chwilę pokazywały puste płótna. Winny był wyścig: strumień na żywo powiększał bufor czasu, przez co warunek „nie wczytano historii” stawał się fałszywy i historia nigdy nie weszła do bufora. Poprawka to jedna flaga i pełna inicjalizacja buforów — po czym wszystkie serię zapełniły się na 80–93% długości.
Równoległość, którą widać palcem
Na koniec wpięto regulację równoległości requestów per profil. Zamiast suwaka, presetów czy magicznych limitów — zwykłe pole numeryczne: wpisz 1, 2, 8 albo 16 i zastosuj. Backend potwierdza, że zmiana wymaga restartu; panel pokazuje pasek operacji aż do stanu gotowego. W teście na żywo restart trwał około 66 sekund, runtime wrócił do zdrowia, a nowa wartość była trwała.
Pięć cichych strażników
W trakcie audytu zadań okresowych wyszło na jaw, co tak naprawdę trzyma tę stronę w pionie: pięć watchdogów, co minutę, bez angażowania modeli. Studio, crawler, studio audio, downloader i nowy Blender Renderer. Logika jest prosta i lubię ją: cicho znaczy zdrowo. Skrypt pisze do dziennika tylko wtedy, kiedy coś musiał naprawić. Reszta to puste stdout, które scheduler zapisuje i milczy.
Co z tego zostało
Sierpień zamknął się w trzech warstwach: warstwie treści — wspólna biblioteka renderów i generator 3D; warstwie sterowania — dashboard, telemetria i równoległość; oraz warstwie ciszy — pięć cichych strażników i czysty, wypchnięty na GitHuba stan repozytorium. Całość przeszła testy, została sprawdzona w przeglądarce i wylądowała na produkcji bez przestojów.