Полнофункциональное командное и групповое чат-приложение, которое легко развернуть самостоятельно.
Отличное чат-приложение для команд и сообществ — бесплатное, простое в самостоятельном развёртывании, облачный хостинг скоро будет доступен.
В этом репозитории временно инкубируется ранняя версия модуля поставщика удостоверений (identity provider) Authling. Authling разрабатывается и выпускается независимо от Chatto; предполагается перенести его в отдельный репозиторий, как только отпадёт необходимость в частых атомарных изменениях совместно используемых компонентов: фреймворка event sourcing, встроенного NATS runtime, криптографических примитивов для данных и загрузчика конфигурации приложения.
Локальный стек разработки
Запустите локальный бэкенд Chatto, фронтенд на Vite, Authling, Mailpit и LiveKit:
mise trust
mise install
mise setup
(cd authling && mise trust && mise install && mise deps)
mise dev
mise dev запускает все сервисы в одной управляемой группе процессов. Vite автоматически перезагружает изменения фронтенда. После изменений в Go-коде Chatto или Authling необходимо перезапустить стек вручную. Команда mise setup собирает общие типы API и пакеты Lingua.
Portless предоставляет HTTPS-маршруты для сервисов, доступных из браузера. В Conductor замените <workspace> именем вашего рабочего пространства:
Вне Conductor Portless использует суффикс маршрута local. Сервисы слушают на петлевых (loopback) портах, начиная с базового порта 4000 (или $CONDUCTOR_PORT внутри Conductor).
Создайте аккаунт Authling, считайте код подтверждения из Mailpit, затем выберите Authling на экране входа в Chatto. При первом входе Chatto запросит имя пользователя. Стек также создаёт владельца Chatto alice и участника bob; оба используют пароль foobar123, предназначенный только для разработки.
Стек запускает пример бота Runling на петлевом адресе по базовому порту плюс три (http://localhost:4003 вне Conductor). Бот использует загрузочный (bootstrap) аккаунт TestBot и автоматически получает URL бэкенда и путь к API-ключу. На пустом сервере bootstrap также создаёт исходящий вебхук TestBot. На уже существующих серверах сохранённая конфигурация остаётся без изменений.
Chatto использует Authling в качестве OIDC-провайдера для разработки. Данные встроенного NATS Chatto хранит в cli/data/nats/, данные поиска — в cli/data/search/. Данные удостоверений Authling находятся в .context/dev-portless/<workspace>/nested/authling/.
Эти учётные данные и аккаунты предназначены исключительно для локальной разработки. Остановите mise dev, чтобы завершить работу сервисов и снять регистрацию маршрутов. После остановки стека удалите cli/data/, чтобы сбросить состояние Chatto, или удалите директорию с данными удостоверений, чтобы сбросить Authling. Новое имя рабочего пространства в Conductor также создаёт нового Authling-издателя (issuer) и новую директорию состояния.
Если в рабочем дереве (worktree) данные NATS хранятся по прежнему пути cli/data/jetstream/, воспользуйтесь инструкцией по миграции из CONTRIBUTING.md.
Portless создаёт и добавляет в доверенные разработческий удостоверяющий центр (CA) при первом запуске. Если macOS не может отобразить диалог авторизации, выполните эту команду один раз в интерактивном терминале:
mise x node@24 npm:portless@0.15.5 -- portless trust
Лицензия
По умолчанию Chatto распространяется под лицензией AGPL-3.0-or-later. Независимо версионируемые модули общего фреймворка, самостоятельный фронтенд, интеграционные интерфейсы, документация и примеры используют Apache-2.0. Точная граница описана в файлах LICENSING.md и REUSE.toml.
Лицензии проекта не предоставляют права на использование названий и логотипов Chatto в качестве официального брендинга для форков или модифицированных версий; подробнее см. NOTICE.
Участие в разработке
Заметки по локальной разработке приведены в CONTRIBUTING.md. В настоящее время проект не принимает внешние вклады.