A shared Svelte frontend for QueryMT. It runs either in the native Tauri desktop shell or as a static UI embedded and served by qmtcode.
The default target is QueryMT Desktop. It can manage local ACP subprocesses and use native window, workspace-picker, profile-template, log, and telemetry integrations.
The embedded target is a static SPA for qmtcode. It registers one host-managed agent, connects to the serving origin at /acp/ws, uses ws: or wss: to match the page, and communicates through ACP plus capability-advertised QueryMT extensions. Workspace paths entered in this target refer to the qmtcode server filesystem.
Release builds are not yet signed with a Developer ID or notarized, so macOS Gatekeeper
blocks them after download. After copying the app to /Applications (or anywhere else),
clear the quarantine flag recursively so the bundled qmtcode agent is covered too:
xattr -dr com.apple.quarantine "/Applications/QueryMT Desktop.app"Without -r, only the app folder is cleared and the bundled agent is still killed on start.
The release bundles a qmtcode binary next to the app executable. The default agent
command is qmtcode --acp; the bare qmtcode is resolved on every start, in this order:
- the copy bundled with the app (
qmtcodeorqmtcode-<target-triple>), wherever the app is installed or moved to; - a
qmtcodeonPATH.
A command that contains a path (for example /opt/tools/qmtcode --acp) is used as written.
The agents page and the agent log show which binary was launched.
Linux release filenames identify the runtime:
QueryMT-Desktop-wry-<version>-linux-<arch>.*: stable default, using the system WebKitGTK webview.QueryMT-Desktop-cef-<version>-linux-<arch>.*: experimental CEF runtime, bundling Chromium instead of using WebKitGTK.
Choose x86_64 for Intel/AMD Linux or aarch64 for ARM64 Linux. Both runtimes provide
AppImage and Debian (.deb) packages; CEF also provides a portable .tar.gz.
Development needs a Rust toolchain, Node.js, and the WebKit/CEF system
libraries. If you're on NixOS or using the nix package manager, enter the
devshell first (nix develop, or direnv via the shipped .envrc); for any
other setup, make sure those dependencies are present on your system:
nix develop
npm install
npm run dev # Desktop-target web UI
npm run dev:embedded # Embedded UI; proxies /acp/ws to qmtcodeEmbedded development proxies to http://127.0.0.1:3000 by default. Override it when qmtcode --dashboard listens elsewhere:
QMT_EMBEDDED_PROXY_TARGET=http://127.0.0.1:8080 npm run dev:embeddedRun the desktop app:
npm run tauri -- dev # default runtime
npm run tauri:wry -- dev # System webview
npm run tauri:cef -- dev # CEF, Linux onlyBuild a runtime variant:
npm run tauri -- build
npm run tauri:wry -- build
npm run tauri:cef -- buildCEF is experimental; Wry remains the stable fallback.
Desktop icons are generated from static/favicon.svg with npm run tauri -- icon static/favicon.svg.
Keep the desktop PNG, ICO, and ICNS outputs in src-tauri/icons; mobile and Appx icons are not used.
Build the standalone UI without Tauri or Rust:
npm ci
npm run test:embedded
QUERYMT_UI_REVISION=$(git rev-parse HEAD) npm run build:embeddedThe artifact is written to build-embedded/. It contains an index.html SPA fallback and querymt-ui.json build metadata.
Tagged v*.*.* desktop releases also publish:
querymt-embedded-ui-<tag>.tar.gzquerymt-embedded-ui-<tag>.tar.gz.sha256
QueryMT consumes the unpacked directory through QMT_DASHBOARD_NG_DIST and the dashboard-ng feature. QMT_UI_DIST is the legacy React dashboard prebuild and is not this artifact.
gh release download v0.1.0 --repo querymt/querymt-desktop \
--pattern 'querymt-embedded-ui-*.tar.gz*'
mkdir -p /tmp/querymt-embedded-ui
tar -xzf querymt-embedded-ui-v0.1.0.tar.gz -C /tmp/querymt-embedded-ui
QMT_DASHBOARD_NG_DIST=/tmp/querymt-embedded-ui \
cargo build -p querymt-agent --features dashboard-ng --example qmtcodeThe initial embedded contract assumes root hosting and same-origin /acp/ws. It does not support a configurable agent endpoint, local subprocess management, native logs, native profile-template installation, or native directory browsing. The browser must be served from a trusted qmtcode origin; authentication and Origin enforcement remain responsibilities of the serving backend.