Skip to content

Shader­brücke

A shader lab where agents check their work.

Make GLSL shaders with your Hermes agent, see them render, tune them by hand, and take them into the tool you ship in.

hermes plugins install https://github.com/studioluftbruecke/hermes-shaderbruecke --enable
The Shaderbrücke card in Hermes Desktop: a golden-hour sky shader playing in the chat, three labelled sliders under it, and a proof strip that reads three.js match.

What it does

A Shaderbrücke contact sheet: three frames of one shader at 0, 1 and 2.5 seconds, with the checks for flat, black, still and flash risk under them.

Checked before you see it

A headless Chromium on your Hermes host lints, compiles and renders three frames. The agent looks at its own contact sheet and fixes flat, black or still frames before it answers.

The detail sheet of one shader in Hermes Desktop: a large live canvas, labelled sliders and a filmstrip of its versions.

Live in the chat, with sliders

Hermes Desktop plays the shader in the chat. Each `@slider` line becomes a slider you move without another agent turn, and your values become the export defaults.

The Export menu of a Shaderbrücke card with every target and its proof verdict.

Exports that prove themselves

Seven targets: three.js, React Three Fiber, TSL, Shadertoy, an agent handoff, and experimental TouchDesigner and ISF. Each export is rendered next to the source and gets a verdict: match, differs or not proven.

The Shaders page in Hermes Desktop: a grid of shader thumbnails with names, version counts and licence badges.

A library you own

Every render is a version with its frames, forks and licence. Edit the code yourself in the Lab, import Shadertoy, glslCanvas and ISF shaders, and share a file anyone with Shaderbrücke can import.

Safe by design

What it touches

  • Its own data folder in your Hermes profile: shader versions, frames and exports.
  • A project folder only when you pass dest_dir, and only proven files unless you say accept_unproven.

What asks first

  • It never overwrites a file in your project unless you pass overwrite.
  • Unattended runs never write into a project unless you turn on allow_project_writes.

What leaves your machine

  • Nothing. Renders run with the network blocked, and shader code never leaves the machine. No telemetry, no accounts.

Disclosures, as written in the README

A Chromium child process
Each render or proof starts Chromium with a throwaway profile and software GL, so no GPU is required. The network is blocked for host names and IP addresses alike.
Also
The child gets only PATH, locale and a short temp folder from the environment, never the gateway's API keys. A hard deadline (30 s per render, 90 s per proof) kills the whole process group.
Also
Vendored three.js r187 (MIT, 4.5 MB), used only server-side for proofs and the TSL transpile. Nothing is served to a browser.
Writes
Shader records, frames and exports go under the profile's plugin data folder. A version with its frames and proof images takes 1 to 3 MB.
Also
No telemetry, no accounts, no network calls. There are no credentials to configure.
Also
The Desktop half talks only to the plugin's own API. Share files are read and written only in a folder you pick.

Quick start

  1. Install it where Hermes runs.

    hermes plugins install https://github.com/studioluftbruecke/hermes-shaderbruecke --enable

    Hermes on a server and Desktop on your laptop? Install it on the server as above, and on the Desktop computer with:

    hermes plugins install https://github.com/studioluftbruecke/hermes-shaderbruecke
  2. Start a new chat and ask for a look, for example "a golden-hour sky with a low sun and slow clouds".

  3. Move the sliders under the card, then pick a target in the card's Export menu.

Questions

What do I need?

Hermes 0.22.7 or newer and a Chromium. The Hermes container image ships one and the plugin finds it. Elsewhere, put chromium on PATH or set SHADERBRUECKE_CHROMIUM. No GPU, no Python dependencies, no npm.

Does it work without Hermes Desktop?

Yes. Rendering, the checks, the library and the exports run on the Hermes host and work from any chat. The live card, the sliders, the Shaders page and the Lab need Desktop.

What leaves my machine?

Nothing. Renders run in a Chromium with the network blocked, and the plugin makes no network calls and sends no telemetry.

I run Hermes on a server. Where do I install it?

In both places, on the same version: on the server for the tools and the renderer, and on the Desktop computer for the card and the Shaders page. With Hermes and Desktop on one computer, one install covers both.

How do I update?

Run hermes plugins update shaderbruecke, then start a new chat. On a server, update there too, and switch Agent in <profile> off and on in Capabilities → Plugins.

How do I uninstall?

Run hermes plugins remove shaderbruecke. On a server, run it with -p <profile> there and once on the Desktop computer.

What licence is it under?

The plugin is MIT. Your shaders are private by default. Pick MIT, CC0 or a Creative Commons licence per shader, and every export carries it.

Where do I get help?

Open an issue on GitHub. Include the render result, which names the failed check or the compile error.

Build it with us

Shaderbrücke is open source under MIT. Issues, ideas and pull requests are welcome on GitHub.

The other bridges