Announcing Pixbyt: a self-hosted app server for advanced apps

Hey all! I love my Tidbyt and how easy it is to build apps (so much so that my company gifted Tidbyts to the entire team!), but when I tried to realize some of my more advanced app ideas, I started running into the limitations of the official community app server and Pixlet itself.

So I built Pixbyt, a self-hosted Tidbyt app server that has none of these limitations:

  • Run Python scripts and packages, not just Starlark applets
  • Reach local network resources, not just the public internet
  • Work with complex APIs, not just simple REST HTTP requests
  • Read local files, like images or JSON
  • Organize your source code across multiple modules

Pixbyt’s advanced features are enabled by an unofficial standard library for Pixlet named Pixlib, similar to how Starlib is the unofficial standard library for Starlark. Pixlib comes with functions like file.read, file.exec, font.height, html.unescape, and html.xpath, helpful constants like const.WIDTH, const.HEIGHT, and const.FPS, and overloads load to support local modules.

You can easily try Pixbyt out using GitHub Codespaces, and deploy it on your homelab/NAS using Docker Compose.

Some examples of what I’ve built with it (see links in the README) are crossword, jeopardy, and common-misconceptions (which need to parse HTML), ffmpeg (which needs to read a local RTSP video stream), plex (which needs to access a local server), apple-tv (which needs to access local devices over Bonjour), and parcelapp (which needs to HTML-decode text).

I’d love to hear your feedback and see what you build with it! Feel free to submit a pull request to add your app to the example gallery in the README.

6 Likes

Wow! This looks amazing!!! I love that we can run local hosted advanced apps and still use the owm server!! This has the potential to be an unofficial app store!! Love it! Thanks for the hard work.

Edit: could this also be used to run the official tidbyt community apps from your own local server? Cloud independence is always a nice backup.

1 Like

Wow! Thank you. Also, for a most cogent explanation of how TidByt apps work, in the intro to your docs.

Thanks for the kind words!

@dazig Yes, you can add apps from https://github.com/tidbyt/community as well, all you’ll need is the apps/<app>/<app>.star file and a new pixbyt.yml file as described under https://github.com/DouweM/pixbyt#31-add-an-app, “Option C: Create a brand-new app” (and then follow the remaining steps under “3.2. Configure the app”)

Pixbyt looks really interesting @DouweM. Nice work! I’m going to check it out. I run a script on my Mac Mini server at home that pushes my own, non-public Tidbit apps to my devices each day. I like the idea of having more control over things so I might give this a try.

Your Jeopardy app looks cool. I also wrote a Jeopardy app early on but never released it officially. You can check it out here if you want to see a different implementation. I wrote my own Marquee code so that I had a bit more control over things. This was when Tidbyt was new. I think the control is more mature now so I could redo the app at some point but it was a fun exercise. I always like seeing different interpretations of the same idea.

1 Like

Thank you, DouweM
Your work allows Tidbyt to deliver on its promise on building own apps - the current experience, from dealing with quirks and limitations of starlark to having to publish the app, makes it practically non extensible for any complex scenario. The default weather app was always off by couple degrees, and Tidbyt transit app never supported Seattle transit. The feedback tickets about these issues never received any traction here. Thanks to you, Tidbyt will be back up on my shelf!

3 Likes

Thanks @DouweM, very cool. I am just getting into developing against the TidByt and have been very thrown off by the use of Starlark and it’s limitations. Hopefully this gets endorsed in their docs as well!