Запись в Notion - и текст на чужом сервере. Задачи в облачном планировщике - данные в чужой аналитике.
Волна локальных LLM показала широкой аудитории, что on-device - это реально. Модель работает, данные не покидают машину. Тот же сдвиг происходит с обычными инструментами. Всё заметнее, что ежемесячная подписка - это аренда софта, которым не владеешь и который нельзя отключить от сети.
Я доделал свои 7 pet-проектов. Все работают целиком в браузере, без сервера, без регистрации, без отправки данных куда-либо. Только локальное хранилище, шифрование на стороне клиента и нативные браузерные API. Идея "колеса жизни", вокруг которого они собраны, описана в посте Круг жизни; тогда это была визуализация верхнеуровневая, на главной странице сайта я визуализировал степень готовности каждого инструмента.
IDEF0-редактор для функциональных диаграмм
IDEF0 - простейший стандарт описания бизнес-процессов, разработанный в ВМФ США для описания производства. Им легко описывать любые бизнес-процессы верхнеуровнево. Для более детальной проработки - BPMN подойдет лучше. Когда компания рисует схему "как мы обрабатываем заявки" или "как устроена цепочка согласований" - это внутренняя кухня, которую не хочется отправлять в чужое облако. При этом специализированного браузерного редактора IDEF0 до сих пор не было вообще. Стандарт нишевой, и в универсальных рисовалках он превращается в набор прямоугольников без стандартизации.
Редактор знает правила стандарта и проверяет диаграмму на лету. Неправильно подключённая стрелка подсвечивается прямо на схеме, как ошибка компилятора. Крупный блок можно "провалить" вглубь и расписать подробнее, так строится иерархия процессов. Готовая диаграмма выгружается в SVG, PNG или JSON.
Под капотом
SVG + Vue 3, строго по американскому федеральному стандарту FIPS 183. Валидация ICOM-правил даёт каждой стрелке строгую семантику. Вход слева, управление сверху, выход справа, механизм снизу. Данные хранятся в IndexedDB браузера, открытые вкладки синхронизируются между собой через localStorage.
→ IDEF0-редактор | Разбор архитектуры
Зашифрованный дневник в браузере
Большинство дневниковых приложений хранят записи в облаке разработчика и берут за это деньги. Day One синхронизирует через свои серверы, Notion индексирует всё, что в него попадает. Для текста, который пишется только для себя, это странная архитектура.
Этот дневник открывается паролем и мотивирует писать 500 слов в день, счётчик прогресса ведётся сам. Прошлые записи доступны в том же интерфейсе. Переносить между девайсами можно с помощью функций Импорт/Экспорт, наружу уходит только зашифрованный файл.
Под капотом
Шифрование AES-GCM, ключ выводится из пароля через PBKDF2 в 600 тысяч итераций и существует только в памяти открытой вкладки. Вкладка закрыта - с устройства взять нечего. В IndexedDB лежит только зашифрованный конверт { salt, iterations, iv, ciphertext }, всё в base64. Открытого текста на диске нет. Расшифровка происходит только после ввода пароля.
→ Дневник
Тренажёр фортепиано с MIDI-клавиатурой
Для разучивания пьес нужна мгновенная обратная связь, та нота сыграна или не та. Synthesia делает это давно, но это нативное приложение, которое надо ставить и покупать.
Здесь достаточно подключить MIDI-клавиатуру по USB, браузер увидит её сам, без программ и драйверов. На экране ноты, приложение в реальном времени сверяет сыгранное с партитурой. Режимов два, повтор такта для разучивания и проигрыш фразы целиком для шлифовки. Свои пьесы можно импортировать в форматах MusicXML, ABC и MIDI.
Под капотом
Web MIDI API нативно поддерживается в Chrome и Edge. Ноты рендерит OpenSheetMusicDisplay через MusicXML. MIDI-импорт читает тактовый размер из файла; если размера там нет, приложение спросит его перед разбором. Safari не поддерживает Web MIDI API, Firefox держит его под флагом в настройках.
Редактор поз OpenPose для ControlNet
В работе со Stable Diffusion ControlNet принимает скелет OpenPose как условие для управления позой персонажа. Обычно скелет готовят в AUTOMATIC1111 или ComfyUI, а это локальные Python-инструменты с отдельной установкой. Онлайн-редакторы на Hugging Face работают через их серверы, изображения туда уходят.
Здесь всё проще. Загружаете фото, хоть пачкой, и скелет распознаётся прямо в браузере, до двух человек на кадре. Точки поправляются мышью, людей можно добавлять и убирать. На выходе PNG с чёрным фоном для ControlNet и JSON в формате OpenPose. Фотографии при этом никуда не отправляются.
Под капотом
MediaPipe BlazePose работает в браузере как WASM, без серверных вызовов. 33 ключевые точки BlazePose конвертируются в 18 точек COCO OpenPose (шея вычисляется как середина плеч, в BlazePose такой точки нет). JSON соответствует формату OpenPose v1.3 с нормализованными координатами 0-1. Модель весит ~10,8 МБ и загружается при старте с этого же сайта, не с чужого сервера.
Планировщик задач
База обычная. Проекты, задачи, приоритеты, сроки, канбан-доска и список. Шифрование то же, что в дневнике, ключ живёт только в памяти сессии. Приватные заметки к задачам не покидают зашифрованное хранилище никогда.
Отдельная возможность - совместная работа с AI-агентом. Планировщик кладёт задачи в обычный файл на диске, и агент вроде Claude Code может читать и править их вместе с вами, не зная пароля и не видя приватных заметок.
Под капотом
Мост работает через File System Access API (только Chrome и Edge). В выбранную папку пишется plaintext tasks.json, структура данных без заметок. При фокусе окна приложение перечитывает файл и сливает изменения по принципу last-write-wins, побеждает задача с большим updatedAt. Отсутствие задачи в файле не считается удалением, устаревший файл не сотрёт данные.
Журнал решений
Самый нишевый из семи. Решение фиксируется в момент принятия. Контекст, варианты, выбор, ожидаемый исход, уверенность в процентах, дата пересмотра. Когда дата наступает, приложение спросит, сбылось или нет. Из накопленных ответов складывается таблица вида "заявлено 70% уверенности, сбылось X%".
Смысл не в угадывании, а в обратной связи. Насколько субъективные оценки соответствуют реальности. Уверенность "на 90%" в событиях, которые сбываются в 60% случаев, - полезный факт о собственном мышлении.
Локальных аналогов практически нет. Существующие инструменты для отслеживания решений - либо тетрадь, либо корпоративные платформы для командных ретроспектив. Приватный зашифрованный журнал с калибровочной статистикой - пустующая ниша.
Под капотом
Калибровка считается оценкой Брайера, где 0 - идеальная калибровка, а 0.25 - уровень подбрасывания монетки. Плюс разбивка по корзинам уверенности. Хранение и шифрование те же, что в дневнике и планировщике.
AR Engine, аудиовизуализатор на WebGPU
Задача - не просто слышать звук, а видеть его структуру. Где бас, где атака, насколько "яркий" тембр в данный момент.
Бросаете трек в окно, и музыка превращается в живую графику. Плазма, узоры Хладни, "зрачок", расширяющийся на каждый удар, и авторежим, который переключает картины в такт. Бас, высокие и атаки двигают разные части картинки независимо.
Под капотом
Аудиоанализ написан на C и собран в WASM через Emscripten. FFT, четыре полосы RMS-огибающих (суб, бас, мид, высокие), детектор битов по спектральному потоку, спектральный центроид. JS читает структуру AudioFrame из 13 чисел прямо из WASM-кучи каждый кадр, без сериализации между слоями. Рендеринг построен на compute shaders WebGPU, до 500 тысяч частиц; на слабом железе число автоматически снижается до 300k или 150k. WebGPU начинался как "только Chrome 113+", за последний год подтянулись Safari 26 и Firefox на Windows; самый предсказуемый вариант всё ещё Chrome.
→ AR Engine (Chrome 113+, WebGPU) | Разбор архитектуры
Все семь инструментов сделаны для личного использования, отсюда их форма. Без регистрации, без мультитенантности, без монетизации. Только браузерные API, шифрование на клиенте и данные, которые не уходят с устройства.
Честности ради, у local-first есть цена. IndexedDB - хранилище браузера, и браузер вправе его почистить. Поэтому в каждом инструменте есть экспорт в файл. Бэкапы - ответственность пользователя, а не чьего-то облака.
Это инженерный размен. Меньше чужих серверов, больше собственной ответственности.