Об этом проекте

ThinkWatch — это self-hosted шлюз, который централизует все запросы к AI-моделям и вызовы инструментов MCP в организации. Он действует как точка контроля, подобная bastion-хосту, располагаясь между клиентами, такими как Claude Code, Cursor, пользовательскими агентами и пайплайнами CI/CD, и вышестоящими провайдерами, включая OpenAI, Anthropic, Google Gemini, Azure OpenAI и AWS Bedrock. Ключевые возможности: - **Идентичность MCP для каждого пользователя**: пользователи подключают собственные аккаунты GitHub, Notion, Linear, Slack или Atlassian через OAuth или личные токены, поэтому в вышестоящих журналах аудита отображается реальный исполнитель. Токены шифруются при хранении, а списки инструментов кэшируются для каждого пользователя. - **Защитные механизмы**: PII, такие как адреса электронной почты, номера телефонов и номера карт, редактируются перед отправкой запросов вышестоящим системам и восстанавливаются в ответах, включая потоковые ответы. Вызовы инструментов проверяются по правилам опасных команд, а скрытые символы Unicode и фразы prompt-injection могут регистрироваться или отклоняться. - **Идентичность организации**: вход выполняется через любого OIDC-провайдера с опциональным TOTP. Пять встроенных ролей плюс пользовательские роли управляют доступом к моделям, инструментам и страницам администрирования. - **Единые ключи**: виртуальные ключи `tw-` могут быть ограничены AI-шлюзом, MCP-шлюзом или обоими. Ключи хранятся в виде хэшей и поддерживают ротацию с льготным периодом. - **Лимиты скорости и бюджеты**: скользящие окна от одной минуты до одной недели ограничивают запросы или токены, а дневные, недельные или месячные бюджеты ограничивают расходы. Лимиты привязываются к пользователям, API-ключам или ролям. - **Учёт затрат**: расходы отображаются по моделям, пользователям, провайдерам и центрам затрат, с CSV-отчётами для внутренних расчётов и прогнозами на конец месяца. Веса для каждой модели делают дорогие модели более значимыми при расчёте квот. - **Журнал аудита**: каждый запрос к модели и вызов инструмента записывается в ClickHouse с указанием пользователя, параметров, ответа, задержки и ошибок. События могут пересылаться в SIEM через Syslog, Kafka через REST-прокси или подписанные вебхуки. - **Многоформатная конечная точка**: запросы OpenAI Chat Completions, OpenAI Responses, Anthropic Messages и Gemini обслуживаются на одном порту и преобразуются в формат вышестоящего провайдера. Маршрутизация распределяет трафик по весу, задержке или работоспособности, с автоматическим выключателем для отказывающих вышестоящих систем. Проект включает шлюз на порту 3000 и консоль управления на порту 3001. Развёртывание поддерживается через Docker Compose и Kubernetes с Helm-чартом. Консоль предоставляет инструкции по настройке для Claude Code, Cursor, Continue, Cline, SDK OpenAI и Anthropic, а также cURL. ThinkWatch доступен с исходным кодом по лицензии Business Source License 1.1. Непроизводственное использование бесплатно, а производственное использование бесплатно до 10 000 000 оплачиваемых токенов и 10 000 вызовов инструментов MCP за календарный месяц, после чего требуется коммерческая лицензия.