Work: izolált munkaterületek
A Work a Libre WebUI natív coding-agent felülete. Minden task tartós conversationt,
explicit provider route-ot és /workspace filesystemet egyesít. A modell fájlt néz/
szerkeszt, task-scoped Docker containerben vagy Kubernetes Podban parancsot futtat és previewt indít.
Közvetlenül Libre WebUI-ban van, és nincs szüksége külső agent daemonra.
Minden API hitelesített Work-hozzáférésű accountot kér. Default csak admin; admin minden aktív usernek megnyithatja a Settings → User Management → Access & policies → Work access alatt, de host-folder admin-only. Work arbitrary shell commandot enged sandboxban, network egresssel, ha runtime policy nem tiltja. Minden hozzáférő trusted runtime operator, nem egyszerű chat user.
Strands motor
A Work Motor vezérlője a Libre WebUI (alapértelmezett) és a Strands lehetőséget kínálja. A Strands akkor jelenik meg, ha az Ön fiókja használhatja a Strands motort. A helyi vagy távoli szolgáltatói modellt a külön modellválasztóban válassza ki; a modellnevek, a szolgáltató azonossága, a hitelesítő adatok és a távoli használatra vonatkozó tájékoztatás mindkét motornál ugyanaz marad.
Motor: Strands esetén egy Strands ügynök tervezi meg az egyes lépéseket, a Work pedig végrehajtja a kért eszközöket. A Work biztosítja a promptot, a beszélgetést, az eszközdefiníciókat és a sandboxot, ellenőriz minden eszközhívást, betartatja a jóváhagyásokat és a szabályzatot, a feladat konténerében futtatja az eszközöket, és az eredményeket a meglévő, SQL-alapú futási előzményekben rögzíti. A Strands ügynöknek nincsenek saját eszközei a gazdagép fájlrendszeréhez vagy shelljéhez. A szolgáltatói modellnek támogatnia kell az eszközhívást; a Work ezt a futás indítása előtt ellenőrzi. A Stop megszakítja a modellt és az ügynököt, mielőtt a Work eltakarítja a konténerét. A visszaállított futások a mentett Work-kontextust használják, a már befejezett eszközhatások megismétlése nélkül.
A Chatben kiválasztott konkrét Strands-modell ugyanazzal a motorral, szolgáltatóval és modellel kerül át egy új Work-feladatba. Ha az adott szolgáltató vagy modell elérhetetlenné válik, a Work megőrzi a választást, és a futás indítása előtt helyettesítést kér. A korábbi kiadásokban dsh: modellelőtaggal mentett futások Strands-futásként nyílnak meg.
A szerver egy Strands-futás minden modellhívásánál újra ellenőrzi a Strands-hozzáférést, így ha a motort kikapcsolják az Ön fiókja számára, a futó feladat a következő lépésnél leáll. A meglévő feladatok olvashatók maradnak, és ismét választhatják a Libre WebUI motort.
Következtetési szint
A Work szerkesztője ugyanazt a következtetésvezérlőt kínálja, mint a Chat, a modellválasztó mellett, a off, on, low, medium és high szintekkel. A Chat által használt alapértékből indul: a modellhez rögzített szintből, ennek hiányában a Settings > Generation értékéből. A szerkesztőben választott szint minden abból indított futtatásra érvényes, az új feladat pedig megtartja azt a szintet, amellyel létrejött, amíg az oldal nyitva van.
Minden futtatás eltárolja a kért szintet, és a szerver szolgáltatónként ugyanúgy fordítja le, mint a Chatben, bármelyik motoron. Az Anthropic és a Gemini keretét a Work szokásos, 4096 tokenes választerére ráadják, hogy a gondolkodás ne szorítsa ki a nagy eszközhívást. A vezérlő el van rejtve azon modellnél, amely jelzi, hogy nem képes következtetni. Az automatizálások vagy másik ügynök által indított futtatások a modell alapértékét használják.
Kiadási újdonságok
- Work és Chat külön sidebar action.
- Taskok normál sidebarban stabil pozícióval és direkt törléssel.
- Dedicated sandbox identity és tartós Docker volume/Kubernetes PVC taskonként.
- Conversation, run state, tools, model és ownership DB-ben.
- Live authenticated stream texthez, exposed reasoninghez, tools/resultshez, usagehez és state-hez.
- Server-owned worker skills inspect/edit/verify/preview guidance-szel, control files nélkül.
- Tool-capable Ollama, Cloud és provider plugins.
- Responsive Conversation/Workspace split drag/keyboard és mobil switcher.
- Files, Activity, Git, Terminal, Preview, Screen — a Work Computer.
- Light/dark syntax, formatting, conflict detection és drafts.
- Dismissible remote disclosure userenként.
- 25 locale, Arabic RTL, miközben code/paths/IDs/output LTR.
A tartós egység a workspace, nem folyamatos container. Libre indít/leállít/recreate-el, de volume megmarad. Egy agent futása közben a sandbox a parancsok és a munkaterület-segédek között is fut. A futás végén leáll, kivéve ha egy ellenőrzött előnézet vagy egy figyelt Work Computer képernyő aktívan tartja; az önálló parancsok és munkaterület-segédek leállítják a sandboxukat, ha más tevékenységnek nincs rá szüksége.
Architektúra
Libre, nem model/browser választ names, image, mount, user, limits, network, preview port. Csak ezek a tools:
list_filesread_filewrite_filedelete_filemove_filesearch_filesrun_commandstart_previewstop_preview
delete_file/move_file path-guarded: nem lép ki, nem követ symlinket, directoryhoz
recursive flag kell és nem overwrite-ol. File helperrel preview alatt is működik, amikor run_command blokkolt.
Model request backendből jön, nem containerből és független network policytól.
Követelmények
- Docker backend: telepített/elérhető Docker és jog a
dockervagyWORK_DOCKER_COMMANDfuttatására. - Kubernetes: API credentials, Role/RoleBinding, namespace és NetworkPolicies
work.enabled=truemellett. - Tool-capable modell egészséges Ollama/Cloud vagy aktív plugin exact model/admin credentiallel.
- Storage image/project/dependency számára és hitelesített Work account.
Libre ellenőrzi Ollama tools capabilityt. Plugin protocol kell; elutasítás hibázik silent switch nélkül.
Helyi indítás
docker info
npx libre-webui@latest
Nyissa http://localhost:8080, login admin, Work, model és leírás. Docker nélkül
Runtime unavailable, Run disabled, host fallback nincs. Image első használatkor inspect/pull.
Work felület
Task létrehozása és visszatérés
Work, instruction, model, Run. Első message taskot, runt, route-ot és workspace-t hoz létre. Sidebarban marad; reopen visszaállít conversation, Files és selectiont. Régi messages paged, rename/delete menüből. Egy active run, következő instruction ugyanazt használja.
A kezdőképernyő a futtatási házirendet és az opcionális ágensválasztást a composer fölé csoportosítja. Elég hely esetén egymás mellett, szűkebb képernyőn egymás alatt jelennek meg. A gazdamappa mezője és hozzáférési figyelmeztetése látható marad. Az Engine és Model a composerben a diktálás és a feliratozott Run gomb mellett szerepel. Szűk képernyőn tördelődnek; a hosszú nevek keskeny panelekbe is beleférnek. Motor- vagy modellváltáskor a már begépelt feladatleírás megmarad.
Composer dictation browser speech vagy STT útján és append. Created/moved files chipsként tool activity alatt, click Filesbe vált. Csak mutating tools ad chips.
Agent felvétele
Hire as an agent perszonával persistent named agentet készít. Persona name/system prompt a Work prompt elé kerül, runtime contract felülírja. Agents saját sidebar groupban avatar/activity/status mellett. Kompakt sidebarnál csak ezek a kitűzött agent-avatarok maradnak a sávban; az egyszeri Work-feladatok a sidebar kinyitásakor térnek vissza.
Status két tier: olcsó no-tools call ~8 szó ("Inbox at zero. 2 replies ready."), max 90
char; hiba a final első sorára esik. Ad hoc/failed csak deterministic,
WORK_STATUS_BLURB_MODEL=0 kikapcsolja. Unread monoton seen markerrel és dot-tal.
Értesítések: work-run-finished, work-run-attention,
work-takeover, közvetlen agent linkkel. Shared persona nem fedi fel owner memóriát;
törlés után agent folytat warninggal. API personaId, isAgent.
Agent lap
- Identity: avatar, név, activity, status.
- Screen: Work Computernél live view-only thumbnail, viewer budgetben, click full Screen.
- Routines: automations ugyanabban workspace/conversation/model/runtimeban,
nem új task. Schedule, pause/resume, + Routine bound; busy →
work-task-busy, nem queue. - Auto Review: az agent jóváhagyási kapcsolója és az összegyűjtött Always-allow szabályok (egy szabály törlése újra bezárja a hatókörét). Ha a task policyja kötelezővé teszi a felülvizsgálatot, a kapcsoló bekapcsolva rögzül.
- Taught skills kapcsolókkal.
Csatlakoztatott eszközök (MCP- és OpenAPI-szerverek)
A Work agentek ugyanazokat az eszközszervereket hívhatják, amelyek a
csevegéshez be vannak állítva — MCP vagy OpenAPI, rendszergazda által regisztrálva a
Beállítások → Eszközök alatt. Az agentnél névtérrel ellátott néven jelennek meg
(server__tool), a hívások pedig a Libre WebUI backendjéből futnak a megerősített
eszközátjárón át (SSRF ellen védett kimenő forgalom, felhasználónkénti hitelesítő adatok,
méret- és időkorlátok), soha nem a sandboxon belülről.
A felajánlás őszinte azzal kapcsolatban, hogy egy autonóm futás mit tud ténylegesen használni:
- Offline task egyet sem ajánl fel: akár van kimenő forgalma a backendnek, akár nincs, a
hálózat nélküli task offline marad — ugyanaz az indok, mint a
web_searchesetén. - A személyes hitelesítő adatot igénylő szerver, ha a felhasználó nem mentette el, már a felajánláskor kiszűrődik, mert egy autonóm futás nem tud megállni és bekérni. Adja meg az adatot a Beállítások → Eszközök alatt, és a következő futás felajánlja a szervert.
- Az eszköz-hozzáférési mód (csak rendszergazdák vagy minden felhasználó) és a szerverenkénti láthatóság pontosan úgy érvényes, mint a csevegésben, a persona eszközszerver-kötései pedig szűkítik, mely szervereket látja a hozzá felbérelt agent.
- Aktív jóváhagyásoknál a szerver által mellékhatásosnak minősített csatlakoztatott eszközök a döntésére várnak, mint bármely felügyelt művelet; a csak olvasható eszközök kérdés nélkül futnak.
Delegálás agentek között (@-említések)
A felbérelt agentek átadhatják egymásnak a munkát. A Work szerkesztőmezőjében a @ beírásával
említhet meg egy másik agentet; az aktuális agent az utasításaiban látja a társai listáját
(nevek és állapotsorok), és a megfelelő kéréseket a message_agent eszközzel delegálja. A
delegálás üzenetekkel történő koordináció, szándékosan nem közös számítógépeken keresztül:
minden agent megtartja saját elszigetelt munkaterét és sandboxát, a címzett pedig nem látja a
delegáló beszélgetést — a kérésnek magával kell hoznia a saját kontextusát.
A delegálás aszinkron. Az eszköz azonnal visszatér, a cél-agent a saját taskjában fut (a
beszélgetésében a kérés Delegated by címkével, a küldő nevével jelenik meg), és amikor
végez — kész, bemenetre vár, hibázott vagy megszakadt —, a végső válasza visszakerül a delegáló
agent beszélgetésébe Report from címkével ellátott üzenetként. Ha a delegáló még fut, a
jelentés a következő fordulóban jut el a modelljéhez; ha tétlen, a jelentés egyszerűen vár a
beszélgetésben — egy jelentés soha nem indít el magától futást, így két agent nem tud egymással
pingpongozni. A delegált futások nem delegálhatnak tovább, a foglalt cél őszintén elutasítja a
próbálkozást sorba állítás helyett, aktív jóváhagyásoknál pedig a message_agent ugyanúgy
megáll felülvizsgálatra, mint bármely mellékhatással járó művelet (az Always-allow szabály arra
az egy cél-agentre korlátozódik).
Műveletek jóváhagyása (Auto Review)
A mellékhatással járó műveletek futás előtt megállhatnak a döntésére. Ha egy taskra aktívak a
jóváhagyások — a Work policy beállítja a Require approval for side-effecting actions
kapcsolót, vagy az agent Auto Review kapcsolója be van kapcsolva —, a futás megáll a
run_command, computer_act, delete_file, move_file vagy message_agent végrehajtása
előtt, és döntési kártyát mutat a beszélgetésben: Allow once, Always allow vagy
Deny.
- Allow once pontosan ezt a hívást futtatja le, és legközelebb újra kérdez.
- Always allow lefuttatja a hívást, és szabályt ment a taskra: a fájl- és
számítógép-műveleteknél az egész eszközre, a
run_commandesetén a parancs programjára (az első tokenjére) szűkítve — aznpm run buildjóváhagyása a jövőbelinpmparancsokat hagyja jóvá előre, nem az egész shellt —, amessage_agentesetén pedig az egy cél-agentre szűkítve. A szabályok az Agent lap Auto Review szakaszában szerepelnek, és ott törölhetők. - Deny elutasítja a hívást. A modell megkapja, hogy a felhasználó megtagadta a műveletet, és változtatás nélkül nem próbálhatja újra; a futás ezzel a válasszal folytatódik.
A függő jóváhagyás értesítést is kivált (alkalmazáson belül, illetve engedélyezett web pusht), mert a futás már percek óta felügyelet nélkül dolgozhat, amikor a kapuhoz ér. Ha öt percen belül senki nem dönt, a kérés lejár, a művelet nem hajtódik végre, a futás pedig Needs input állapotban, normál átadással zárul, ahelyett hogy kivárná a büdzséjét.
A jóváhagyások a műveleteket szabályozzák, nem a láthatóságot: a write_file és a csak olvasható
eszközök a task-szintű beállítás szempontjából felügyelet nélkül futnak, és minden döntés bekerül
a biztonsági auditnaplóba.
Egy készség által megkövetelt jóváhagyások
Egy készség kijelentheti, hogy megnevezett eszközök futtatása előtt mindig döntést igényel. Amikor egy ilyen készség betöltődik egy futásba — az agent personájához kötve, vagy a futás által felvett tanított eljárásként —, ezek az eszközök kapuznak akkor is, ha a taskra a jóváhagyások ki vannak kapcsolva, és a döntési kártya azt írja: Ezt a(z) <name> készség kéri.
Ez az igény két szempontból erősebb a task-szintű beállításnál. Elér olyan eszközöket, amelyeket a
beállítás békén hagy (köztük a write_file-t), és az Always allow nem elégítheti ki: egy
mentett szabály a felhasználó állandó kényelmi funkciója, egy pedig, amely azt mondja, mindig
kérdezz, felülírja azt. Az Allow once továbbra is működik — ez ugyanis friss döntés, pontosan
azt, amit a készség kért. Azok az eszközök, amelyeket a készség nem nevezett meg, nem érintettek,
és továbbra is felügyelet nélkül futnak.
Task állapot
| UI | Backend | Szín |
|---|---|---|
| Idle | idle | rgb(255, 255, 255) |
| Thinking | preparing vagy running | rgb(48, 121, 255) |
| Complete | completed | rgb(76, 212, 117) |
| Needs input | needs_input vagy cancelled | rgb(255, 204, 0) |
| Error | failed | rgb(255, 61, 129) |
Stop → Needs input fájlokkal. Round/tool budget kimerülése final no-tools handoff után szintén Needs input, nem hamis Complete. Active run nem zár conversationt; message a következő roundba kerül.
Run history
Minden futás megőrzi, amit befejezéskor létrehozott, így a munka túlél egy oldalújratöltést, egy újraindítást és egy új böngészőt is:
- egy összefoglaló — a végső asszisztensszöveg, az átadási kérdés, amikor a futás Needs input állapotban ért véget, vagy a hiba, ha meghiúsult (4000 karakterre korlátozva; a megszakított futás nem őriz meg összefoglalót);
- az általa módosított fájlok — az útvonalak, amelyeket írt, amelyekbe belépett vagy amelyeket törölt, első-érintés sorrendben, deduplikálva és 200 elemre korlátozva; és
- egy kilépési állapot —
completed,needs_input,failedvagycancelled, egy rövid gépi okkal kiegészítve, amikor ismert ilyen (needs_input:round,failed:work-provider-error,cancelled:user).
Az olvasások soha nem kerülnek rögzítésre: egy futás, amely húsz fájlt nyitott meg és egyet írt, pontosan azt az egy artefaktumot sorolja fel.
A Runs lista ezt az előzményt a legújabbal kezdve mutatja, egy felvett agent esetén az Agent lapon, egy alkalmi task esetén az Activity lap tetején. Minden sor tartalmazza a kilépési állapotot, a futás befejezésének időpontját, az összefoglaló első sorát, és egy chipet minden módosított fájlhoz, amely megnyitja a fájlt a Files lapon. Ugyanezek a chipek megjelennek egy befejezett beszélgetés alatt is, így a legutóbbi futás artefaktumai egy kattintásnyira maradnak egy oldalújratöltés után is.
A rendszergazdák ugyanezt az eredményt látják a System oldalon: a Work-táblázat Last run oszlopa minden task legutóbbi befejezett futását mutatja.
Az előzmény elérhető az API-n keresztül is, mint GET /api/work/tasks/:id/runs (legújabbal
kezdve, a ?limit= alapértelmezetten 20, felső korlátja 100) és
GET /api/work/tasks/:id/runs/:runId. Mindkettő tulajdonoshoz kötött, és olvasható akkor is,
amikor a Work az indítási helyreállítás miatt blokkolva van, pontosan úgy, mint a task- és
üzenetolvasások.
Átméretezés
xl split: default 45 %, 30–70 %, per user/browser ratio, arrows 2 %, Shift 10 %,
Home/End min/max, Enter/doubleclick reset. RTL vizuális irányt követ; mobilon switcher.
Fájlok
Files /workspace direct children, strict UTF-8, invalid bytes elutasítva. Light/dark
syntax, Cmd/Ctrl+S, Shift+Alt+F, conflict detection, task/path drafts és warnings.
Highlight 8 000 char/400 line felett pause, formatting 100 000/4 000 JS/TS/JSON/CSS/HTML/Markdown/YAML.
Modelváltozásnál red/green Changes a kör elejétől, unchanged fold, diff/editor toggle és
+added −removed. Baseline browser által korábban látott content; később nyitott file diff nélkül. Draft convenience, nem backup.
Activity
Tool calls/results, files, output, errors, LTR output RTL-ben. Active SSE:
snapshot, run_state, reasoning_delta, assistant_delta, tool_call, tool_result,
usage, skill_loaded, error, done.
Reasoning providerfüggő, csak API által visszaadott, hidden chain nem. Text/tools külön streamelhet. Output bounded; truncation nem jelenti, hogy nincs több.
Git
Helyi műveletek /workspace számára: init main, status/ahead/behind/20 commits,
bounded diff, stage 200 paths, commit admin/no-reply identityvel, branch és clean switch.
Local-only: nincs clone/fetch/pull/push/remotes/arbitrary Git/token/SSH/PR. Külön trusted broker kell, ideális GitHub App egy repo/operation hatókörrel. Ne tegyen long-lived credentialt workspace/env/configba.
Reads idle/active, writes elutasítva model/terminal/preview ownership alatt, switch clean
treevel. UI parancs fixed args 1000:1000-ként, nincs shell input. System/global config,
prompts, hooks, helpers, signing, submodules, external diff, textconv, network protocols
tiltott. Nem exact /workspace tree vagy külső Git dir és executable filter elutasítva.
Ez a Git API-t védi; Terminal/run_command arbitrary Gitje továbbra is sandboxhatár.
Beépített worker skills
Server-owned útmutató /workspace, read-only root, temporary process//tmp, network,
limits és preview lifecycle témában. A modell ellenőrzi instruction/manifest/lock/script/
repo állapotot, megőrzi az unrelated worköt, végigviszi implementationt, focused checket
futtat, diagnosztizál és csak verification után indít previewt. Csak contextben létezik,
nincs AGENTS.md; project instruction nem írja felül a securityt.
Terminal
Interactive shell ugyanabban sandboxban, 1000:1000, /workspace, privilege nélkül.
- Auth — Authorization short-lived one-use ticketre cserélődik task/protocol bound,
csak ticket/ID a
/ws/work-terminalURL-en. Minden input újraellenőrzi account/access/ownership; revoke zár és lease-t enged el. - Origin —
CORS_ORIGIN/BASE_URLesetén match; originless Electron még ticketet kér. TLS/firewall/proxy. - Admission — lease és
WORK_MAX_ACTIVE_RUNTIMES_*; terminal életben tart containert. - Concurrency
WORK_TERMINAL_MAX_SESSIONS_PER_TASKdefault 2; idleWORK_TERMINAL_IDLE_TIMEOUT_MSdefault 15 perc; active run végét megvárja.
Közvetlen Docker Engine API hijacked TTY miatt. WORK_DOCKER_SOCKET, majd DOCKER_HOST
(unix:// vagy HTTP tcp:// proxy Connection: Upgrade-dal), majd
/var/run/docker.sock. ssh:// vagy TLS tcp:// unavailable, fallback nélkül.
Kubernetes exec WebSocket resize-zal. Session nincs rögzítve és Activityben sincs.
Preview
Üres commandnál root package.json dev, root index.html bundled serverrel vagy egy
nested app. Root elsőbbség, multiple/no entry actionable error. Custom command
/workspace-ből, pl. cd apps/web && npm run dev -- --host 0.0.0.0 --port 4173, bind
0.0.0.0/WORK_PREVIEW_PORT, timeout 15 s. Model start_preview-t használ; normál
run_command background descendants-et takarít.
Képernyő (Work Computer)
Teljes bemutató: valódi, vágatlan futás (30×, majd valós idő), ahol agent NASA-képeket böngész, választ, majd Three.js galériát épít és tesztel egy promptból.
Work Computer policy Screen lapot ad: live virtual desktop ugyanabban sandboxban, window manager, dock, Chromium 1280×800. Nézhető, átvehető, hallgatható és demonstrációval tanítható. Lapnyitás on-demand GUI-t indít és VNC-over-WebSocket viewert köt.
Admin egy kattintással Enable: bundled GUI image build a saját Docker daemonon és
ready policy. Filtered proxy mögött build endpoint tiltott; pull
ghcr.io/libre-webui/libre-work-computer (libre-work-computer:latest) vagy build
deploy/work-computer/, majd Enable csak policyt hoz létre. Network access kötelező loopback port miatt.
Nincs szükség kézi docker build parancsra.
VNC localhoston két per-session password: view-only minden watchernek, full csak takeover
lease holdernek. WebSocket bridge az egyetlen surface, host loopbackon. One-use ticket
session/task bound és minden kapcsolatnál access check. Revoke azonnal vág. Max négy
viewer, watching activityként számít. Watching és run nem versenyez: mid-run ugyanahhoz
sandboxhoz kapcsolódik, nem blokkol következőt, run után megmarad team workerben is.
Browser profile /workspace/.browser-profile-ban tartós.
computer_observe full screenshotot, cursort, active windowt, URL-t, page/browser focust,
focused element descriptort és hash-t ad. DevTools loopback signals régi image-ben hiányozhat.
computer_act max 24 mouse/keyboard actions batch után screenshotot ad.
type/key focus assertionnel fail closed; batch megáll új window/title/focus esetén;
expected outcome title/URL/region adaptív deadline-nal, ahol "pending" nem success.
Adaptive settling pollinggal. Click receipt pixelváltozást, scroll_until target/edge
visibilityt és observations diffet ad. Egy subgoal checkpointként és recovery promptban marad.
Agent loop grounding stallt észlel: három azonos action unchanged screenen recovery notice, ismétlés inputot kér. Consecutive unverified expectations re-grounding notice. Rounds/latency/screenshots/guards/verdicts tool recordban és végső összegzésben.
Screenshots valódi image contentként mennek Ollama, Anthropic, Gemini, OpenAI Chat/ Responses felé, ezért vision model javasolt. Text-only elutasításnál run nem bukik: screenshotok kimaradnak, text observation marad és transcript jelzi degradationt. Csak legújabb képek live contextben, persistent transcript csak textet tárol.
Browser content blocking: uBlock Origin Lite ads/trackers ellen (pinned, checksum, managed policy) és cookie banner auto-dismiss. Ad scripts ártalmatlan local stubok. Agent nem ír credentialt és nem old CAPTCHA/2FA-t, blockernek jelzi. Untrusted taskhoz filtering DNS.
Audio default muted; speaker live stream. PulseAudio null sink monitor raw PCM-ként második
authenticated loopback WebSocketon, azonos ticket/access/cap. Aktuális deploy/work-computer/ image kell.
Take over mouse/keyboardet ad login/CAPTCHA lépéshez, I'm done visszaadja. Full és
view password per session, nem logolt; full csak lease holder. TTL két perc, UI alatt
megújul, más usertől nem vehető el. Allow screen takeover kikapcsolhatja; ekkor
Take over/Teach rejtett, endpoint és request_takeover elutasít, watching marad. Ember
irányításakor computer_observe/computer_act blokkolt. Credential közvetlenül page-re,
nem model/transcript. Régi image view-only.
Teach a task demonstrációt rögzít koordinátákkal és visible indicatorral. Read-only probe element tag/id/label és URL anchorral nevezi a célt — "Click "button#submit (Place order)"" — koordináta csak hint.
Save deterministic, model nélküli playbookot készít: keystrokes textté, click/drag 8
pixel, pause wait, secret/credential-shaped text (8+ char, 3 class) redacted és
request_takeover utasítás. Natural procedure anchored targets first, coordinates hints,
computer_observe reinterpretation, when/inputs/steps/verification, allowed scope a
meglátogatott hosts alapján (kilépés előtt stop/ask), approvals és failure handling.
taught- skillként Skillsben version/edit/share.
Computer runs owner enabled taught skills-t system promptba tölti és listázza. Replay
normál run. Skill chips worked/failed reviewt adnak, dated line a Track record részbe
(newest first, bounded, mindegyik version). Ne írjon valódi jelszót tanításkor; loginig
mutassa, majd request_takeover.
Szolgáltatók, útválasztás és adatközlés
Támogatott útvonalak
| Útvonal | Ellenőrzés és viselkedés |
|---|---|
| Helyi Ollama | Egészséges és az exact modell tool supportot jelez |
| Ollama Cloud | Explicit Ollama routing, cloud disclosure |
| Completion/chat plugin | Aktív, exact modell, current admin credential |
| Anthropic plugin | Work Anthropic messages/tool-use adapter |
| Gemini plugin | Work Gemini contents/function-calling adapter |
| Más kompatibilis plugin | OpenAI messages/tools/tool-choice shape |
Provider type és plugin ID taskon és runon tárolódik. A modellnév önmagában nem választ utat, azonos nevű plugin nem térít el meglévő taskot.
Mit kap a szolgáltató
- Work system prompt, worker skills és runtime limits;
- legutóbbi 30 user/assistant message, max 256 KB;
- tool definitions, assistant tool-call history és results directory/file/search/output/error tartalommal.
A named volume nem töltődik fel egészben, de tool result tartalma model conversationként a választott providerhez megy. Sensitive source előtt ellenőrizze retention, training, pricing és usage policyt.
Credential backendben marad, akár deployment-wide, akár user, és nincs Work containerbe mountolva. Az application-layer credential encryption nem whole-task encryption: conversation/tools/metadata normál DB content, files/dependencies normál volume/PVC. Threat model szerint host access és disk encryption kell.
Remote-provider tájékoztatás
Plugin modellek és :cloud/-cloud Ollama-nevek remote-nak számítanak. Választáskor
dismissible notice magyarázza data flow-t és több billable callt, preference userenként.
Minden route WORK_MAX_AGENT_ROUNDS budgetet használ, default 48, nincs külön 12-es
clamp. Tool-call budget max(128, nyolc per configured round). Kimerüléskor final
no-tools handoff leírja munkát/checks/blockers/remaining steps, majd Needs input,
nem raw exception vagy hamis Complete. Follow-up ugyanabban workspace-ben folytatódik.
Host folder workspace (opt-in)
Dockerben /workspace alapból task volume, így valódi fájlok nem elérhetők. Opcionálisan
host folder bindelhető. Kubernetes elutasítja és task PVC-t használ.
WORK_HOST_WORKSPACES_ENABLED=true
WORK_HOST_WORKSPACE_ROOTS=/Users/you/Projects
WORK_HOST_WORKSPACE_ROOTS :-tagolt roots lista, default server user home. Aktiválva
megjelenik Workspace folder; üresen izolált volume marad.
Path absolute, létező directory és symlink feloldás után configured rooton belüli.
.ssh, .gnupg, .aws, .config, .kube, .docker, .claude, .libre-webui,
node_modules tiltott. Resolved path taskkal tárolt és headerben látható.
A modell valódi fájlokat olvas/ír, a non-root/dropped caps/limits nem állnak közte és a directory között. Kikapcsolva tartsa, roots legyen szűk és version control alatt.
Perzisztencia és runtime-életciklus
| Állapot | Tárolás | Élettartam |
|---|---|---|
| Ownership, cím, provider, status | Libre DB | Task/user törléséig |
| Runs, errors, messages, tools | Libre DB | Task törléséig |
| Workspace files | Docker volume/K8s PVC | Cancel/preview stop/restart után is |
| Rootfs és temporary | Container/Pod | Disposable |
| Preview process | Running sandbox | Efemer, verified health idején |
| Unsaved draft | Browser session storage | Ideiglenes |
Minden task server-generated UUID-t kap. Sandbox/workspace names backendből, soha browser requestből. Runtime resources managed/ownership labels-szel. Reuse/delete előtt label ellenőrzött, más task erőforrása elutasítva.
Sandbox on-demand. File helper idle sandboxot leállít, command befejezés után stop, verified preview futva tarthatja. Workspace restart/recreate után újramountolódik.
Admin named runtime policies-t adhat: runtime image, memory/CPU/PID, Kubernetes workspace size, idle timeout, network default és Work Computer (GUI + browser), Allow screen takeover (és Teach). Task a policy configgal fut; üres mező globalt örököl, policy törlés után recreate-nél globalra tér vissza. Policy csak resource és switch, nem gyengítheti non-root/read-only/dropped/network hardeninget.
WORK_RUNTIME_IDLE_TIMEOUT_MS inaktivitás után leállítja a sandboxot, ha nincs command,
terminal vagy signed preview request, és felszabadítja slotot. Workspace megmarad.
Default harminc perc; a preview és a screen panel ezt jelzi is ("Stops after 30 minutes
without activity"), egy named policy saját értéket állíthat be, 0 pedig kikapcsolja a
sweepet, így a preview explicit stopig fut. Csapat módban a külső worker az alkalmazásreplikák tulajdonában lévő előnézeteket is lejárttá teszi. Egy előnézet tulajdonosi foglalása önmagában nem számít tevékenységnek; az aktív futások, parancsok és csatlakoztatott terminálok vagy képernyők futva tartják a sandboxot. Miután a worker leállít egy előnézetet, a tulajdonos alkalmazás a következő heartbeatnél felszabadítja a runtime befogadási helyét (általában tíz másodpercen belül).
Egy befejezett task (completed, failed vagy cancelled) nem kap véletlenül previewt vagy
screent: a panelek Reopen task and start preview vagy Reopen task and open the
screen műveletet kínálnak, ami előbb visszaállítja a taskot idle állapotba. Az API ezt
tükrözi: a preview/start és a computer/start 409 WORK_TASK_FINISHED választ ad, hacsak
a body nem tartalmaz reopen: true mezőt.
Az idle-stoptól függetlenül egy olyan preview record, amit már semmi nem támaszt alá, körülbelül egy percen belül reconcilálódik: ha a task konténere eltűnt, vagy a benne futó preview folyamat elhalt, a task previewe nincs-ként jelölődik. Egy még induló preview öt percet kap, mielőtt elhagyottnak számítana, egy éppen használt taskot (folyamatban lévő command, csatlakoztatott terminal vagy screen) pedig békén hagy. Ez tartja pontosan az "active previews" számlálót, amelyre a recovery snapshotok, a team backupok és a host updaterek várnak, nehogy egy csendben eltűnt previewnél ragadjon.
Backend startupkor active runs failed és preview state törlődik. Driver egy labeled queryvel listáz: ismert running sandboxot leállít, stopped változatlan, task row nélküli orfánt eltávolít. Ownership labelből, nem névből. Egy instance birtokoljon egy namespace/ daemon erőforrást. Ha cleanup nem bizonyítható, fail-closed és mutable operations blokkolva.
A recovery látható, nem néma. Minden még takarításra váró sandbox egyedileg követett — melyik
konténer, ismert taskhoz tartozik-e vagy orfán, miért függőben (startup, stop-failed,
runtime-unreachable vagy orphan), hány kísérletbe került, mi a runtime utolsó hibaüzenete,
és mikor esedékes a következő kísérlet:
- A System → Work egy Recovery szakaszt mutat, amely felsorolja ezeket a tulajdonos
taskkal és userrel, ahol a task row még létezik, plusz egy Retry now gombot, amely a
backoff kivárása helyett azonnal lefuttat egy sweepet. Ezt a
GET /api/work/admin/recoveryés aPOST /api/work/admin/recovery/retryszolgálja ki, mindkettő admin-only, és mindkettő szándékosan a fail-closed kapu elé regisztrálva: az általuk jelentett állapot pontosan az, ami azt a kaput felemeli. - A Work oldal az általános "runtime unavailable" bannert lecseréli arra, hány sandbox takarítása zajlik, mióta, és mikor esedékes a következő kísérlet. A rendszergazdák ott is kapnak egy Retry now gombot; mindenki más a System → Work oldalra irányítódik.
- A
GET /api/work/capabilitiesugyanezeket a tényeket hordozza strukturáltrecovery: { pending, since, nextAttemptAt }formában a szövegesreasonmellett.
Az automatikus újrapróbálkozások egy hiba után 10 másodperccel indulnak, majd egyperces felső határig duplázódnak, így egy valóban eltűnt runtime nem kap folyamatos ostromot, amíg egy operátor javítja. A manuális retry figyelmen kívül hagyja a backoffot, a legalsó értékről indítja újra az ütemet, és soha nem indít egy már futó mellett második sweepet.
Hálózati viselkedés
Named policy nélküli task network-enabled. Admin policy default off lehet, létrehozó kiválasztja. Nincs külön per-task switch; policyváltozás recreate után érvényes.
Dockerben dedicated managed bridge (libre-webui-work, WORK_NETWORK_NAME) ICC off
(com.docker.network.bridge.enable_icc=false): sandboxok egymást és default bridge-en
telepítési containereket nem érik el. Azonos nevű nem managed network esetén Libre elutasít.
Kubernetes ugyanazt a labelt, default-deny NetworkPolicyt, preview ingresset és internet
egresst használ work.networkPolicy.blockedEgressCidrs kivételével. Csak CNI enforcement
esetén hatékony; lásd Kubernetes.
Külső egress marad package/Git/API miatt; nem outbound firewall. Elérhető lehet Docker host, LAN, internet, metadata endpoint.
Egress policy hooks
WORK_RUNTIME_DNS(Docker) — vesszős resolver IP-k minden hálózatos sandboxon (--dns), filtering resolverrel name allow/deny. Nem cím elutasított, nincs flag injection.- Host/upstream firewall a managed bridge subneten.
WORK_NETWORK_NAMEelőre létrehozott networkre, managed label és ICC-disabled ellenőrzéssel.
DNS nem blokkol literal IP-t; garanciához host/cluster/upstream firewall. Work nem akadályozza automatikusan az adatküldést. Csak trusted user és offline named policy; nincs global env defaultváltó.
Network access nem ad credentialt. Nincs SSH key, cloud credential, browser profile,
home vagy socket mount. /workspace-be írt adat továbbítható. Sandbox traffic külön a
model traffictól, amelyet backend küld az explicit route-ra.
Sandbox biztonsági határ
Docker container:
- non-root
1000:1000, working/workspace, csak task volume; - read-only rootfs, bounded
/tmp, all caps dropped,no-new-privileges, non-privileged init; - CPU/memory/process/command/output limits;
- swap pinned (
--memory-swap=--memory); - managed network ICC off vagy no network;
- csak preview port host loopbackon.
Minden reuse előtt docker inspect újraellenőriz és ai.libre-webui.policy label hash.
Upgrade előtti policy container destroy/recreate.
Kubernetes megfelelő Pod security: non-root, read-only, RuntimeDefault, no escalation,
dropped caps, storage/resource limits, no ServiceAccount token, task PVC. Labels/fingerprint ellenőrzött.
További részletek: Kubernetes.
Path validation tilt absolute, traversal, backslash, NUL és túl hosszú. File helper real path/symlink escape ellen, writes temp + atomic rename.
Ez nem VM vagy malware lab; host kernel közös, runtime/image/dependency/kernel vuln átlépheti. Docker named volume önálló quota nélkül, ezért figyelje storage-t és host limiteket. Kubernetes PVC quota a provisionertől függ.
Docker production hardening checklist
Kubernetes ellenőrizze RBAC, Pod security, StorageClass és CNI policyt a Kubernetes útmutató szerint. Az app nem tud host firewallt, storage quota-t vagy daemon privilege-et kikényszeríteni.
1. Docker control izolálása
A fő containernek daemon control kell Work létrehozásához; socket control-plane credential, app compromise host compromise lehet.
docker-compose.socket-proxy.yml kiviszi a socketet a Libreből. Internal proxy tartja
/var/run/docker.sock-ot és csak containers, images, volumes, networks, exec, info API-t
enged; swarm, secrets, configs, build, commit, system tiltott. Libre
DOCKER_HOST=tcp://docker-socket-proxy:2375 felé megy mount/group nélkül; CLI, Terminal
és diagnostics követi. Proxy surface-t szűkít, blast radiust nem: create container bind-mountolhat hostot.
Erősebb: dedicated VM, vagy rootless dedicated daemon/separate runtime host. Ellenőrizze ownership, preview, cleanup, terminal. Ugyanaz a rootful socket read-only mounttal sem read-only API.
2. Sandbox-host management blokkolása
ICC off csak sandbox-sandboxot tilt, host services-t nem. Inspectálja bridge-et/subnetet:
docker network inspect libre-webui-work \
--format 'id={{.Id}} subnets={{range .IPAM.Config}}{{.Subnet}} {{end}}'
ss -lntup
Persistent firewall tiltsa bridge-ről SSH, Docker API, DB, monitoring/admin portokat.
Teszteljen disposable containerből és allowed downloads-t, majd persistálja. DOCKER-USER
forwardot kezel; host destinationhez INPUT szabály is kellhet.
3. Kimenő célok korlátozása
Tiltsa cloud metadata, private infrastructure és client LAN ranges értékeket, kivéve
explicit igény. WORK_RUNTIME_DNS filtering resolver és host/upstream firewall együtt.
DNS literal IP-vel, HTTP proxy direct connectionnel megkerülhető; containeren kívül enforce.
Külön named policies: offline, package-registry-only, open egress. Policy network attachot, külső firewall destinationt kezel.
4. Valódi storage quota
CPU/memory/swap/PID nem korlátozza volume-ot. Több kliensnél XFS project quota, quota-backed
logical volume vagy size-limited volume/PVC driver. Docker local ext4 nem kap megbízható per-volume quotát dokumentált mérettől.
Monitorozza ai.libre-webui.managed=true volumes-t és Docker data rootot, alert full előtt,
tesztelje failure módot. UI counter/du csak warning, nem enforcement.
5. Deployed policy ellenőrzése
Image/daemon policy változás után disposable Work task és docker inspect: non-root,
read-only root, caps dropped, no-new-privileges, memory/swap/CPU/PID, csak task volume,
expected network. Fő Libre mounts és public ingress csak authenticated proxy/tunnel, nem accidental Docker/preview port.
Preview biztonság és elérhetőség
Docker dynamic loopback port, Kubernetes Pod IP in-cluster. Model/browser nem választ
upstreamet. Libre signed capability URL exact task/endpointra, minden requestnél ellenőrzi
running állapotot és /api/work/previews alatt HTTP/WebSocket proxy. Stop/restart revokál URL-t.
Response eltávolít Libre credentials/upstream cookies. HTML iframe sandbox és CSP scripts/ forms/modals/downloads engedélyezésével, same-origin nélkül, külön tabban is. Generated kód untrusted és egresszel elküldheti workspace/browser inputot. Preview URL rövid secret, ne ossza meg.
Browser a Libre public origin proxyját tölti, ezért remote/HTTPS működik port/POD IP és
mixed-content nélkül. Reverse proxy őrizze WebSocket upgrade-ot /api/work/previews/ alatt.
Main app csak saját origin és Turnstile frame. Preview bypassolja Helmet policyt streaminghez és szűkebb sandbox CSP-t alkalmaz. Cross-origin embedder off, mert dev server headers hiányzik.
Telepítési mátrix
| Deployment | Runs és files | Preview |
|---|---|---|
npx libre-webui local | Docker telepítve/fut/elérhető | Signed origin proxy |
| Source local | Ugyanazok a követelmények | Dev API port 3001 |
| Electron | External backend, nincs saját runtime | Annak signed proxyja |
| Bare metal/VM remote | Docker a hoston | HTTP/WebSocket reverse proxy |
| Standard Docker Compose | Docker Desktopon alapból támogatott: image CLI, Compose socket mount, a Work-portok host.docker.internal felé mennek. Natív Docker Engine-hez kell még egy elérhető, nem nyilvános WORK_PREVIEW_BIND | Azonos public origin |
| Kubernetes/Helm | --set work.enabled=true, Pods/PVC/RBAC/default-deny, socket nélkül; Kubernetes | Signed proxy Pod IP-re |
Work futtatása, amikor a Libre WebUI Dockerben van
Minden Compose file engedélyezi: image Docker CLI, socket mount. Docker Desktop a
szállított routing-alapértelmezésekkel működik; natív Docker Engine esetén a
WORK_PREVIEW_BIND értékét is testvérkonténerekből elérhető, nem nyilvános
host-interfészre kell állítani, ahogy lent szerepel.
Task containerek a Libre container siblings elemei, host docker ps listában és
azonos lifecycle cleanup. Socket root-equivalent host control. Következmény:
minden Libre admin gyakorlatilag Docker host admin. Operator felel daemon/network/
lifecycle/backup/access következményért. Socket sor törlése kikapcsolja Worköt.
Socket web appból kivételéhez docker-compose.socket-proxy.yml; internal proxy csak
szükséges API-t enged DOCKER_HOST útján. Lásd Docker control izolálása.
Három feltétel:
- Docker CLI image-ben. Customhoz
docker-clivagyWORK_DOCKER_COMMAND. EgyébkéntThe "docker" CLI is not installed…. - Socket mount. Egyébként
No Docker daemon is reachable…. - Backend user socket groupban. Image
nodejsuid 1001, socketroot/docker, Composegroup_add: ['${DOCKER_GID:-0}']. Desktop default jó, Linux saját GID. EgyébkéntThe Docker socket is mounted but the Libre WebUI user cannot open it….
# Read the socket's group as seen INSIDE a container. A macOS host reports a
# different value, because Docker Desktop proxies the socket through a VM.
echo "DOCKER_GID=$(docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
alpine stat -c '%g' /var/run/docker.sock)" >> .env
docker compose up -d --force-recreate
Preview ports host loopbackon, signed proxyval HTTP/WebSocket, HTTPS/tunnel mögött efemer port publikálása nélkül. Restrictive sandbox, stop/restart régi URL-t revokál.
Docker backendnél publishing/connect address eltérhet. WORK_PREVIEW_BIND=127.0.0.1,
WORK_DOCKER_PUBLISHED_HOST a containerből elérhető host (host.docker.internal Desktop).
A szállított Compose-profilok mindkét értéket beállítják és a hostnevet leképezik. Natív
Linuxon a WORK_PREVIEW_BIND értékét a Docker-híd átjárójára (vagy más kifejezetten
elérhető, nem nyilvános host-interfészre) kell felülírni; az alias önmagában nem éri el a
host loopbacket. Ezeket a nyers, rövid életű portokat soha ne kösse 0.0.0.0 címre.
Concurrency: WORK_MAX_ACTIVE_RUNTIMES_PER_USER default 2, global 3; capabilities
limits/occupancy. Csak erőforrással emelje.
Kubernetesnél work.enabled=true, nem node socket; chart RBAC/namespace/policies/Pod/PVC.
Runtime konfiguráció
| Változó | Alap | Cél |
|---|---|---|
WORK_RUNTIME_BACKEND | docker | docker vagy kubernetes |
WORK_RUNTIME_IMAGE | node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3 | Sandbox image |
WORK_DOCKER_COMMAND | docker | Docker CLI |
WORK_COMMAND_TIMEOUT_MS | 120000 | Timeout |
WORK_MAX_OUTPUT_CHARS | 50000 | Output max |
WORK_MAX_AGENT_ROUNDS | 48 | Round budget |
WORK_MEMORY_LIMIT | 2g | Memory |
WORK_CPU_LIMIT | 2 | CPU |
WORK_PIDS_LIMIT | 256 | Process |
WORK_PREVIEW_PORT | 4173 | Internal preview |
WORK_PREVIEW_BIND | 127.0.0.1 | Host bind |
WORK_DOCKER_PUBLISHED_HOST | same as WORK_PREVIEW_BIND | Backend dial host |
WORK_COMPUTER_SCREEN_PORT | 6080 | Screen bridge |
WORK_COMPUTER_AUDIO_PORT | 6081 | Audio bridge |
WORK_RUN_LEASE_WAIT_MS | 60000 | Lease wait |
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL | 3 | Global active |
WORK_MAX_ACTIVE_RUNTIMES_PER_USER | 2 | Per admin |
WORK_MAX_TASKS_GLOBAL | 500 | Global tasks |
WORK_MAX_TASKS_PER_USER | 100 | Per admin tasks |
WORK_NETWORK_NAME | libre-webui-work | Managed bridge |
WORK_RUNTIME_DNS | unset | Resolver IPs |
WORK_DOCKER_SOCKET | DOCKER_HOST if unix:// or tcp://, else /var/run/docker.sock | Terminal engine |
WORK_TERMINAL_MAX_SESSIONS_PER_TASK | 2 | Terminal count |
WORK_TERMINAL_IDLE_TIMEOUT_MS | 900000 | Terminal idle |
WORK_RUNTIME_IDLE_TIMEOUT_MS | 1800000 (30 min) | Sandbox idle |
WORK_K8S_NAMESPACE | libre-webui-work | Pod/PVC namespace |
WORK_K8S_STORAGE_CLASS | cluster default | StorageClass |
WORK_K8S_WORKSPACE_SIZE | 5Gi | PVC size |
WORK_K8S_POD_READY_TIMEOUT_MS | 900000 | Pod ready wait |
WORK_K8S_POD_GONE_TIMEOUT_MS | 60000 | Pod gone wait |
Productionben fix image version/digest. Mutable tag tools és security boundary változást okozhat.
Az interaktív terminal kliens nem használ tcp:// endpointot aktív DOCKER_TLS_VERIFY mellett.
Run/preview/file/command/recreate közös capacity accounting. Nested same task nem extra.
Limit felett HTTP 429.
Fix protocol és UI korlátok
| Elem | Korlát |
|---|---|
| Új task/run message | 65 536 char és UTF-8 byte |
| Model ID | 500 char/byte |
| Plugin provider ID | 200 char |
| Active runs/task | 1 |
| Command text/timeout | 20 000 char / 1–600 s |
| Preview ready | 15 s |
| File read/write | 2 000 000 UTF-8 byte |
| Directory listing | első 1 000 |
| Message page/persisted | 200 és 1 000 000 byte / 100 KB |
| Model context | utolsó 30, max 256 KB |
| Tool output | ~20 000 char + marker |
| Highlight/format | 8 000/400 és 100 000/4 000 |
| Git status/diff/history/stage/msg | 2 000 000 / 600 000 / 20 / 200 / 4 000 |
| Agent loop | default 48 WORK_MAX_AGENT_ROUNDS |
| Tool-call budget | max(128, configured rounds × 8) calls |
File API UTF-8 text, nem binary; 2 MB felett nem nyitható.
API-összefoglaló
Minden endpoint /api/work alatt, authentication és current Work access kell. Default
admin-only; admin normál task operationt aktív users számára megnyithat. Host-folder és policy admin-only.
| Method | Path | Cél |
|---|---|---|
GET | /capabilities | Runtime/provider és limits |
GET | /admin/recovery | Függő sandbox-takarítások (admin) |
POST | /admin/recovery/retry | Azonnali sweep a függő elemekre (admin) |
GET | /tasks | Tasklista |
POST | /tasks | Task és első async run |
GET | /tasks/:id | State és recent messages |
GET | /tasks/:id/messages | Régi üzenetek |
PATCH | /tasks/:id | Rename/model route |
DELETE | /tasks/:id | Task/workspace delete |
POST | /tasks/:id/runs | Follow-up run |
POST | /tasks/:id/messages | Message active run alatt |
GET | /tasks/:taskId/runs/:runId/events | SSE |
POST | /tasks/:id/cancel | Cancel |
GET | /tasks/:id/approvals | Függő jóváhagyások + Auto Review |
PUT | /tasks/:id/approvals | Taskonkénti jóváhagyás kapcsolása |
POST | /tasks/:id/approvals/:approvalId | Döntés (egyszer/mindig, elutasítás) |
DELETE | /tasks/:id/approval-rules/:ruleId | Always-allow szabály törlése |
GET | /computer/setup | Work Computer setup status |
POST | /computer/setup | GUI build és policy |
POST | /tasks/:id/computer/start | Computer start |
GET | /tasks/:id/computer/control | Driver/takeover request |
POST | /tasks/:id/computer/control | Take over/renew |
DELETE | /tasks/:id/computer/control | Visszaadás |
POST | /tasks/:id/computer/teach | Demonstration save |
POST | /tasks/:id/computer/anchor | Click element resolve |
POST | /computer/skills/:slug/trace | Worked/failed trace |
GET | /tasks/:id/files | Directory list |
GET | /tasks/:id/file | Text read |
PUT | /tasks/:id/file | Text save |
GET | /tasks/:id/git | Git status/history |
GET | /tasks/:id/git/diff | Diff |
POST | /tasks/:id/git/init | Init |
POST | /tasks/:id/git/stage | Stage |
POST | /tasks/:id/git/commit | Commit |
POST | /tasks/:id/git/branches | Branch |
POST | /tasks/:id/git/switch | Switch |
POST | /tasks/:id/preview/start | Preview start |
POST | /tasks/:id/preview/stop | Preview stop |
Task ID authenticated ownerhez ellenőrzött. Account status/role/access minden requestnél
DB-ből, ezért revoke régi JWT mellett is érvényes. Update schema belső networkEnabled
mezőt tart compatibilityhez, UI nem mutatja; named runtime policyt válasszon, ne raw fieldet.
Törlés, fiókváltozások és backup
Task törlése
- Retiring state, nincs új mutáció.
- Active run cancel, sandbox stop.
- Ownership labels validáció.
- Container/Pod és volume/PVC delete.
- DB task törlés cascade runs/messages.
- Browser drafts API-siker után törölve.
Cleanup hiba esetén DB row marad és error jön repair/retryhez, nem hagy untracked sandboxot. Run/preview stop nem delete, volume/conversation marad.
Admin lefokozás és user törlés
Role revoke előbb persistálódik. Minden Work request current role/access check. Backend felfüggeszti taskokat és abort/stopot próbál. Cleanup hiba mellett hozzáférés továbbra is revoked és role update hibát jelez. Más user törlése előbb minden Work resource-t eltávolít; external cleanup hiba esetén user row marad ownership metadata miatt.
Teljes task backup
- Libre DB ownership, resource names, provider routing, runs, messages, activity; és
- minden
ai.libre-webui.managed=trueDocker volume/Kubernetes PVC a fájlokkal.
Disposable container/preview nem kell. Konzisztens backuphoz új Work stop és backend
stop, majd volume/PVC snapshot. DB és matching workspace együtt vissza, exact nevekkel és
ai.libre-webui.task=<task UUID>, ai.libre-webui.managed=true labels. Csak file copy
nem tart labels-t; csak DB fájl nélkül, csak storage ownership nélkül. Encrypted
credentials esetén data directory és key is.
Lokalizáció és arab RTL
Work mind a 25 locale-ra lefordított: English, Arabic, Bengali, Czech, Danish, German, Spanish, French, Hindi, Indonesian, Icelandic, Italian, Japanese, Korean, Malay, Dutch, Polish, Portuguese, Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese, Chinese.
Arabic lang="ar", dir="rtl" render előtt. Sidebar jobbra, Conversation jobbra,
Workspace balra, icons mirror, tab/resize RTL. Technical tartalom LTR: code, paths,
model IDs, commands/logs, tool output/metadata és code blocks. Természetes szöveg auto direction.
Hibaelhárítás
Runtime unavailable npx mellett
npx libre-webui hoston fut, de Dockert nem telepít. docker info ugyanazzal OS userrel;
ha hiányzik/nem éri el, install/start/permission fix, Work reload. Ollama vagy active
plugin model/credential is kell.
Runtime unavailable Dockerben vagy Kubernetesben
Standard Compose image-ben CLI és socket van. Panel megnevezi missing CLI, mount vagy
group hibát; utóbbinál DOCKER_GID és recreate. Lásd
Work Dockerben.
Kubernetes: --set work.enabled=true, runtime kubernetes, Pods/PVC, node socket nélkül;
lásd Kubernetes.
Nincs Work-kompatibilis modell
Ollama tools; pluginnál type completion/chat, active, exact model map, admin key és tool
calling. Fallback provider nincs.
Package install vagy remote Git hiba
Named policy engedjen hálózatot; nincs per-task toggle. DNS, proxy, firewall/NetworkPolicy, registry, certificate, runtime, upstream és image command ellenőrzése. Git lap local-only; remote csak Terminal/model felületen szándékos network/credential policy mellett. Ne illesszen long-lived tokent workspace-be.
Agent limitnél megáll
Round vagy derived tool budget elfogyott. Work final no-tools handoffot kér, Needs
input marad, nem állít completiont. Follow-up ugyanabban workspace-ben, vagy tudatosan
emelje WORK_MAX_AGENT_ROUNDS-ot megfelelő resource/cost mellett.
HTTP 429 indításkor
Runtime/task admission limit. Várjon stopra, töröljön obsolete taskot vagy emelje WORK_MAX_* értéket.
Preview nem ready
Command fusson, bind 0.0.0.0, WORK_PREVIEW_PORT 15 s alatt. Üres command automatikus
package.json dev vagy index.html, egy nested appal. Multiple/no entry esetén explicit
command /workspace-ből, pl. cd <app-directory> && ....
Preview serveren jó, remote browserben nem
Signed proxy build és restart régi loopback URL cseréjéhez. Hot reloadhoz WebSocket
upgrade /api/work/previews/ alatt. Docker port loopback, firewall opening nem kell.
Fájlok maradnak, preview leáll
Várt cancel/restart/stop/readiness után, vagy a periodikus reconciliáció miatt, amely stoppedre jelöli a previewt, amint a folyamata vagy a konténere eltűnt. Preview efemer, volume tartós; reopen és start.
Fájl nem nyílik/menthető
UTF-8 text max 2 MB. Conflict esetén reload. Highlight plain text 8 000/400 felett, format limit 100 000/4 000 csak dokumentált típusokra.
Work sandbox recoveryt jelez
Startup/teardown nem bizonyította stopot. Fail-closed, automatikus retry 10 s-nál indulva, egyperces backoffig.
Nyissa meg a System → Work → Recovery oldalt a pontos függő elemekhez: konténernév,
tulajdonos task és user, ahol a task row még létezik, ok (Running at startup,
Stop failed, Runtime unreachable vagy No task record), kísérletszám, a runtime
utolsó hibája és a következő ütemezett kísérlet. Maga a Work oldal is ugyanezt mutatja
egy sima "runtime unavailable" felirat helyett.
Állítsa helyre a Docker/Kubernetes access-t, majd nyomja meg a Retry now gombot a backoff kivárása helyett azonnali sweephez; ugyanez a gomb megjelenik a Work oldalon is rendszergazdáknak. Ha elemek megmaradnak, nézze meg a backend logot a last-error mögötti driverhibáért. Ne töröljön DB row-t labeled resource reconciliation előtt — ez egy helyreállítható taskból orfán konténert csinál.
Task delete hiba
Runtime legyen elérhető. Várt ai.libre-webui.task label nélküli conflict resource
elutasított, nem törölt. Ownership konfliktus javítása után retry.
Biztonsági összegzés
- Default admin-only; mindenkinek megnyitva minden active account sandbox operator. Host-folder mindig admin-only.
- Backend kontrollálja Docker daemont vagy Kubernetes namespace-t.
- Container nem VM.
- Offline policy nélkül egress van; destination restriction operator dolga.
- Work volume önálló quota nélkül.
- Git local-only és remote credential nélkül.
- Host firewall, daemon isolation, outbound és quota operator control.
- Remote provider tool results-et és sok callt kap.
- Preview loopback signed/revocable proxy URL-en.
- Compose Docker runtime, Kubernetes
work.enabled=truePod/PVC. - Teljes backup DB + Work volumes.