// приватностьprivacy
Что происходит с даннымиWhat happens to your data
редакция от 5 августа 2026revision of 5 August 2026
Коротко: аккаунтов нет; на витрине стоит счётчик посещаемости — без записи сессий; сервер ведёт обычный лог запросов — в нём адреса есть, а в суточной сводке, которая остаётся, их уже нет; телеметрии нет в релизных сборках. Ниже — что именно происходит.Short version: no accounts; the site runs a visit counter with session recording off; the server keeps an ordinary request log — addresses are in it, but not in the daily aggregate that remains; no telemetry in release builds. Below is what actually happens.
Этот сайтThis site
- Счётчик посещаемости — Яндекс.Метрика (стоит на всех страницах витрины). Она считает визиты и источники переходов, строит карту кликов (координаты кликов по странице, не только по ссылкам) и ставит свои куки — в том числе
_ym_uidи_ym_d. Запись сессий (вебвизор) выключена: движения мыши, ввод в поля и содержимое страниц не пишутся. Рекламы на сайте нет.The visit counter is Yandex Metrica (present on every page of the site). It counts visits and referrers, builds a click map (coordinates of clicks anywhere on the page, not just on links) and sets its own cookies —_ym_uidand_ym_damong them. Session recording (Webvisor) is off: mouse movement, field input and page contents are not recorded. There are no ads on the site. - Счётчик — это обычный скрипт со страницы, и другого пути у него нет: с выключенным JavaScript или с блокировщиком, который режет
mc.yandex.ru, туда не уходит ни одного запроса. Невидимого «пикселя» в<noscript>здесь намеренно нет — он считал бы ровно тех, кто от счётчиков отказался. Что Яндекс делает с собранным на своей стороне — определяется его правилами.The counter is an ordinary script on the page, and it has no other route: with JavaScript disabled, or with a blocker that filtersmc.yandex.ru, not a single request goes there. There is deliberately no invisible<noscript>pixel — it would count exactly the people who opted out. What Yandex does with what it collects on its side is governed by its rules. - Сторонний адрес на странице один — счётчик выше. Шрифты отдаются с самого
nitinol.app, за ними никто никуда не ходит. Яндекс при работе счётчика видит ваш IP-адрес и User-Agent.The page carries one third-party address — the counter above. Fonts are served fromnitinol.appitself; nothing is fetched elsewhere for them. When the counter runs, Yandex sees your IP address and User-Agent. - В
localStorageбраузера ложится только состояние интерфейса: язык и тема витрины, а со стороны живого демо (оно работает на том же адресе) — раскладка панелей, свёрнутые колонки, положение каретки в заметке, выбранные цвета и подобное. Наружу эти значения не уходят.BrowserlocalStorageholds interface state only: the site’s language and theme, and from the live demo (which runs on the same origin) the panel layout, collapsed columns, caret position in a note, chosen colours and the like. None of it leaves your browser. - Живое демо на главной работает в памяти вкладки и наружу ничего не шлёт: заметки и задачи, которые вы в нём создадите, исчезают с закрытием страницы. Переживает перезагрузку только состояние интерфейса — раскладка панелей, свёрнутые колонки, выбранные цвета: оно и лежит в тех самых ключах выше.The live demo on the home page runs in tab memory and sends nothing anywhere: the notes and tasks you create there disappear when the page closes. Only interface state survives a reload — panel layout, collapsed columns, chosen colours — and that is exactly what the keys above hold.
Форма связиThe contact form
- То, что вы написали в форме, уходит на сервер
nitinol.appи превращается в письмо владельцу. Уезжает ровно то, что вы видели: текст сообщения, адрес для ответа — если вы его заполнили, — и скриншот, если вы его приложили. Раньше форма открывала почтовый клиент и на сервер не отправляла ничего; теперь отправляет, и об этом сказано прямо под кнопкой.What you type into the form goes to thenitinol.appserver and becomes an email to the author. Exactly what you saw is what travels: the message text, the reply address if you filled it in, and the screenshot if you attached one. The form used to open your mail client and send nothing to the server; now it sends, and that is stated right under the button. - Своей базы отчётов нет — приёмник не ведёт хранилище и не пишет текст сообщения в журнал. Но письмо остаётся письмом: оно проходит через почтовую очередь сервера и пересылается на личный ящик владельца в Gmail, где живёт как обычная переписка. То есть текст и скриншот доезжают до Google. Считайте это письмом, а не анонимной формой.There is no report database — the receiver keeps no storage and never writes the message text to its log. But an email stays an email: it passes through the server’s mail queue and is forwarded to the author’s personal Gmail mailbox, where it lives like any other correspondence. So the text and the screenshot do reach Google. Treat it as an email, not as an anonymous form.
- Скриншот пережимается прямо в браузере перед отправкой. Побочный и полезный эффект: перекодирование стирает служебные данные снимка — например геометку, если вы приложили не скриншот, а фотографию экрана с телефона. Исходный файл не отправляется никогда.The screenshot is re-encoded in your browser before it is sent. A useful side effect: re-encoding strips the image’s embedded metadata — a geotag, for instance, if you attached a phone photo of a screen rather than a screenshot. The original file is never sent.
- Галка «Я не робот» ничего о вас не собирает и никуда не обращается: браузер просто считает небольшую задачу локально. Сторонних капч на сайте нет — сторонний адрес по-прежнему ровно один, счётчик выше.The “I’m not a robot” checkbox collects nothing about you and contacts no one: your browser simply computes a small puzzle locally. There are no third-party captchas here — the page still carries exactly one third-party address, the counter above.
Логи сервера и статистикаServer logs and statistics
- Сервер ведёт обычный access-лог — и для сайта, и для фида обновлений. В строке лога: адрес, с которого пришёл запрос, время, метод и адрес запрошенного файла, код и размер ответа, страница-источник перехода целиком и User-Agent. Это стандартная запись веб-сервера, а не отдельный сбор. Ротация настроена ежедневной, с 14 архивами: когда она отрабатывает штатно, файлы старше исчезают. Это настройка, а не гарантия точного срока: не сработавшая вовремя ротация может продлить жизнь архива.The server keeps an ordinary access log — for the site and for the update feed alike. Each line holds: the address the request came from, the time, the method and the path requested, the response code and size, the full referring page, and the User-Agent. This is a standard web-server record, not a separate collection effort. Rotation is configured daily, keeping 14 archives: when it runs as intended, older files disappear. That is a configuration, not a guarantee of an exact lifetime: a rotation that fails to run on time keeps an archive alive longer.
- Из логов раз в час собирается сводка: сколько было запросов и сколько разных посетителей за сутки, какие страницы открывали, откуда переходили, какие версии скачивали. Чтобы посчитать «разных», адрес не сохраняется — считается необратимый отпечаток, и соль у него своя на каждые сутки. Отпечаток существует только во время подсчёта, на диск не попадает вовсе, а отпечатки разных суток между собой не сопоставляются.Once an hour those logs are aggregated: how many requests and how many distinct visitors there were that day, which pages were opened, where people came from, which versions were downloaded. To count “distinct”, the address is not stored — an irreversible fingerprint is computed instead, and its salt is different for every day. The fingerprint exists only while the count runs, never reaches disk, and fingerprints from different days cannot be matched against each other.
- Пока живы сами сырые логи (до 14 суток), сводка дополнительно считает по ним скользящие числа: сколько разных адресов обращалось к каналу обновлений за последние 7 суток и сколько из них приходило повторно в разные дни за 13 суток. Для этого адреса сопоставляются между сутками в памяти подсчёта — ровно в пределах того окна, что и так лежит в сыром логе; в сохранённые числа попадает только итог, адреса и отпечатки на диск по-прежнему не попадают. Когда лог уходит из ротации, пересчитать эти числа больше нечем.While the raw logs themselves are alive (up to 14 days), the aggregation additionally computes rolling numbers from them: how many distinct addresses reached the update channel over the last 7 days, and how many of those came back on separate days within 13 days. For this, addresses are matched across days in the memory of the counting run — strictly within the window the raw log already holds; only the resulting totals are stored, and addresses and fingerprints still never reach disk. Once a log rotates away, these numbers can no longer be recomputed.
- Бессрочно остаются только суточные числа и при них: адреса открытых страниц, имена сайтов, откуда к нам перешли, номера скачанных версий и семейства клиентов вида
Windows · Chrome— без версии браузера, потому что полная строка User-Agent почти уникальна и работала бы как метка устройства.What remains indefinitely is only the daily numbers and, with them: the paths of pages opened, the names of the sites people came from, the version numbers downloaded, and client families such asWindows · Chrome— without the browser version, because a full User-Agent string is nearly unique and would work as a device marker. - С той же суточной сводкой остаются платформа и версия установленной программы, и охват у них разный. Платформа — у каждой установки, которая спросила фид обновлений: она видна по тому, какой файл запрошен (
latest.yml— Windows,latest-linux.yml— Linux,latest-mac.yml— macOS), то есть это адрес файла, а не что-то о вас. Версия — только у тех установок, которые пошли проверять подпись обновления: тогда программа представляется какNitinol/<версия>. Установка, у которой уже стоит последняя версия, за проверкой не ходит и в разбивку по версиям не попадает вовсе. Нужно это ровно для одного вопроса: доехало ли обновление и до скольких установок. Версия хранится огрублённой домажор.минор.патч— всё, что после, отбрасывается, чтобы произвольная строка не стала меткой. Оговорка честная: при небольшом числе пользователей редкое сочетание версии и платформы сужает круг — единственный, скажем, пользователь Linux на старой версии узнаваем изо дня в день. Это тот же остаточный канал, что и с редким сайтом-источником выше, и он назван, а не спрятан.The same daily aggregate also keeps the platform and the installed app version, and their reach differs. The platform is recorded for every installation that asked the update feed: it follows from which file was requested (latest.ymlfor Windows,latest-linux.ymlfor Linux,latest-mac.ymlfor macOS) — an address of a file, not something about you. The version is recorded only for installations that went on to verify an update signature: there the app identifies itself asNitinol/<version>. An installation already on the latest version never makes that request and never appears in the version breakdown at all. This exists for exactly one question: did the update arrive, and to how many installations. The version is stored coarsened tomajor.minor.patch— anything after that is discarded, so an arbitrary string cannot become a marker. An honest caveat: with a small number of users, a rare combination of version and platform narrows the field — the only Linux user on an old version, say, is recognisable from day to day. This is the same residual channel as the rare referring site above, and it is named rather than hidden. - Чего нет: когорт, воронок и профиля посетителя. Всё это требует устойчиво связать вас между сутками, а сохранённым числам связывать нечем: отпечаток за пределы суток не выходит, и в них вас не найти. Единственное кросс-суточное число — счётчик повторных обращений из пункта выше, он считается только пока жив сырой лог и хранится одним числом без чего-либо о вас. Две оговорки, чтобы не обещать лишнего. Первая: пока жив сам access-лог, в нём лежат адрес и User-Agent за те дни, что он ещё хранит, и у того, кто имеет доступ к серверу, они есть и без всякой сводки — гарантия выше про сохранённую сводку, а не про логи. Вторая: имена сайтов-источников сохраняются как пришли, и если к нам ведёт ссылка с редкого личного адреса, по которому ходите только вы, такой источник может встретиться в разных сутках.What is not computed: cohorts, funnels, or a visitor profile. All of those require durably linking you across days, and the stored numbers have nothing to link with: the fingerprint never leaves its day, and you cannot be found in them. The only cross-day number is the repeat-visits counter from the point above; it is computed only while the raw log is alive and is stored as a single number carrying nothing about you. Two caveats, so as not to promise more than is true. First: while the access log itself is alive, it holds the address and User-Agent for the days it still keeps, and anyone with access to the server has them without any aggregate — the guarantee above is about the stored aggregate, not about the logs. Second: the names of referring sites are stored as they arrive, so if a link to us sits at some rare personal address that only you visit, that source may show up on more than one day.
ПриложениеThe app
- Телеметрии и крэш-репортов в релизных сборках нет. Точнее: сбор событий в коде есть, но в собранном релизе по умолчанию выключен. Включить его можно только запустив программу с переменной окружения
NITINOL_TELEMETRY=1— это отладочный режим для разбора полевой проблемы, и он ваш, а не мой: события ложатся в локальный файл, а при включённом синке едут в ваше же хранилище зашифрованными. Формулировка про механизм, а не «телеметрии нет вообще»: исходники закрыты, поэтому обещание сформулировано так, чтобы его можно было проверить снаружи — без этой переменной файл.logs/telemetry.jsonlв папке данных не появляется вовсе.Release builds carry no telemetry and no crash reports. More precisely: event collection exists in the code but is off by default in a release build. It can only be enabled by launching the app with theNITINOL_TELEMETRY=1environment variable — a debug mode for diagnosing a field problem, and it stays yours, not mine: events land in a local file and, with sync on, travel to your own storage encrypted. The wording names the mechanism rather than claiming “no telemetry at all”: the source is closed, so the promise is phrased to be checkable from the outside — without that variable the file.logs/telemetry.jsonlnever appears in your data folder at all. - В сеть приложение выходит так: обновления — по выбранному в настройках режиму: «Автоматически», «Только проверять» (так по умолчанию) или «Вручную». По умолчанию программа только спрашивает фид, есть ли версия новее; скачивание и установка происходят только по вашему явному действию — либо по действию для конкретного обновления, либо по однажды сделанному вами выбору режима «Автоматически», где программа дальше обновляется сама. Установка из
.debсебя не обновляет — новая версия приходит через apt (apt upgrade, если подключён репозиторий) или переустановкой пакета. Дальше: запросы к LLM-провайдеру, которого вы подключили сами, по вашему ключу и напрямую; синхронизация с вашим хранилищем — наружу уходит только шифртекст. Аккаунта и идентификатора устройства в проверке обновлений нет, но сервер, как при любом HTTP-запросе, видит ваш IP-адрес, время и User-Agent; что с этим происходит дальше — в разделе «Логи сервера и статистика».The app reaches the network in these ways: updates — in the mode you choose in settings: “Automatically”, “Check only” (the default) or “Manually”. By default the app only asks the feed whether a newer version exists; downloading and installing happen only on your explicit action — either per update, or through your one-time choice of the “Automatically” mode, after which the app keeps itself updated. A.debinstall never updates itself — a new version arrives via apt (apt upgrade, if the repository is connected) or by reinstalling the package. Beyond that: requests to an LLM provider you connected yourself, with your key, directly; synchronisation with your own storage, where only ciphertext leaves the device. The update check carries no account and no device identifier, but the server — as with any HTTP request — sees your IP address, the time and your User-Agent; what happens to that afterwards is in “Server logs and statistics”. - Встроенный MCP-сервер слушает только
127.0.0.1и в сеть не выходит.The built-in MCP server listens on127.0.0.1only and never goes to the network. - Второй локальный слушатель — приём захватов снаружи (для локальных коннекторов и скриптов). Он тоже слушает только
127.0.0.1, по умолчанию выключен — порт не открывается вовсе, — и даже включённым ничего не принимает без выданного вами токена и явно разрешённых проектов.A second local listener is capture intake (for local connectors and scripts). It also listens on127.0.0.1only, is off by default — no port is opened at all — and even when on it accepts nothing without a token you issued and projects you explicitly granted.
Данные и ключиData and keys
- Данные лежат в обычной папке на вашем диске. При включённой защите хранилища база и вложения зашифрованы — защиту стоит включить, без неё файлы лежат открыто. Даже при ней открытыми остаются настройки, списки папок, логи и всё, что вы экспортировали руками; вложение, открытое во внешней программе, на время кладётся расшифрованным во временный каталог.Your data lives in an ordinary folder on your disk. With storage protection enabled the database and attachments are encrypted — worth turning on, since without it the files sit in the clear. Even with it, settings, folder lists, logs and anything you exported by hand stay in the clear; an attachment opened in an external app is written decrypted to a temp folder for the duration.
- Удаление приложения ваши файлы не трогает — но деинсталлятор отдельно спрашивает, снести ли папку с данными и ключами. По умолчанию там «Нет»; если ответить «Да», данные удалятся безвозвратно.Uninstalling the app leaves your files alone — but the uninstaller separately asks whether to wipe the data folder along with your keys. The default answer is “No”; answering “Yes” deletes the data irreversibly.
- Ключ LLM-провайдера хранится через системное хранилище секретов ОС, а если оно недоступно — открытым текстом в настройках.Your LLM provider key is stored through the OS secret store, and if that is unavailable, in plain text in the settings file.
ВопросыQuestions
Пишите на hi@nitinol.app.Write to hi@nitinol.app.
Это фактическое описание поведения сайта и приложения, а не юридический документ: политики обработки персональных данных с оператором и реквизитами у проекта пока нет. Условия использования — в оферте.This is a factual description of how the site and the app behave, not a legal document: the project has no formal data-processing policy with a named operator yet. Terms of use live in the offer.