Sunbeam
Sunbeam is a command-line launcher, inspired by fzf, raycast and gum.
It allows you to build interactives UIs from simple scripts.
Other examples:
Visit the documentation for more information (including installation instructions).
Why sunbeam?
I love TUIs, but I spent way to much time writing them.
I used a lot of application launchers, but all of them had some limitations.
Sunbeam try to address these limitations:
Sunbeam is written is distributed as a single binary, so you can run it on any platform. The sunbeam extension system is also designed to be cross-platform.
Sunbeam is language agnostic
Sunbeam communicates with your scripts using JSON, so you can use any language you want.
The only requirement is that the script is executable and outputs a JSON object conforming to the Sunbeam JSON Schema on stdout.
Any github repository can be used as a command
Sunbeam is designed to be extended. Any github repository containing a sunbeam.json
config can be installed using the sunbeam install
command. You can also install commands from any url.
Sunbeam supports custom clients
Sunbeam comes with a built-in TUI to interact with your scripts, but you can also use any other client.
Currently the only alternative client is sunbeam-raycast.
Inspirations / Alternatives
Sunbeam wouldn't exist without the work of other people. Here are some projects that inspired sunbeam:
- raycast: Sunbeam shamelessly copy most of raycast UX. Even the project name is a reference to raycast.
- fzf: Sunbeam tries to take inspiration from fzf, but it's not a drop-in replacement. Sunbeam is designed to be used as a launcher, not as a fuzzy finder.
- kit: Kit is another script-focused launcher.
- gum: Sunbeam is powered by charm libraries, and can be seen as a alternative spin on gum. Gum is invoked by scripts, while sunbeam invokes scripts.
- slapdash: The sunbeam event loop was inspired by slapdash. Sadly, slapdash doesn't seem to be updated anymore.
- gh: The sunbeam extension mechanism is a copycat of the gh extension mechanism.