VexelRay
0.1.1 · experimental prerelease

VexelRay

Nine desktop applications for Windows and Linux, drawn live on the GPU, which know about each other.

Windows: paste this into PowerShell and press Enter

irm https://sibarum.github.io/install.ps1 | iex

To open PowerShell, press Win + X and choose Terminal (on Windows 10, Windows PowerShell). Running the same line again updates everything.

  • No administrator rights
  • Your user only
  • Every download checked by SHA-256
  • Uninstall from Settings

Needs Windows 10 or 11 (64-bit) and a graphics card with an up-to-date driver: everything here draws with Vulkan.

Linux: paste this into a terminal and press Enter

curl -fsSL https://raw.githubusercontent.com/sibarum/vexelray-dist/main/preflight/install.sh | sh

No sudo: everything goes under ~/.local, for your user. Running the same line again updates everything. These are snapshot builds, 0.1.2-SNAPSHOT, of Vex, Pix, MainFrame, Calculator and VexelRay Inspector; the rest are not on Linux yet.

  • No root
  • Your user only
  • Every download checked by SHA-256
  • Uninstall with one command

Needs 64-bit (x86_64) Linux with an X11 desktop, or Wayland with XWayland, and a Vulkan driver: Mesa's, or your graphics card maker's. For now every window draws at 100%, whatever the desktop's scaling.

Applications

What you get

Desktop applications built on the VexelRay stack: a file explorer, a text editor, an image viewer, a terminal, a calculator, fluid and rigid-body simulations, a desktop client for Claude Code, and an inspector that shows a running app's frame loop. They are separate programs that know about each other, so a file in the explorer opens in the editor or the viewer, and the editor can show a file in the explorer.

Vexplore: one video clicked, the suggestion rail offering all nine videos here and a move

Vexplore

A file explorer that suggests instead of asking.

Vex: Kronometer's Tempo.java open beside its navigator, the project indexed

Vex

A tabbed text editor with a file navigator, on the VexelRay stack.

Pix: a picture, and under it the file's name, the filmstrip of its neighbours, and the controls

Pix

An image viewer: one picture, as large as the window allows, and the rest of its folder a key press away.

MainFrame: PowerShell in a tab, a coloured git log and a folder listing

MainFrame

A terminal window that wraps the native Windows shell over ConPTY, built on the VexelRay stack.

Calculator: two lines answered, each with its readings, and x^2-4 plotted

Calculator

A small calculator window onto cott-engine.

A dam break of water onto mercury: water (blue) rides on mercury (red)

Fluid Sim optional

Fluid simulation experiments on the VexelRay stack: dam breaks, mixing, heat and a 3D dam break, live on the GPU.

Rigid Sim: a pile of 1000 spheres slumping in its box, solved by Gauss–Seidel

Rigid Sim optional

Rigid-body simulation experiments on the VexelRay stack: spheres that collide, bounce, spin and roll, live on the GPU.

Maistro optional

A desktop client for Claude Code, on the VexelRay stack: the conversation beside a mind map its replies grow. Needs the Claude Code CLI, logged in.

VexelRay Inspector: the escapement at rest, replaying a calculator session, its park's budget on the plaque

VexelRay Inspector optional

DevTools for VexelRay applications, drawn as clockwork: attach to a running app and watch its frame loop beat, park and stall.

Under the hood

Built different, underneath

Every application above runs on the same framework, and it does things you would not expect from a desktop toolkit.

0 fps

Frames only on demand

A window draws when something changes and sleeps when nothing does, waking to its first frame in about a millisecond. The whole window is one draw call.

5 lanes

Multithreaded by default

The main thread only draws. App logic, disk work and time run on their own lanes, placed at compile time, so a part that hangs never freezes the window.

577 ns

A clock you can test

Kronometer drives every animation from one logical clock. On its virtual clock, a ten-minute scenario runs in microseconds, identically every time.

See all the technology

Developers

Build your own

VexelRay is also a framework: Java 25, compiled to a native executable for Windows or Linux and drawn with Vulkan. Every application above is built on it. Yours can be too, whether a coding agent writes most of it or you write all of it.

Start from the template

One command generates a working application with tabs, a file navigator, settings that persist, and tests that build the window without a GPU. Vex, Calculator and MainFrame all started this way.

Build it with an LLM

The stack was written with Claude Code. The framework and the GUI carry a CLAUDE.md with the rules the code does not show, and every generated project starts with one. ottermate lets a coding agent drive and screenshot the window it built, so it checks its own work by looking at it.

Or write it yourself in Vex

Vex highlights Java, jumps to any declaration in your project or in the framework, and shows a folder's Maven modules before you open it. MainFrame and Vexplore work alongside it.

Read the developer guide

Credits

Built with

VexelRay would not exist without three pieces of other people's work, and we're grateful for each of them.

Claude Code, by Anthropic

Most of VexelRay was written with Claude Code, Anthropic's coding agent, working alongside its author. Ottermate exists so Claude can see the windows it builds.

Oracle GraalVM

Oracle GraalVM's Native Image compiles every application ahead of time into a single native executable, for Windows or Linux, that runs without a JVM.

Vulkan, by the Khronos Group

Everything here is drawn with Vulkan, the open, cross-platform graphics and compute API from the Khronos Group, with every shader compiled to SPIR-V.

Licenses and notices

Details

Before and after you paste

Everything the install line does, and how to undo it.

Is it safe to paste a line from the internet?

It is a fair question, so read the script first. It is one file: install.ps1. What it does:

  1. For each application, it downloads the application's published manifest and its own installer, and refuses the installer unless its SHA-256 matches the one the manifest records.
  2. That installer downloads the application from its GitHub release, and refuses it unless its SHA-256 matches too. Nothing is written to your disk until every download has checked out.

The script, the manifests and the releases are all in one public repository, sibarum/vexelray-dist.

What it changes on your computer

Everything is per user, and everything is undone by uninstalling:

  • each application in its own folder under %LOCALAPPDATA%\Programs
  • desktop and Start menu shortcuts
  • your user PATH, so vexplore, text-editor, pix, mainframe, calculator, maistro and vexelray-inspector work from a terminal
  • Open with entries for the file types Vex and Pix read. One becomes the default only for a type no other program has claimed: Windows does not let a new program take over an existing one, and neither does this
  • an entry for each application in Settings › Apps

The window that opens has a box for each of these. To start them unticked, or to leave them out when the installer runs without a window, set any of these in the same PowerShell window before the install line:

$env:INSTALL_NO_SHORTCUTS = '1'
$env:INSTALL_NO_PATH = '1'
$env:INSTALL_NO_ASSOCIATIONS = '1'
Install only some of them

Untick the others in the window that opens. To choose ahead of it, or without a window, set INSTALL_ONLY in the same PowerShell window before the install line:

$env:INSTALL_ONLY = 'vexplore,text-editor'

The ids are vexplore, text-editor, pix, mainframe, calculator, fluid-sim, rigid-sim, maistro and inspector.

Fluid Sim, Rigid Sim, Maistro and VexelRay Inspector start unticked, and without the window they are left out unless already installed. Tick them to install them too, or name fluid-sim, rigid-sim, maistro and inspector in INSTALL_ONLY.

Install everything, without being asked

Run the script as a script block, which takes arguments, as the install line cannot:

& ([scriptblock]::Create((irm https://sibarum.github.io/install.ps1))) --install-everything --do-not-prompt-me

--install-everything installs every application, the optional ones too ($env:INSTALL_EVERYTHING = '1' does the same), and --do-not-prompt-me opens no window and asks nothing (as $env:INSTALL_QUIET = '1'). Either one works alone.

Update

Run the install line again. Each application is updated to its latest version, and one that is already current is left alone. To reinstall anyway, set $env:INSTALL_FORCE = '1' first.

Uninstall

Use Settings › Apps › Installed apps, where each application has its own entry. Or, from PowerShell, list what is installed and remove all of it:

& "$env:LOCALAPPDATA\Programs\Vexplore\uninstall.cmd" -List
& "$env:LOCALAPPDATA\Programs\Vexplore\uninstall.cmd" -All

The uninstaller removes exactly what was installed: files, shortcuts, PATH entries, file types and the Settings entries. Files you put in those folders yourself are left alone.

Install from the Run dialog instead

Press Win + R, paste this, and press Enter:

powershell -NoExit -Command "irm https://sibarum.github.io/install.ps1 | iex"
On Linux

The line runs one script, install.sh. Like the Windows one, it runs each application's own installer once its SHA-256 matches the application's manifest, and that installer checks every download the same way. Nothing needs root, and everything is undone by uninstalling:

  • each application in its own folder under ~/.local/opt
  • entries in your applications menu, and launchers on your desktop if you have a Desktop folder
  • links in ~/.local/bin, so text-editor, pix, mainframe, calculator and vexelray-inspector run from a terminal; a link is never put over a file that is not its own
  • file types Vex and Pix open, under Open With; one becomes the default only where no program is

For now Linux gets snapshot builds (0.1.2-SNAPSHOT), built from the same sources as the next release, until Windows, Linux and macOS ship together. Vexplore, Fluid Sim, Rigid Sim and Maistro have no Linux version yet.

Options go between the pipe and sh. Only some of the applications:

curl -fsSL https://raw.githubusercontent.com/sibarum/vexelray-dist/main/preflight/install.sh | INSTALL_ONLY=text-editor,pix sh

INSTALL_NO_SHORTCUTS=1, INSTALL_NO_PATH=1 and INSTALL_NO_ASSOCIATIONS=1 leave those out the same way. Run the line again to update. To remove everything:

"$HOME/.local/opt/text-editor/uninstall.sh" --all

If no window opens, check that a Vulkan driver is installed: vulkaninfo --summary, from your distribution's vulkan-tools, lists the graphics cards it can draw on.

Needs 64-bit (x86_64) Linux with an X11 desktop, or Wayland with XWayland, and a Vulkan driver: Mesa's, or your graphics card maker's. For now every window draws at 100%, whatever the desktop's scaling.

Something went wrong, or you have feedback

Anything is useful: it did not install, a window looked wrong, something was confusing, or you just liked it. Open an issue and say which application, what you did and what happened. A screenshot helps.