
Авторизованная исследовательская лаборатория безопасности, воспроизводящая CVE-2026-27941 (pwn-запрос в рабочих процессах pull_request_target) — снимок openlit/openlit
Автоматизированный исследовательский артефакт — не вышестоящий проект.
Этот репозиторий — одноразовая лаборатория, созданная автоматизированным конвейером для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей рабочих процессов GitHub Actions. Это дословный снимок
openlit/openlitна коммите8529a7746ce2cae946bd2346cb3792c22f86cbee(2026-02-24), распространяемый под собственной лицензией этого проекта, файл которой включён без изменений в данный снимок.Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение; никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которым они соответствовали на 2026-02-24; см.
pinning.mdв выводе конвейера для каждого изменения, внесённого в снимок.Вопросы или возражения: [email protected]
❤️ Поддержите этот проект ❤️
OpenLIT позволяет упростить ваш рабочий процесс разработки AI, особенно для генеративного AI и LLM. Он оптимизирует такие ключевые задачи, как эксперименты с LLM, организацию и версионирование промптов, а также безопасное хранение API-ключей. Всего одной строкой кода вы можете включить нативную для OpenTelemetry наблюдаемость, обеспечивающую мониторинг полного стека, включая LLM, векторные базы данных и GPU. Это позволяет разработчикам уверенно создавать AI-функции и приложения, плавно переходя от тестирования к продакшену.
Этот проект с гордостью следует и поддерживает Semantic Conventions вместе с сообществом OpenTelemetry, постоянно обновляясь в соответствии с новейшими стандартами наблюдаемости.

📈 Панель аналитики: отслеживайте состояние и производительность вашего AI-приложения с помощью детализированных дашбордов, которые отслеживают метрики, затраты и взаимодействия пользователей, обеспечивая чёткое представление об общей эффективности.
🔌 SDK наблюдаемости, нативные для OpenTelemetry: вендор-нейтральные SDK для отправки трейсов и метрик в ваши существующие инструменты наблюдаемости.
💲 Отслеживание затрат для кастомных и дообученных моделей: адаптируйте оценку затрат для конкретных моделей с помощью пользовательских файлов цен для точного бюджетирования.
🐛 Панель мониторинга исключений: быстро выявляйте и устраняйте проблемы, отслеживая распространённые исключения и ошибки с помощью выделенной панели мониторинга.
💭 Управление промптами: управляйте промптами и их версиями с помощью Prompt Hub для согласованного и лёгкого доступа во всех приложениях.
🔑 Управление API-ключами и секретами: безопасно управляйте своими API-ключами и секретами централизованно, избегая небезопасных практик.
🎮 Экспериментируйте с различными LLM: используйте OpenGround для изучения, тестирования и сравнения различных LLM бок о бок.
🚀 Fleet Hub для управления OpAMP: централизованно управляйте и контролируйте OpenTelemetry Collectors по всей вашей инфраструктуре с помощью протокола OpAMP (Open Agent Management Protocol) с безопасной TLS-связью.
flowchart TB; subgraph " " direction LR; subgraph " " direction LR; OpenLIT_SDK[OpenLIT SDK] -->|Sends Traces & Metrics| OTC[OpenTelemetry Collector]; OTC -->|Stores Data| ClickHouseDB[ClickHouse]; end subgraph " " direction RL; OpenLIT_UI[OpenLIT] -->|Pulls Data| ClickHouseDB; end end
### Шаг 1: Развертывание стека OpenLIT
1. Клонируйте репозиторий OpenLIT через Git
Откройте командную строку или терминал и выполните: ```shell
git clone [email protected]:openlit/openlit.git
Самостоятельное размещение с помощью Docker
Разверните и запустите OpenLIT с помощью следующей команды: ```shell docker compose up -d
Инструкции по установке в Kubernetes с помощью Helm см. в руководстве по установке Kubernetes Helm.
Откройте командную строку или терминал и выполните:```bash pip install openlit
> Инструкции по использованию TypeScript SDK см. в [руководстве по установке TypeScript SDK](https://github.com/openlit/openlit/tree/main/sdk/typescript#-installation).
### Шаг 3: Инициализация OpenLIT в вашем приложении
Интегрируйте OpenLIT в свои AI-приложения, добавив следующие строки в ваш код.```python
import openlit
openlit.init()
Настройте назначение данных телеметрии следующим образом:
| Назначение | Параметр/Переменная окружения | Для отправки в OpenLIT |
|---|---|---|
| Отправка данных в HTTP OTLP-эндпоинт | otlp_endpoint или OTEL_EXPORTER_OTLP_ENDPOINT | "http://127.0.0.1:4318" |
| Аутентификация бэкендов телеметрии | otlp_headers или OTEL_EXPORTER_OTLP_HEADERS | Не требуется по умолчанию |
💡 Информация: Если
otlp_endpointилиOTEL_EXPORTER_OTLP_ENDPOINTне указаны, OpenLIT SDK будет выводить трейсы напрямую в вашу консоль, что рекомендуется на этапе разработки.
Добавьте следующие две строки в код вашего приложения: ```python import openlit
openlit.init( otlp_endpoint="http://127.0.0.1:4318", )
</details>
---
<details>
---
<summary>Инициализация с использованием переменных окружения</summary>
Добавьте следующие две строки в код вашего приложения: ```python
import openlit
openlit.init()
Затем настройте вашу конечную точку OTLP с помощью переменной окружения: ```env export OTEL_EXPORTER_OTLP_ENDPOINT = "http://127.0.0.1:4318"
</details>
---
### Шаг 4: Визуализация и оптимизация
Теперь, когда данные Observability собираются и отправляются в OpenLIT, следующим шагом является визуализация и анализ этих данных для получения информации о производительности вашего AI-приложения, его поведении и выявления областей для улучшения.
Просто откройте OpenLIT по адресу `127.0.0.1:3000` в вашем браузере, чтобы начать изучение. Вы можете войти, используя учетные данные по умолчанию:
- **Email**: `[email protected]`
- **Пароль**: `openlituser`


## 📦 Поддерживаемые интеграции
OpenLIT автоматически инструментирует **44+ LLM-провайдеров, AI-фреймворков и векторных баз данных** одной строкой кода. Каждая интеграция создает [нативные для OpenTelemetry](https://opentelemetry.io/) трейсы и метрики. Нажмите на любую карточку, чтобы просмотреть документацию по интеграции.
<sub>
<img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="16"> Python SDK
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="16"> TypeScript SDK
</sub>
### LLM-провайдеры
<table>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/openai"><b>OpenAI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/anthropic"><b>Anthropic</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/cohere"><b>Cohere</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/mistral"><b>Mistral AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/groq"><b>Groq</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/google-ai-studio"><b>Google AI Studio</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/together"><b>Together AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/ollama"><b>Ollama</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/bedrock"><b>AWS Bedrock</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/azure-ai-inference"><b>Azure AI Inference</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/vertexai"><b>Vertex AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/vllm"><b>vLLM</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/reka"><b>Reka</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/litellm"><b>LiteLLM</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/huggingface"><b>Hugging Face</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/ai21"><b>AI21</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/gpt4all"><b>GPT4All</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/premai"><b>PremAI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/sarvam"><b>Sarvam AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/julep-ai"><b>Julep</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/multion"><b>MultiOn</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
</table>
### AI-фреймворки
<table>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/langchain"><b>LangChain</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/llama-index"><b>LlamaIndex</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/crewai"><b>CrewAI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/pydantic"><b>Pydantic AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/phidata"><b>Agno</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/browser-use"><b>Browser Use</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/haystack"><b>Haystack</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/letta"><b>Letta</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/mem0"><b>Mem0</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/ag2"><b>AG2 (AutoGen)</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/controlflow"><b>Controlflow</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/crawl4ai"><b>Crawl4AI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/dynamiq"><b>Dynamiq</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/openai-agents"><b>OpenAI Agents</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/firecrawl"><b>Firecrawl</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
</table>
### Векторные базы данных
<table>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/pinecone"><b>Pinecone</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/chromadb"><b>ChromaDB</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/qdrant"><b>Qdrant</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/milvus"><b>Milvus</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/astradb"><b>Astra DB</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/psycopg"><b>PostgreSQL</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
</table>
### Специализированные инструменты
<table>
<tr>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/elevenlabs"><b>ElevenLabs</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
<td align="center" width="160"><a href="https://docs.openlit.io/latest/sdk/integrations/assemblyai"><b>AssemblyAI</b></a><br/><img src="https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white&style=flat-square" height="18"></td>
</tr>
</table>
## 🛣️ Дорожная карта
Мы стремимся постоянно улучшать OpenLIT. Вот что уже сделано и что нас ждет впереди:
| Функция | Статус |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| [Нативный для OpenTelemetry SDK Observability для трейсинга и метрик](https://github.com/openlit/openlit/tree/text-upgrade/sdk/python) | ✅ Завершено |
| [Нативный для OpenTelemetry мониторинг GPU](https://docs.openlit.io/latest/features/gpu) | ✅ Завершено |
| [Мониторинг исключений и ошибок](https://docs.openlit.io/latest/features/exceptions) | ✅ Завершено |
| [Prompt Hub для управления и версионирования промптов](https://docs.openlit.io/latest/features/prompt-hub) | ✅ Завершено |
| [OpenGround для тестирования и сравнения LLM](https://docs.openlit.io/latest/features/openground) | ✅ Завершено |
| [Vault для централизованного управления API-ключами и секретами LLM](https://docs.openlit.io/latest/features/vault) | ✅ Завершено |
| [Отслеживание затрат для пользовательских моделей](https://docs.openlit.io/latest/features/pricing) | ✅ Завершено |
| [Реализация Guardrails в реальном времени](https://docs.openlit.io/latest/features/guardrails) | ✅ Завершено |
| [Программная оценка ответов LLM](https://docs.openlit.io/latest/features/evaluations) | ✅ Завершено |
| [Fleet Hub для управления OpAMP](https://docs.openlit.io/latest/openlit/observability/fleet-hub) | ✅ Завершено |
| [Автоматические метрики оценки на основе использования](https://github.com/openlit/openlit/issues/470) | 🔜 Скоро |
| [Обратная связь от людей для событий LLM](https://github.com/openlit/openlit/issues/471) | 🔜 Скоро |
| [Генерация наборов данных на основе событий LLM](https://github.com/openlit/openlit/issues/472) | 🔜 Скоро |
| [Поиск по трейсам]() | 🔜 Скоро |
## 🌱 Вклад в проект
Независимо от того, большой он или маленький, мы любим вклад в проект 💚. Ознакомьтесь с нашим [руководством по вкладу](https://github.com/pvharmo2/gha-lab-6c3094af9e/blob/main/CONTRIBUTING.md), чтобы начать.
Не знаете, с чего начать? Вот несколько способов принять участие:
- Присоединяйтесь к нашему сообществу в [Slack](https://join.slack.com/t/openlit/shared_invite/zt-2etnfttwg-TjP_7BZXfYg84oAukY8QRQ) или [Discord](https://discord.gg/rjvTm6zd), чтобы обсуждать идеи, делиться отзывами и общаться как с нашей командой, так и с более широким сообществом OpenLIT.
Ваш вклад помогает нам расти и совершенствоваться, и мы готовы поддерживать вас на каждом шагу.
[](https://www.producthunt.com/posts/openlit?embed=true&utm_source=badge-featured&utm_medium=badge&utm_souce=badge-openlit)
<a href="https://fazier.com/launches/openlit-2" target="_blank" rel="noopener noreferrer"><img src="https://fazier.com/api/v1/public/badges/embed_image.svg?launch_id=779&badge_type=daily" width="270" alt="Example Image" class="d-inline-block mt-3 p-3 rounded img-fluid" /></a>
## 💚 Сообщество и поддержка
Свяжитесь с сообществом OpenLIT и мейнтейнерами для получения поддержки, обсуждений и обновлений:
- 🌟 Если вам нравится проект, поставьте звезду на нашем [GitHub](https://github.com/openlit/openlit/).
- 🌍 Присоединяйтесь к нашему сообществу в [Slack](https://join.slack.com/t/openlit/shared_invite/zt-2etnfttwg-TjP_7BZXfYg84oAukY8QRQ) или [Discord](https://discord.gg/CQnXwNT3) для живого общения и вопросов.
- 🐞 Сообщайте об ошибках на нашем [GitHub Issues](https://github.com/openlit/openlit/issues), чтобы помочь нам улучшить OpenLIT.
- 𝕏 Подписывайтесь на нас в [X](https://twitter.com/openlit_io) для получения последних обновлений и новостей.
## Лицензия
OpenLIT доступен под лицензией [Apache-2.0](https://github.com/pvharmo2/gha-lab-6c3094af9e/blob/main/LICENSE).
## 🙇♂️ Благодарности
<p>Этот проект гордо поддерживается:</p>
<p>
<a href="https://www.testmuai.com/?utm_medium=sponsor&utm_source=openlit" target="_blank">
<img src="https://assets.kitploit.com/production/public/readmes/54232/59e406ce9676e24c2e228a1804d1810579038817584ead02e904e630264533c7/3ca662f501e7be9fcc4af3ff06d2755ca0712b463591ada282d81325365618bb-display-v1.webp" style={{ verticalAlign: 'middle' }} height="80" />
</a>
<a href="https://www.digitalocean.com/">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" height="80px" width="200px">
</a>
</p>