Datasette Apps: HTML-приложения прямо внутри базы данных

Datasette запустил новый плагин, который позволяет размещать пользовательские HTML+JavaScript приложения прямо внутри экземпляра базы данных. Приложение запускается в строго изолированном iframe с ограничениями: оно не может получить доступ к cookies или localStorage, а также не может отправлять HTTP запросы во внешние сервисы благодаря Content Security Policy.
Основная идея пришла из экспериментов с Claude Artifacts: что если бы самодержавный фронтенд получил доступ к настоящей реляционной базе данных? Результат: инструмент, который позволяет строить интерактивные визуализации, поисковые интерфейсы и приложения для редактирования прямо на вершине структурированных данных.
Ключевые факты
- Datasette Apps работают в изолированной песочнице (iframe sandbox + CSP), защищая приватные данные от компрометации
- Приложения имеют доступ к read-only SQL запросам и write запросам через сохранённые процедуры (stored queries)
- Встроенный шаблонный промпт позволяет скопировать набор инструкций вместе со схемой в ChatGPT, Claude или Gemini и получить рабочий код
- Simon Willison использовал Claude Opus 4.6 для разработки, Claude Fable 5 для аудита безопасности и выявления уязвимости с повышением привилегий
- Интеграция с Datasette Agent даёт AI помощнику возможность создавать и редактировать приложения как артефакты
Почему это важно
Datasette исторически был инструментом для публикации и исследования готовых данных. С добавлением Datasette Agent возник способ интерактивного анализа через естественный язык. Datasette Apps завершают экосистему, добавляя в это возможность разрабатывать полнофункциональные пользовательские интерфейсы без отдельного фронтенда. Это превращает базу данных из пассивного хранилища в платформу для создания приложений.
Кому это важно
Разработчикам, которые строят информационные системы, поисковые движки или дашборды на основе структурированных данных. Журналистам и аналитикам, которые хотят создать кастомный интерфейс для обращения с собранными данными без написания отдельного веб-приложения. Организациям с приватной базой данных Datasette, где нужно быстро прототипировать интерактивные инструменты. AI помощникам, встроенным в Datasette Agent, которые теперь могут автоматически генерировать приложения по описанию.
Как это применить
Можно попробовать на демо-сервере agent.datasette.io, авторизовав через GitHub. В форме создания приложения есть кнопка "Copy" рядом со специально подготовленным промптом: скопировал, вставил в Claude или ChatGPT, описал, что нужно (например, "инструмент для временной шкалы с поиском"), и модель генерирует HTML+JavaScript код. Затем нужно создать stored query в Datasette для операций записи, выдать приложению доступ через permission, и оно готово. Для локальной разработки плагин устанавливается через pip в существующий Datasette.
Можно ли доверять
Код прошёл серьёзный аудит безопасности. Simon Willison использовал Claude Fable 5 (специально для этого проекта) для анализа конфиденциального окружения и выявления реальной уязвимости: менее привилегированный пользователь мог создать приложение, которое запрашивает все таблицы, и обманув администратора на посещение приложения, получить доступ к его привилегированным данным. Уязвимость была закрыта введением нового permission (apps-set-csp), доступного только доверенному персоналу. Песочница (
Риски и подводные камни
Если администратор неправильно настроит allowed_csp_origins и разрешит слишком много доменов, приложение может использовать их для экфильтрации данных. Пользователи должны понимать разницу между stored queries (которые безопасны, так как явно одобрены администратором) и прямым доступом к SQL (которого нет). Новизна плагина означает, что долгосрочные паттерны и граничные случаи ещё могут быть обнаружены сообществом. Если приложение работает с очень большими результирующими наборами, производительность iframe может упасть, так как весь HTML и JavaScript работают в одном потоке браузера.
«Imagine how much more useful Claude Artifacts could be if they had access to a persistent relational database. That's what I'm building with Datasette Apps!»
— Simon Willison