vibe-view desktop app (macOS, Windows, Linux)¶
vibe-view ships a native desktop application (an Electron window) in
addition to the browser-based viewer. It gives you a real app window with
native menus, drag-and-drop, an Open Recent list, and (on macOS) a
double-click file association for .qvf files. The same codebase runs on
macOS, Windows, and Linux.
Note
The desktop app is a thin native shell around vibe-view’s Python server:
it launches vibe-view serve in the background and shows it in a window.
So it needs Python and vibe-view installed on the machine (see
Prerequisites).
If you launch the app and it can’t find a suitable Python, it no longer
fails with a dead-end error; it shows a setup screen that names exactly
what is missing (Python, vibe-view, or the [viewer] extra), gives you the
command to install it, and lets you install and press recheck to continue
in place (see First run below).
The desktop packages are not a self-contained Python bundle: the app is
downloaded and, on first run, guides you to install the vibe-view[viewer]
Python package. Bundling a full Python + VTK runtime into the installer was
evaluated and deferred (see
vibe-view/docs/desktop_packaging_design.md).
Prerequisites (all platforms)¶
Requirement |
Version |
Notes |
|---|---|---|
Python |
3.11 or newer |
|
vibe-view |
current |
installed with the |
vibe-view is not on PyPI yet, so it installs from the co-located checkout.
Install¶
The steps are the same on all three platforms. From a vibe-qc checkout:
# uv (vibe-qc's stated installer): vibe-qc + vibe-view in one step
uv pip install -e '.[viewer-gpu]'
# or with pip, in two steps (pip does not read [tool.uv.sources]):
pip install -e .
pip install -e 'vibe-view/[viewer]'
The [viewer] extra is required for the desktop app: it pulls the
interactive server stack (trame, uvicorn). Installing vibe-view without it
gives the lean headless-capture stack only, and the desktop window will
report that the server did not start.
Verify:
vibe-view --version
# vibe-view 2.1.0.dev0 -- Roothaan's Roadrunner
Launch¶
vibe-view desktop # native window, browse page for the cwd
vibe-view desktop water.qvf # native window with water.qvf loaded
vibe-view desktop --port 9090 # custom server port
vibe-view desktop works from any directory. On first run it downloads the
Electron binary (about 120 MB, one time) and brands it as vibe-view. It
then records the interpreter it ran from, so a later double-click on a
.qvf file (macOS) reuses the same virtualenv.
First run: setup screen¶
When the app starts it looks for a Python that can run the viewer server. If
it can’t find one (a freshly downloaded app on a machine with no vibe-view,
or a Python that has vibe-view but not the [viewer] extra), it opens a
setup screen instead of failing. The screen tells you which of three
cases applies and shows a command to fix it.
The command installs vibe-view into a dedicated virtualenv rather than into the system Python:
# macOS / Linux (the screen fills in the real path):
python3 -m venv ~/.local/share/vibe-view/venv
~/.local/share/vibe-view/venv/bin/pip install "vibeview[viewer]"
```{admonition} Why a virtualenv, not a plain pip install?
:class: important
On Homebrew Python (macOS) and Debian / Ubuntu / Fedora system Pythons, a
plain pip install "vibeview[viewer]" fails with error: externally-managed-environment (PEP 668):
those interpreters are marked off-limits to pip. A fresh virtualenv is
never externally managed, so installing into one sidesteps the error
entirely. The app looks for this venv at
$XDG_DATA_HOME/vibe-view/venv (default ~/.local/share/vibe-view/venv;
%LOCALAPPDATA%\vibe-view\venv on Windows), so Recheck finds it
automatically with no extra step. If you prefer, pipx install "vibeview[viewer]" (then run vibe-view desktop once to register it) works
too; installing into the system Python with --break-system-packages is
possible but discouraged.
Copy the command with the **Copy** button, run it in a terminal, then press
the **recheck** button. The app re-scans and, once it finds a capable
interpreter, starts the server and opens the viewer, with no restart needed.
The app stays open the whole time, so you can fix the environment without
losing your place.
```{note}
Until vibe-view is published to PyPI, `pip install "vibeview[viewer]"`
resolves only if pip can reach the package: from a vibe-qc **checkout**,
install the local path into the venv instead:
`~/.local/share/vibe-view/venv/bin/pip install -e 'vibe-view/[viewer]'` (run
from the checkout root). The venv is still what avoids the PEP 668 error; only
the package source differs. Launching with `vibe-view desktop` from any
vibe-view environment also records that interpreter, so the setup screen is
skipped on later runs.
macOS: double-click a .qvf¶
Two ways to open files:
vibe-view desktop <file>works immediately after install, no app bundle needed.Double-click a
.qvf(Finder file association) needs the packaged.app. Build it once from the checkout:cd vibe-view/electron ./build-desktop.sh # produces dist/mac-arm64/vibe-view.app + a .dmg
Then run
vibe-view desktoponce from your virtualenv so the app knows which Python to use. After that, double-clicking a.qvfopens it in the app.
Note
The current .app / .dmg is not code-signed, so on first launch
macOS Gatekeeper may block it. Right-click the app and choose Open
(once) to allow it. Signing and notarization are part of the downloadable
packages roadmap item.
Windows and Linux¶
vibe-view desktop is the supported launch path on Windows and Linux too,
with the same prerequisites (Python plus vibe-view[viewer]). electron-builder
targets exist for Windows (nsis installer) and Linux (AppImage); like the
macOS app they rely on a Python environment being present, and the first-run
setup screen guides the user to install it.
On Windows the app looks for the py launcher and python (in that order)
rather than python3, which Windows usually doesn’t provide; a virtualenv is
found at .venv\Scripts\python.exe.
Warning
Windows is supported but not yet verified, and we want your feedback. The
maintainers develop and test on macOS and Linux and have no Windows machine,
so the Windows build is shipped untested: the nsis installer, the
py-launcher Python discovery, and the setup screen have not been run on real
Windows. The app says as much in a one-time notice on its first Windows
launch. Please tell us how it goes, whether it works or breaks, by
opening an issue; that
feedback is what will make Windows a first-class target. The Windows installer
is also not code-signed, so SmartScreen warns on first run: choose More
info, then Run anyway. Code signing is a pending infrastructure item
(shared with the macOS Gatekeeper gate above).
Troubleshooting¶
The setup screen keeps appearing after I installed vibe-view. The app
scans a fixed set of interpreters (python3, python, python3.13 … on
macOS/Linux; py, python on Windows) plus the interpreter recorded by a
previous vibe-view desktop run. If you
installed vibe-view[viewer] into a virtualenv that isn’t on that list, the
app won’t find it from a bare double-click. Run vibe-view desktop once
from that environment; it records the interpreter (in
<XDG_CACHE_HOME>/vibe-view/interpreter.json) so future launches and
double-clicks reuse it. Confirm the environment is capable with:
python -c "import vibeview, trame, uvicorn; print('ok')"
“The vibe-view server did not start.” Older builds showed this error and quit; current builds route the same conditions to the setup screen instead, which names what’s missing and lets you fix it in place.
“Check for Updates”. In a packaged app (built with build-desktop.sh
or installed from a .dmg), this checks the update feed at
https://vibe-qc.com/updates/vibe-view/ and tells you when a newer version is
available. Because the current macOS build is not code-signed, it cannot
install updates by itself: instead of a “Restart to install” prompt you get a
Download button that opens the new .dmg, and you update by replacing the
app. Full hands-off self-install turns on automatically once a signed +
notarized build ships (see the Gatekeeper note above). When you launch
vibe-view desktop from a source checkout (not a packaged app), automatic
updates are unavailable: update with git pull and rebuild. Feed, signing, and
publishing details are in vibe-view/electron/PUBLISHING.md.
See also¶
vibe-view interactive viewer (the browser-based viewer and the full section-by-section reference)
vibe-view/electron/PUBLISHING.md(building, the update feed, and the code-signing gate for auto-update)vibe-view/electron/README.md(developer notes for the desktop app)