Build anything for the notch

A Fenn plugin is a folder with a small manifest and a program, written in any language. Your program prints JSON that describes its tile, Fenn draws it in the notch's glass style and sends back clicks, typing, hotkeys and dropped files. You don't need Rust and you don't rebuild Fenn.

Any languagePython, Node, PowerShell, Go, C#, Rust, even a .bat file. If it can read and write lines, it can be a plugin.
Looks nativeDescribe what to show and Fenn draws it with its own springs, theme and accent color.
Safe to crashEach plugin runs in its own process. If it crashes it restarts, and the notch keeps running.

Quick start

1. Make a folder in %APPDATA%\Fenn\plugins\, for example hello.

2. Add plugin.toml:

toml
id   = "hello"
name = "Hello"
icon = "hand-waving"        # any icon from phosphoricons.com
size = "wide"               # small | wide | large
run  = ["python", "main.py"]

3. Add main.py. It prints one JSON object per line and reads one per line:

python
import json, sys

def send(msg):
    print(json.dumps(msg), flush=True)

clicks = 0
def draw():
    send({"type": "tile", "view": {
        "type": "row", "align": "center", "children": [
            {"type": "text", "text": f"Hello x{clicks}", "size": "title"},
            {"type": "spacer"},
            {"type": "button", "id": "wave", "icon": "hand-waving"},
        ]}})

draw()
for line in sys.stdin:                 # Fenn's messages, one per line
    msg = json.loads(line)
    if msg["type"] == "event" and msg["id"] == "wave":
        clicks += 1
        draw()

4. Turn on plugin dev mode in Fenn's Settings. Fenn loads the new folder within a second, no restart, and restarts your plugin every time you save a file. The tile is added after the built-in ones. Use the pencil in the grid to move or resize it.

Using Claude Code? Install the fenn-plugin skill and just describe the tile you want: it knows the protocol and checks the plugin the way Fenn runs it.
That's the whole protocol. The rest of these docs list everything else you can use. For ready-made examples, see examples/plugins/ in the repository: a counter, a to-do list, a PowerShell disk monitor and an analog clock drawn on a canvas.

Where to go next

Report a bug

Sent with the page you’re on (/docs) and your browser’s name.