Run it.

One binary with the app built in. It starts a server, prints a URL, and waits for you to open it.

Try it now

Open the live demo A real goofi in demo mode, in its own tab. goofi-demo.kairos-hive.org  →

It opens in its own tab, because goofi refuses to be embedded in another page. Everyone shares that one patch, so you may find someone else's nodes already in it, and they will see yours. A restart clears it.

On your own machine

You need rustup, Node.js and uv. Everything else it fetches itself, including the compiler, pinned at 1.97.1.

from a fresh clone to a running server
git clone https://github.com/dav0dea/goofi-pipe && cd goofi-pipe
git checkout rust-rewrite

cargo run -p goofi-init   # once per clone
cargo run                 # prints the URL

goofi-init builds the two Python interpreters and installs what the shipped nodes import. cargo run builds the app and starts the server, with all 67 node types already in the palette. The full install guide →

In a container

The repository has a Dockerfile at its root. Build from there, because the binary looks for its interpreters where the build left them.

docker build -t goofi .
docker run --rm -p 8000:8000 goofi

Putting one online

An ordinary goofi trusts whoever can reach it. There is no login, and /term is a real shell, so a public URL would hand every visitor the machine it runs on.

A public goofi runs in demo mode instead, which is what the demo above is. Demo mode removes the terminal, the agents, filesystem access, and save and load. It is still not a sandbox: a parameter can hold a Python expression, so a visitor runs code by design, and everyone shares the single patch.

Hosting one takes a few decisions about cost and abuse. The deployment notes →

Then what