GTK4 and libadwaita, not a web view
The shell links the GTK stack your system already has and picks up your fonts, your icons, and your cursor. The cross-platform build draws its UI in a WebKitGTK web view; this one has no web view at all.
One local MCP gateway for every AI client, in a real GTK4 shell that follows your Omarchy palette, tiles like every other Hyprland window, and updates through pacman. No web view, no bundled browser engine, no self-updater. Free and open source, same as always.
For Arch and current-GTK distros. Ubuntu 22.04 and Debian 12 keep the .deb and AppImage - nothing changes there.
A quick tour in the native shell: servers, catalog stacks, clients, and agent permissions - in the active Omarchy theme, the whole way through.
The shell links the GTK stack your system already has and picks up your fonts, your icons, and your cursor. The cross-platform build draws its UI in a WebKitGTK web view; this one has no web view at all.
It reads $XDG_STATE_HOME/omarchy/current/theme/colors.toml and paints itself with your active theme. Switch themes and the app follows. Every field has a fallback, so it still renders correctly off Omarchy.
Tiling, floating, and geometry belong to the compositor. No centering workarounds, no forced sizes, no fighting your binds. It tiles and swaps workspaces like anything else on your desktop.
StatusNotifierItem, like every other tray app. A hidden launch only happens when a live SNI watcher is present, so the app cannot start invisible with no way to reach it.
Secrets go to the Secret Service over D-Bus - gnome-keyring on Omarchy, KWallet on KDE. They never land in Toolport's registry, and never in plaintext. Headless boxes with no keyring can switch to an encrypted file backend by setting TOOLPORT_SECRET_KEY.
There is no self-updater in this build. New versions arrive with pacman -Syu or the Omarchy update flow, signed, like everything else on your system.
Measured by driving the real gateway over stdio against a stub MCP server. Reproduce any of it yourself - that is the point of writing the numbers down.
The audit claim is the one worth verifying: ~/.config/Toolport holds the rows, the columns are listed above, and the secrets you passed stay out of them.
Scoped clients each get their own bearer token and server scope. Verified: the admin token saw 8 tools, the scoped token saw its 4, and an out-of-scope call was refused by name. This is the Open WebUI story.
A folder maps to a profile. The gateway reads the project root the client reports and switches automatically. Longest path wins, so a nested repo overrides its parent.
The gateway speaks MCP streamable-HTTP with session ids, so remote clients keep state without a stdio pipe.
Every tool gets an OpenAPI path, so anything that can call an HTTP API can reach your servers without speaking MCP.
The guard hook runs in observe mode to show what would be blocked, or enforce mode to block it, from the same rule set as every other client.
Agent permission rules are read back per client rather than write-and-trust, so you can see exactly what each agent actually loaded.
The package is toolport. It ships through Toolport's own pacman repository, so updates arrive with your usual pacman -Syu or the Omarchy update flow.
# Arch, Omarchy, EndeavourOS, Manjaro
curl -fsSL https://toolport.app/install.sh | bash That adds the repository, trusts the signing key, and installs the package. If you would rather not pipe a script into a shell - reasonable - here is exactly what it does:
curl -fsSL https://repo.toolport.app/toolport.gpg | sudo pacman-key --add -
sudo pacman-key --lsign-key A16BFA2E1014BD6BD718CC6E6621247E3FFA6AA7
printf '\n[toolport]\nServer = https://repo.toolport.app/$arch\n' | sudo tee -a /etc/pacman.conf
sudo pacman -Sy toolport toolport-bin and replaces toolport-native-preview. Upgrading swaps in place: same ~/.config/Toolport, launch-at-login carried across.The shell needs GTK 4.10+ and libadwaita 1.4, which rules out Ubuntu 22.04 and Debian 12. Those keep the .deb and AppImage, and those builds still ship. Native here means Arch and current-GTK distros.
Both Linux builds read the same ~/.config/Toolport, and only one process can hold the approval broker's endpoint. That is why the package conflicts with toolport-bin instead of sitting beside it - a second instance would silently miss every approval prompt.
Free, open source, and packaged like a proper Arch app.