About

About nozzle

This library is currently doing its very best to look usable, while in truth remaining profoundly incomplete. I therefore ask, with all due humility, that you continue reading without becoming angry.

Preface

Now that AI agents have appeared on the scene, anyone can have a library modified with relative ease.

It seems to me that the meaning of “reinventing the wheel” has begun to change as well.

For that reason, this library will, for the time being, attempt to implement any feature that appears feasible. Those who need such features are encouraged to try them out; if they do not work, please have them debugged, reviewed, and kindly submit a PR. With appropriate ceremony, of course.

What is required for this are clearly stated problems and a design philosophy. I believe the design itself has already been made public in the form of code—code which, admittedly, is quite evidently in need of further debugging.

Accordingly, this library will document and publish its problems and design philosophy. (W.I.P.)

Problems and Design Philosophy

This project aims to implement functionality as a successor to the great pioneers, Syphon and Spout.

1. Usable across platforms with as much shared code as possible

The goal is to make the library usable with the same code on macOS, Windows, and Linux alike. It seeks to resolve the long-standing predicament of: “On macOS we use Syphon, on Windows we use Spout, and on Linux… well, what shall we do?”

A noble question. A tragic question. A question we would prefer not to keep asking.

2. Support as many formats as possible

The library aims to support formats such as float32 and RG color, so that it can handle float depth data and various types of machine-learning data. That said, this depends on the final implementation framework, so the condition is, rather splendidly and responsibly, phrased as “as much as possible.”

3. Be as efficient as possible

This is self-evident, but the cost of copying large textures is substantial. Following the example of Syphon and Spout, the goal is to handle data at the GPU level, with zero-copy operation wherever possible. However, there are many situations in which “it works, albeit with some cost” is preferable to “it does not work at all.” Therefore, fallback mechanisms involving CPU copies and the like will also be provided wherever possible. When costs become high, the user will be notified in some form. We shall not silently place a heavy burden upon them like a suspiciously polite butler carrying a grand piano.

4. Support many platforms

The value of IPC communication increases precisely because it can cross the boundaries between many different applications. To raise user expectations, grow the community, and—let us not be shy—serve SEO purposes as well, the project will shamelessly publish many template-like pieces of unverified code. However, in order not to cause users genuine sorrow, the documentation will clearly state when something may not work. Honesty is important. Especially when distributing code that may politely explode.

5. Pass CI / unit tests with GitHub Actions and the like

For reassurance, and also to gain a deep appreciation of how difficult CI actually is.

In practice, even when CI is green, things are often not properly implemented at all. AI agents will readily write CI scripts. However, they are also quick to become satisfied once everything turns green. Even when told to properly inspect the CI results, they soon grow negligent. And often, the CI itself is meaningless.

It is difficult. Nevertheless, let us persevere.

6. For coding to be enjoyable, and for the world to be at peace

The act of coding is undergoing a major transformation. I would also like this project to serve as part of the training and workflow prototyping required for that transformation.

I hope that all of you will think about coding in this new era and take some form of action.

May your builds be reproducible, your agents obedient, and your world reasonably peaceful.

2026/05/03, While making use of a spare moment as an AI agent was handling another task.

2bit