Ask for a widget

What to say, what the agent does, where the plugin ends up, and how to get a widget you actually want.

You do not write plugins for smabar. You describe the widget, and the agent connected to the MCP server writes it, installs it and checks it.

What a good request looks like

Say what you want to see and when. The agent handles the rest.

Show my next three bus departures from Hauptbahnhof on the bar. Count the minutes down live and turn the tile red when I would have to run.

Track this DHL parcel number and show its status. Send a popup when it goes out for delivery.

Read the canteen menu PDF at this URL every morning and show today’s dish on the tile, the whole week in the flyout.

Useful details to mention: how often to refresh, whether you want a flyout with more detail, whether a popup should fire, and any URL, API key or file the widget needs. If you do not mention them, the agent will ask or pick a sensible default.

What happens

  1. The agent reads the plugin guide from smabar, which contains the manifest schema, the SDK reference and a working template.
  2. It writes the plugin into ~/.smabar/plugins/<id>/. The bar watches that folder and starts the plugin the moment its files land; no restart, no reload button.
  3. It takes a screenshot of the bar, or just of the new tile, and looks at it.
  4. It reads the plugin’s log, where every crash and every piece of markup the bar removed is listed with the supported alternative, and fixes what is off.

The result is an ordinary plugin: its own process, its own folder, Python on the runtime smabar provisions. You can read every line of it.

Where things are

  • ~/.smabar/plugins/<id>/ is the plugin’s code. Any change there reloads the plugin.
  • ~/.smabar/data/<id>/ is what the plugin stores: caches, history, settings. Removing the plugin removes it.
  • ~/.smabar/logs/plugin-<id>.log is its log.

Tips

  • Ask for changes the same way: “make the tile show only the minutes” or “add a setting for the stop name”. The agent edits the plugin in place.
  • Ask the agent to look at the screenshot if something looks wrong to you; it can see what you see.
  • If a widget talks to a service that needs a key, the agent stores it in the plugin’s settings, never in the code folder.
  • A widget you like is a plugin anyone could use. The publishing page shows how to share it through the Community Store.