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-agent-artifacts в datasette-apps, выведя в отдельный концепт.
Почему это важно
Datasette исторически был инструментом для публикации и исследования готовых данных. С добавлением Datasette Agent возник способ интерактивного анализа через естественный язык. Datasette Apps завершают экосистему, добавляя в это возможность разрабатывать полнофункциональные пользовательские интерфейсы без отдельного фронтенда. Это превращает базу данных из пассивного хранилища в платформу для создания приложений.
Ред. Родословная идеи через документирование данных в журналистике: сначала получил дамп, потом исследовал с Datasette, теперь можешь построить интерфейс прямо в нём.
Кому это важно
Разработчикам, которые строят информационные системы, поисковые движки или дашборды на основе структурированных данных. Журналистам и аналитикам, которые хотят создать кастомный интерфейс для обращения с собранными данными без написания отдельного веб-приложения. Организациям с приватной базой данных Datasette, где нужно быстро прототипировать интерактивные инструменты. AI помощникам, встроенным в Datasette Agent, которые теперь могут автоматически генерировать приложения по описанию.
Ред. Особенно полезна для тех случаев, когда скорость прототипирования важнее архитектурной чистоты отдельного фронтенда.
Как это применить
Можно попробовать на демо-сервере agent.datasette.io, авторизовав через GitHub. В форме создания приложения есть кнопка "Copy" рядом со специально подготовленным промптом: скопировал, вставил в Claude или ChatGPT, описал, что нужно (например, "инструмент для временной шкалы с поиском"), и модель генерирует HTML+JavaScript код. Затем нужно создать stored query в Datasette для операций записи, выдать приложению доступ через permission, и оно готово. Для локальной разработки плагин устанавливается через pip в существующий Datasette.
Ред. Интеграция с LLM очень тесная, но не обязательная: можно писать приложения вручную, используя postMessage() API для связи с родительским фреймом.
Можно ли доверять
Код прошёл серьёзный аудит безопасности. Simon Willison использовал Claude Fable 5 (специально для этого проекта) для анализа конфиденциального окружения и выявления реальной уязвимости: менее привилегированный пользователь мог создать приложение, которое запрашивает все таблицы, и обманув администратора на посещение приложения, получить доступ к его привилегированным данным. Уязвимость была закрыта введением нового permission (apps-set-csp), доступного только доверенному персоналу. Песочница (
Ред. Сама идея использовать Fable специально для аудита перед запретом USA показывает, что автор очень серьёзно относится к безопасности.
Риски и подводные камни
Если администратор неправильно настроит allowed_csp_origins и разрешит слишком много доменов, приложение может использовать их для экфильтрации данных. Пользователи должны понимать разницу между stored queries (которые безопасны, так как явно одобрены администратором) и прямым доступом к SQL (которого нет). Новизна плагина означает, что долгосрочные паттерны и граничные случаи ещё могут быть обнаружены сообществом. Если приложение работает с очень большими результирующими наборами, производительность iframe может упасть, так как весь HTML и JavaScript работают в одном потоке браузера.
Ред. Риск конфигурации всегда больше, чем риск технологии. Read the docs перед деплоем на production.
«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