What's new in AI Cockpit.
use_supervisor in the Cockpit data folder, the three agent loops run as services of a small native program instead of tmux sessions: a loop that dies is restarted (it used to leave a session that still looked “running” and requests nobody answered), Stop interrupts the agent’s process group, and “open session” shows the live log (in the native window too). Tmux stays the default and the fallback. Proven with a real supervisor, the real agent loop and a stand-in CLI: Stop mid-request, a killed loop, and the next request all behave.%%CREATE%%, %%READ%%, %%DELETE%%, %%LIST%%, %%FETCH%%, %%SEARCH%%, %%WORKER%%, %%TOOL%%, %%PROPOSE%% and the library markers run inside the native loop, with the same results as the shell and PHP versions (148 checks, including every request sent to Cockpit’s own pages). Found on the way: the loop’s private key was also sent to a catalog entry’s address in the PHP version when that address sat under Cockpit’s own; it is now sent only to the four pages it is meant for. With the native loop on, chat, history and markers need no PHP at all.sup · native, sup · shell, tmux · shell), read from the running processes, not from the switch files. A chip shows whether the native engine is on and whether the scheduler tick is a supervised job or cron; hover it for the details. Meant for the period while the native parts run next to the shell ones.use_native_loop in the Cockpit data folder (or use_native_loop_ollama and its claude / gemini twins for one agent only), each agent’s queue loop is the engine’s aicengine loop instead of the shell script: request details, supplier and catalog, capabilities and auto-route lists, prompt, the agent run (Claude, a catalog CLI, the free relay, Gemini, local Ollama), clean-up, markers, saving the chat and the done signal, with none of jq, sed, bc, python3 or curl. Proven against the shell loop on thirteen requests (answer, a hash of the whole prompt, saved chat, created files and log lines identical). The capabilities and auto-route step is also available to the shell loop through the engine (69 cases). Delete the file to go back.%%FETCH%%, %%SEARCH%%, %%WORKER%%, %%TOOL%% and %%PROPOSE%% were answered “Authentication required” every time, because the agent loop calls those pages without a login. The loop now carries a private key kept in your data folder, and the pages accept it only from this machine, only for those few actions, and only as a person who exists (with their own role). %%PROPOSE%% also used action names the library page did not know; fixed. A V1 loop now calls V1’s pages instead of V2’s.COCKPIT.md, your profile, the global directives, the identity line and the layout come out byte for byte the same as from the shell version (156 cases, including cut points, broken JSON files and NUL bytes), without jq. A prompt that was exactly -n or -e used to vanish; fixed in both paths.cockpit_sup_autostart.sh install starts the supervisor, and with it the agent loops, by itself at every login as a systemd user service (no administrator rights; boot-time start needs one loginctl enable-linger that you run yourself). The Jobs panel’s minute tick becomes a supervised job too, so it runs even without a crontab line.%%CREATE%%-style commands now also exist as small native programs, each checked against the Bash on the same inputs (more than 290 comparisons, your own chats included). Switch on with an empty use_engine file in your data folder; delete it to go back. The Setup and User Guides describe it.queue/ and responses/ folders and serve the files in them — the agents’ replies — to anyone on your network, without a login. Both are now refused, and so are folder listings under Cockpit..tar.gz of your settings, library, chats and projects. Test restores it into a scratch folder and checks every file against its checksum; Restore first saves the current state, so a restore can be undone. Rebuildable bulk (the Shelf index, Python environments) is left out, and API keys only go in if you tick them. Archives carry a data version, so a later build can migrate older ones.COCKPIT.md, which the installer adapts on every machine.stat -c is GNU-only and a failed command
substitution under set -e kills the script; the Homebrew httpd.conf was looked for at two paths
that do not exist, so the port move, the Cockpit alias and the PHP module were all skipped; and ${var,,} is
bash 4 syntax while macOS still ships bash 3.2, which killed the install and would have killed the agent loop.
All fixed, and the build now refuses to ship bash-4-only syntax at all — but the confirming end-to-end run has not
happened yet, so macOS stays listed as unfinished.curl_close), and reported its liveness into a table the
phone's rig list does not read. All five fixed; the poller now authorises with a revocable token and
no password is stored anywhere.php-apache wiring and the expired http account, openSUSE’s SELinux and wwwrun:www, KDE and MATE shortcuts, the terminal and file-manager launchers of every desktop. A machine with no browser, file manager or terminal is offered them on a setup page; with no browser at all the Cockpit window itself becomes the system browser (cockpit_shell --browser).install_windows.ps1 had never run on a Windows machine; the first run found it unreadable by Windows PowerShell (UTF-8 quotes), then blind to wsl.exe’s UTF-16 output, then it wiped the distro’s systemd switch. Fixed, plus what the run taught: zstd for Ollama’s installer, .wslconfig so WSL does not stop Cockpit a minute after the last terminal closes and so localhost reaches it from Edge (mirrored networking), a reboot offer, the exact next command printed, and an AI Cockpit shortcut in the Start menu and on the Desktop. The Cockpit window, the setup wizard, gnome-terminal and Nautilus all open as ordinary Windows windows through WSLg..9 made PHP call the chat corrupt (export failed, history skipped it); image generation died on the 4 GB card while an Ollama model was loaded — Ollama is now asked to drop it first; the transcriber never found whisper (an undefined variable); proposal cards, the chat list and history hits showed server time; scratch chats leaked into history; tool inputs typed as relative paths; right-to-left answers left-aligned; and the About window still said AGPL (the licence is Apache-2.0 with conditions).v2.0.0:87); the setup window is dark on MATE too; the rig line names the OS, desktop, terminal and file manager; the account and clock cards explain themselves on hover; response labels and the status pills name the supplier actually in the slot (opencode, Dual) instead of the slot’s old name; an installed CLI whose version probe fails under the web server (opencode) no longer reads “not installed”; the help, tour and User Guide describe the sessions card’s window controls.install_cockpit.sh opens a wizard (ckdialog: Free Pascal + GTK 3, ~1000 lines, in the bundle): edition, install user, projects folder, optional CLIs, models sized to the hardware it detects, media tools, desktop shortcut, logins — every choice first, a summary, one Install. The system password is asked once, in a dialog; a progress window then follows the install log phase by phase and says Done. Light or dark to match the desktop, with a ☾/☀ switch. Over SSH the same questions are asked in the terminal, up front.~/cockpit-install.log.paths.json had no home), the human check blank in the native window, a hidden prompt that hung the install, a fresh install that named the Card 3 model picker “Dual mode off”, a Keep list that was never read back, LocalAI pulls that aborted the run on an already-present model, and the terminal buttons doing nothing on Fedora (Ptyxis, GNOME Console and the rest are now recognised, and a missing terminal is reported).dnf package set, httpd/apache account, home-folder bits, a posix_* polyfill for PHP builds without it, and one SELinux change — only the web-server domain (httpd_t) is made permissive so it can run your agents; everything else stays enforcing. The Ollama card pulls a model the first time it is asked for it and shows Ollama’s own error instead of an empty bubble. The boot splash follows light/dark like the window.cockpit_shell: GTK 3 + WebKitGTK, 400 lines of Free Pascal, Apache-2.0 — sources in the bundle and on the Download page). The window’s close button, Alt+F4 and the dock’s Quit all open the same Leaving Cockpit dialog as the Exit button: kill jobs, stop sessions, wait, or leave. The window closes only when you say so. Outside links open in your browser; F11 fullscreen, F5 reload; the local login is remembered. Machines without the WebKitGTK runtime fall back to a browser window.COCKPIT_KIOSK=1), and checks the shipped files against the build manifest before loading the app — a changed index.html means it refuses to run rather than trusting the page to report on itself.bw CLI: the master password is typed into bw’s own prompt, never into Cockpit.COCKPIT_KIOSK=1), and verifies the shipped files against the build manifest before loading the app.cockpit_auth) and the live server stay proprietary. Full text on the Licence and terms page, and in the app (logo → Terms). The Terms of Use name no jurisdiction and measure lawful use against the law that applies to you.cockpit-guard, a small service that logs any change to a shipped file, flags it in the app at once and puts the file back.cockpit_tools tmux session (the card’s open button shows them live), with an installed-check before Run, a long-run watchdog, Stop that stops everything, output files with the tree’s permissions and open-folder / open-file buttons in the chat. The local file chooser now uploads the file and fills the server path.paths.json; ftpush’s progress percentage was always 0 %.COCKPIT_NO_TELEMETRY=1 before running.cockpit-start / cockpit-stop commands; launching shows a branded splash, then opens Cockpit in a clean app window. Install both versions and AI Cockpit V1 (No-Account) gets its own menu entry and cockpit-v1-start — only one version runs at a timeinstall_cockpit.sh. The 2026-08-23 overhaul (V1/V2/both, offline, hardware-aware, telemetry, guided prompts) was already written, but the download had kept serving a pre-overhaul installer — so anyone who downloaded before today got the old one. Fixed: re-download to pick it upcd cockpit → sudo bash install_cockpit.sh, which installs from the bundled dist/cockpit_v2.tar.gz / cockpit_v1.tar.gz. Both the automated and manual-copy paths in the Setup & Manual guides were updated to match/cockpit and V1 at /cockpit-v1 side by side. The edition is now derived from the version instead of a separate question — V2/both use the full account edition (needs at least a free account, no card), V1 uses the fully-local stand-alone editionEnter = …), and supports proper line editing — backspace, arrows, ctrl-u — so typos are fixableunzip, ping, lspci, and GNU coreutils/grep/sed on Alpine, etc.) is installed explicitly on apt/nala, pacman, dnf, zypper, and apk, plus the Docker imageCOCKPIT_NO_TELEMETRY=1), opt-in for V1 (superseded 2026-09-11 — see the entry above)edition: "full", but the endpoint receiving it only accepted "v2" — every real install's completion signal was silently rejected. New installs now register correctly; installs completed before this fix were never counted and can't be recovered retroactivelyinstall_windows.ps1 hardened: added a Windows-build preflight check (fails with a clear message instead of a confusing error three steps in on unsupported Windows versions), wrapped both WSL detection calls so a never-initialized WSL install no longer crashes the script, fixed the Linux-user-exists check to key off the actual exit code instead of output text, and switched the generated sudo password to a cryptographically secure generatorinstall_windows.ps1 syntax-checked on a real Windows runner, install_cockpit.sh --unattended run end-to-end on a disposable Linux runner (exit 0)cockpit_install.tar.gz) — the installer asks which you want partway through instead of shipping two separately-maintained tarballs. Stand-alone's zero-network-calls promise is now enforced by a runtime flag file, checked before the one call that used to be edition-specific (an anonymous first-account-created ping)nala update flag mismatch, a home-directory permission bit that could block service accounts (ollama) from starting, and a missing group membership that could deny ollama write access to its own models foldercockpit_start.sh (self-gates on entitlement), and the Account panel has a real "Everywhere — pair a device" button linking to the phone-pairing pageollama pull/local-ai run commands and Hugging Face URLs for every model in the pool, organized by RAM/VRAM tier and what each one is good/weak at. Published on both ruggi.site and maestro.ruggi.site (Backups pages and its own dedicated page)cockpit_auth binary buttons are gone — that section now just explains the manual (non-scripted) install path and links back to the real tarball/zip downloads. Fixed a spacing bug that pinned the Docker card too close to the section above itimages field now flows end-to-end from the combo API through to both Ollama's and LocalAI's actual wire formats. No shipped combo uses it yet; this is the plumbing a real one needsdual_model.php's model-listing endpoint was gated behind Dual mode (so it errored whenever Card 3 wasn't literally set to "Dual") and, underneath that, used shell_exec('ollama list'), which silently fails under most web-server users. Both fixed — model listing now works regardless of Card 3's provider, via Ollama's own HTTP APIcockpit_auth licensing binary was missing from every downloaded tarball (see the notice above) — also added .zip downloads and Docker edition selection (v2/v1) this week