Datasette выпустила новый плагин — datasette-apps. Это самодостаточные HTML+JavaScript-приложения, которые запускаются внутри строгого <iframe>-сандбокса прямо на вашем Datasette-инстансе. Такие приложения могут выполнять read-only SQL-запросы к данным в Datasette через JavaScript, а если настроить сохранённые запросы (stored queries), то и write-запросы.
Песочница работает по схеме <iframe sandbox="allow-scripts allow-forms"> — код не может достучаться до cookies, localStorage или DOM родительской страницы. Вдобавок инжектится CSP-заголовок, который блокирует HTTP-запросы к внешним хостам — ни одно вредоносное приложение не сможет вытащить приватные данные наружу.
Идея родилась из попытки сделать механизм вроде Claude Artifacts для Datasette Agent, но быстро стало ясно, что сам паттерн с изолированными приложениями полезен гораздо шире. Автор вспоминает, что ещё на заре Datasette строил внутренний поисковик для Eventbrite с клиентским JavaScript, который напрямую дёргал Datasette API. Тот подход неожиданно оказался очень продуктивным. Теперь он объединяет это с опытом своих HTML-инструментов и Claude Artifacts: представьте, как было бы круто, если бы Artifacts могли работать с постоянной реляционной базой.
В плагине несколько интересных решений. Первое — комбинация sandbox= и <meta http-equiv="Content-Security-Policy">: CSP-заголовок, однажды установленный, нельзя изменить или удалить из JavaScript, что закрывает дыру для эксфильтрации. Второе — вместо postMessage() используется MessageChannel(), потому что при навигации страницы канал автоматически закрывается, и выполнить команды извне уже не получится. Третье — логи ошибок и SQL-запросов выводятся прямо в UI, что упрощает отладку. Для write-операций ввели сохранённые запросы: пользователь создаёт нужный insert или update и разрешает его конкретному приложению.
Создавать такие приложения можно через копирование промпта с описанием схемы базы — его можно вставить в ChatGPT, Claude или Gemini, и модель с большой вероятностью сгенерирует готовый код. Если подключён Datasette Agent, AI-ассистент сможет и создавать, и редактировать приложения прямо в интерфейсе.
Безопасность проверяли тщательно. Когда был доступен Claude Fable 5, модель провела аудит и нашла уязвимость: пользователь с правом create-app мог завести приложение, которое через allow-лист в CSP вытаскивает данные из всех таблиц, а потом обманом заставить администратора перейти на него — и получить доступ к его приватным данным. Проблему исправили, вынеся возможность разрешать конкретные домены под отдельную привилегию apps-set-csp, доступную только доверенным сотрудникам. Обычные пользователи могут выбирать хосты только из предустановленного администратором списка.
Datasette выходит за рамки инструмента для чтения данных и превращается в среду для построения кастомных интерфейсов и визуализаций, чтобы вытаскивать истории, спрятанные в данных. Release уже можно попробовать на agent.datasette.io, зайдя через GitHub.