Синхронизация в Tetiva — это аккаунт в Tetiva Cloud. Регистрация, вход, подтверждение почты и восстановление пароля живут на сайте: приложение открывает браузер, вы подтверждаете вход там, и сессия возвращается в клиент. Дальше коллекции, запросы, окружения и переменные воркспейса начинают ездить между вашими устройствами, а история, куки и настройки приложения остаются на компьютере. Для локальной работы аккаунт не нужен. Войти придётся только ради синхронизации или публикации коллекций, и сделать это можно в любой момент.
Вход через браузер#
Иконка облака в панели слева открывает окно «Синхронизация» с подзаголовком «Подключитесь, чтобы пространства синхронизировались между устройствами.» Пока приложение выясняет у сервера, что тот умеет, в окне написано «Проверяем сервер…».
Для Tetiva Cloud в окне две кнопки и ни одного поля — «Войти через браузер» и «Создать аккаунт» (вторая показывается, если сервер разрешает регистрацию), а под ними подпись «Откроется app.tetiva.app в браузере».


Нажатие открывает браузер и переводит окно в режим ожидания: сначала «Связываемся с app.tetiva.app…», затем «Ждём, пока вы закончите в браузере — подтвердите вход там и вернитесь сюда», таймер «Истекает через мм:сс» и кнопки «Открыть снова», «Копировать ссылку» и «Отмена». Внизу панели стоит предупреждение «Подтвердить вход может любой, у кого есть эта ссылка.» — относитесь к ссылке как к одноразовому паролю. Перезагрузка окна ожидание не сбрасывает.
Страница кабинета открывается на языке системы; по-русски на ней видно, чем представилось приложение: Приложение сообщило о себе: {device} · {platform} · Tetiva {version} и Запрошено {time} с адреса {ip}. Если запрос пришёл не с того адреса, с которого вы открыли страницу, она это отдельно отметит. Действий три: ссылка Это не мой аккаунт — войти под другим аккаунтом, Разрешить — подтвердить вход, Это не я — отказать. Отказ открывает экран Запрос отклонён, и уже на нём есть Выйти на всех устройствах: если запрос действительно не ваш, одной кнопкой закрываются все сессии.
Ошибки приходят прямо в панель ожидания, и их текст пока на английском: Sign-in was denied in the browser, Sign-in link expired, try again, This server does not offer browser sign-in, Sign-in failed, try again. Если вход отменить, панель напишет «Вход отменён». В обоих случаях рядом появляется кнопка «Попробовать снова».
После обновления с версии 0.17.0 или старее нужно войти заново — один раз. Схема авторизации изменилась, прежняя сессия не подходит, и до повторного входа синхронизация не стартует вовсе. Приложение говорит об этом при запуске уведомлением на английском Sign-in has changed with this update. Please sign in again. с кнопкой Sign in.
Свой сервер#
Пункт «Свой сервер» раскрывает поле «Адрес сервера» с плейсхолдером хост:порт — например, localhost:50051 и подсказкой «Оставьте пустым, чтобы подключиться к Tetiva Cloud.» Ввод нормализуется: http:// или https:// и хвостовой слэш срезаются, а если порт не указан — добавляется :443.
Приложение само спрашивает у сервера, умеет ли тот вход через браузер. Умеет — дальше всё как в облаке, только адрес кабинета будет свой: клиент берёт его у сервера, а не хранит зашитым. Не умеет — окно показывает прежнюю форму с вкладками «Вход» и «Регистрация»: поля «Почта» и «Пароль», для регистрации ещё «Имя», кнопки «Подключиться» и «Зарегистрироваться». Сервер старой версии, который про такой вопрос ничего не знает, попадает в ту же ветку, и это не ошибка.
Подтверждение почты#
У облачных пользователей почта подтверждается на сайте, поэтому экран подтверждения в приложении вы, скорее всего, не увидите. Он появляется в одном случае: браузерный вход прошёл, а адрес ещё не подтверждён. Пока подтверждения нет, синхронизация не включается — это единственное ограничение, локальная работа доступна сразу.
Заголовок — «Проверьте почту», ниже «Мы отправили письмо на» с вашим адресом и «Синхронизация включится сразу после подтверждения. Работать локально можно уже сейчас.» Кнопки:
- «Я подтвердил» — проверить статус сейчас; кроме этого статус опрашивается сам, пока окно открыто. Когда опрос останавливается, экран пишет «Автопроверка остановлена. Нажмите „Я подтвердил“, когда перейдёте по ссылке из письма»;
- «Отправить ещё раз» — повторное письмо, с обратным отсчётом «Отправить ещё раз через N с». Если писем запрошено слишком много: «Слишком много писем. Попробуйте через несколько минут»;
- «Выйти» и «Закрыть» — выйти из аккаунта и закрыть окно.
Пока почта не подтверждена, иконка облака жёлтая с точкой, а подсказка у неё — «Подтвердите почту, чтобы включить синхронизацию». Восстановления пароля в приложении нет вообще — ссылка на него живёт только на сайте.
Устройства#
У подключённого аккаунта в окне «Синхронизация» есть раздел «Устройства». Пока список грузится, там стоит «Загружаем устройства…»; текущее устройство помечено бейджем «Это устройство» — кнопки у него нет. У остальных строк своя кнопка «Выйти», а если устройств больше одного, появляется «Выйти на других устройствах» — с подтверждением «Выйти на всех других устройствах?» и кнопками «Подтвердить» и «Отмена». Когда других устройств нет, раздел пишет «Других устройств нет.»
Выше него — список «Синхронизируемые пространства»; пустой выглядит как «Синхронизируемых пространств нет. Облачные пространства появятся здесь сами.» В шапке подключённого состояния написано «Подключено к Tetiva Cloud под аккаунтом» и ваша почта.
Индикатор состояния#
Цвет и подсказка облака в панели слева показывают, что происходит:
- зелёное облако — подключено;
- крутящийся индикатор — идёт отправка, приём, подписка или полная пересинхронизация;
- серое перечёркнутое облако — офлайн или аккаунт не подключён;
- красное облако, «Сессия истекла — войдите, чтобы продолжить синхронизацию» — сервер отклонил refresh-токен, сессия закончилась. Откройте окно «Синхронизация» и войдите заново;
- янтарное «Синхронизация на паузе — достигнут лимит тарифа» — тариф не позволяет синхронизировать больше;
- красное облако, «Синхронизация остановлена — обновите приложение, чтобы получить новые изменения» — на этом устройстве стоит версия, которая не понимает схему авторизации, сохранённую другим;
- оранжевый счётчик на иконке — сколько локальных правок ждут отправки.
Отсюда правило: обновляйте все устройства сразу. Старая версия не примет коллекцию или запрос со схемой авторизации, которой она не знает, и синхронизация на отставшем устройстве встанет с состоянием «Синхронизация остановлена», пока вы его не обновите.
Работа офлайн#
Каждая правка попадает в локальную очередь в той же транзакции, что и сама запись в базу, — офлайн ничего не теряется и не требует отдельного действия от вас.
Когда связь появляется, клиент отправляет очередь пачками до ста записей, схлопывая повторные правки одной и той же сущности в одну. Переподключение идёт с растущей паузой от пяти секунд до пяти минут, а раз в пятнадцать минут выполняется страховочный опрос на случай, если поток событий тихо оборвался. Конфликты разрешает сервер; клиент применяет победившую версию и обновляет открытые вкладки.
Несохранённые правки во вкладке при этом не пропадают. При сохранении вкладка берёт пришедшие изменения, а ваши оставляет там, где другое устройство запрос не трогало. Если обе стороны поменяли одну и ту же часть запроса (URL, заголовки, тело или авторизацию), остаётся пришедшая версия. Так работает с клиента 1.3.1, раньше сохранение записывало вкладку целиком поверх чужой правки.
Что уезжает на сервер, а что нет#
Синхронизируются коллекции (вместе с описанием, скриптами и авторизацией), запросы с описаниями, примеры ответов, окружения и переменные.
Остаётся только на этом компьютере: история запросов с ответами, cookie-jar, настройки приложения, черновики вкладок, полученные токены OAuth 2.0 и refresh-токен — он лежит в системной связке ключей и дублируется в локальной базе на случай, если связка недоступна.
Описания запросов синхронизируются с клиента 1.1.1, нужен сервер 0.18 или новее. Примеры ответов синхронизируются с 1.2.0 и требуют сервера 0.19: старый сервер оставит их на устройстве, пока его не обновят. Как устроен редактор описаний — в коллекциях.
Отдельно о секретах. Флаг «секрет» у переменной прячет значение в интерфейсе и вырезает его из ответов MCP-инструментов, но на хранение он не влияет: значение уходит на сервер вместе с остальными переменными окружения. Считайте его защитой от чужого взгляда через плечо. На сервере содержимое коллекций, запросов, окружений и переменных хранится зашифрованным (AES-256-GCM), а мастер-ключ лежит отдельно от базы: одного её дампа для чтения данных недостаточно. Данные читает и сам сервис: он их расшифровывает, чтобы отдавать вашим устройствам. Это не сквозное шифрование — ключ есть у сервиса, а не только у ваших устройств.
На вашем компьютере база не зашифрована, и экспорт окружения пишет значения как есть. То, что не должно покидать машину вообще, в синхронизируемый воркспейс класть не стоит. Подробности о переменных и приоритете подстановки — на странице Окружения и переменные.
Отключение#
Кнопка «Отключиться» в окне «Синхронизация» выходит из аккаунта и удаляет сохранённый токен и из связки ключей, и из локальной базы. Локальные данные остаются на месте; воркспейсы, которые были синхронизированы, вернутся после следующего входа. Где физически лежит база — на странице Настройки.