Published: 2026-07-04
I've been working on a new Open Source project: Exhibit. It's a personal library for self-contained web artifacts — the kind generated by [INSERT YOUR AI TOOL HERE].
It is heavily inspired by Simon Willison's tools aggregator, and Matt Webb's excellent blog post titled "We need RSS for sharing abundant vibe-coded apps". Simon also recently authored a plugin called datasette-apps which fills a similar void, but while datasette-apps is focused as an integration for datasette, Exhibit is a standalone tool.
Exhibit is built to host your personal store of tools, whether you custom-built them, generated them via AI, or imported them from someone else’s site. It’s the home for those niche HTML/CSS/JS apps that serve highly specific purposes.
I use my instance to keep a variety of small utilities in one place. Examples of artifacts I keep include:
- Financial calculators
- Clipboard utilities (Still working on some CSP related issues with copy/paste)
- Small test projects and prototypes
Exhibit is just a dedicated place for all your little tools. It's like a media library.
Exhibit sandboxes each artifact in an <iframe> with it's own Content Security Policy (CSP). This allows the artifact owner (you) to create network policies that allow network requests to certain origins to be made. By default, all network requests are blocked. So if you save another website by URL, you can rest assured that anything you do in your artifact won't make its way to the broader internet. The flip side of this strict security is that importing external sites can break and may require some manual fiddling to get working. I'm exploring ways to make that import process smoother.
There's a lot more I'm looking forward to adding to Exhibit, starting with tags support. Beyond that, I'm looking into:
- Multi-user setups
- Shared/public artifacts
- Robust URL scraping
The project repo is hosted here