
Полностью автономная система AI-агентов, способная выполнять сложные задачи по тестированию на проникновение.
Присоединяйтесь к сообществу! Общайтесь с исследователями безопасности, энтузиастами ИИ и этичными хакерами. Получайте поддержку, делитесь знаниями и будьте в курсе последних разработок PentAGI.
PentAGI — это инновационный инструмент для автоматизированного тестирования безопасности, использующий передовые технологии искусственного интеллекта. Проект предназначен для специалистов по информационной безопасности, исследователей и энтузиастов, которым требуется мощное и гибкое решение для проведения пентестов.
flowchart TB classDef person fill:#08427B,stroke:#073B6F,color:#fff classDef system fill:#1168BD,stroke:#0B4884,color:#fff classDef external fill:#666666,stroke:#0B4884,color:#fff
pentester["👤 Security Engineer
(User of the system)"]
pentagi["✨ PentAGI
(Autonomous penetration testing system)"]
target["🎯 target-system
(System under test)"]
llm["🧠 llm-provider
(OpenAI/Anthropic/Ollama/Bedrock/Gemini/Custom)"]
search["🔍 search-systems
(Google/DuckDuckGo/Tavily/Traversaal/Perplexity/Sploitus/Searxng)"]
langfuse["📊 langfuse-ui
(LLM Observability Dashboard)"]
grafana["📈 grafana
(System Monitoring Dashboard)"]
pentester --> |Uses HTTPS| pentagi
pentester --> |Monitors AI HTTPS| langfuse
pentester --> |Monitors System HTTPS| grafana
pentagi --> |Tests Various protocols| target
pentagi --> |Queries HTTPS| llm
pentagi --> |Searches HTTPS| search
pentagi --> |Reports HTTPS| langfuse
pentagi --> |Reports HTTPS| grafana
class pentester person
class pentagi system
class target,llm,search,langfuse,grafana external
linkStyle default stroke:#ffffff,color:#ffffff
<details>
<summary><b>Архитектура контейнера</b> (нажмите, чтобы развернуть)</summary>```mermaid
graph TB
subgraph Core Services
UI[Frontend UI<br/>React + TypeScript]
API[Backend API<br/>Go + GraphQL]
DB[(Vector Store<br/>PostgreSQL + pgvector)]
MQ[Task Queue<br/>Async Processing]
Agent[AI Agents<br/>Multi-Agent System]
end
subgraph Knowledge Graph
Graphiti[Graphiti<br/>Knowledge Graph API]
Neo4j[(Neo4j<br/>Graph Database)]
end
subgraph Monitoring
Grafana[Grafana<br/>Dashboards]
VictoriaMetrics[VictoriaMetrics<br/>Time-series DB]
Jaeger[Jaeger<br/>Distributed Tracing]
Loki[Loki<br/>Log Aggregation]
OTEL[OpenTelemetry<br/>Data Collection]
end
subgraph Analytics
Langfuse[Langfuse<br/>LLM Analytics]
ClickHouse[ClickHouse<br/>Analytics DB]
Redis[Redis<br/>Cache + Rate Limiter]
MinIO[MinIO<br/>S3 Storage]
end
subgraph Security Tools
Scraper[Web Scraper<br/>Isolated Browser]
PenTest[Security Tools<br/>20+ Pro Tools<br/>Sandboxed Execution]
end
UI --> |HTTP/WS| API
API --> |SQL| DB
API --> |Events| MQ
MQ --> |Tasks| Agent
Agent --> |Commands| PenTest
Agent --> |Queries| DB
Agent --> |Knowledge| Graphiti
Graphiti --> |Graph| Neo4j
API --> |Telemetry| OTEL
OTEL --> |Metrics| VictoriaMetrics
OTEL --> |Traces| Jaeger
OTEL --> |Logs| Loki
Grafana --> |Query| VictoriaMetrics
Grafana --> |Query| Jaeger
Grafana --> |Query| Loki
API --> |Analytics| Langfuse
Langfuse --> |Store| ClickHouse
Langfuse --> |Cache| Redis
Langfuse --> |Files| MinIO
classDef core fill:#f9f,stroke:#333,stroke-width:2px,color:#000
classDef knowledge fill:#ffa,stroke:#333,stroke-width:2px,color:#000
classDef monitoring fill:#bbf,stroke:#333,stroke-width:2px,color:#000
classDef analytics fill:#bfb,stroke:#333,stroke-width:2px,color:#000
classDef tools fill:#fbb,stroke:#333,stroke-width:2px,color:#000
class UI,API,DB,MQ,Agent core
class Graphiti,Neo4j knowledge
class Grafana,VictoriaMetrics,Jaeger,Loki,OTEL monitoring
class Langfuse,ClickHouse,Redis,MinIO analytics
class Scraper,PenTest tools
Flow {
string id PK
string name "Flow name"
string description "Flow description"
string status "active/completed/failed"
json parameters "Flow parameters"
timestamp created_at
timestamp updated_at
}
Task {
string id PK
string flow_id FK
string name "Task name"
string description "Task description"
string status "pending/running/done/failed"
json result "Task results"
timestamp created_at
timestamp updated_at
}
SubTask {
string id PK
string task_id FK
string name "Subtask name"
string description "Subtask description"
string status "queued/running/completed/failed"
string agent_type "researcher/developer/executor"
json context "Agent context"
timestamp created_at
timestamp updated_at
}
Action {
string id PK
string subtask_id FK
string type "command/search/analyze/etc"
string status "success/failure"
json parameters "Action parameters"
json result "Action results"
timestamp created_at
}
Artifact {
string id PK
string action_id FK
string type "file/report/log"
string path "Storage path"
json metadata "Additional info"
timestamp created_at
}
Memory {
string id PK
string action_id FK
string type "observation/conclusion"
vector embedding "Vector representation"
text content "Memory content"
timestamp created_at
}
</details>
<details>
<summary><b>Взаимодействие с агентом</b> (нажмите, чтобы раскрыть)</summary>```mermaid
sequenceDiagram
participant O as Orchestrator
participant R as Researcher
participant D as Developer
participant E as Executor
participant VS as Vector Store
participant KB as Knowledge Base
Note over O,KB: Flow Initialization
O->>VS: Query similar tasks
VS-->>O: Return experiences
O->>KB: Load relevant knowledge
KB-->>O: Return context
Note over O,R: Research Phase
O->>R: Analyze target
R->>VS: Search similar cases
VS-->>R: Return patterns
R->>KB: Query vulnerabilities
KB-->>R: Return known issues
R->>VS: Store findings
R-->>O: Research results
Note over O,D: Planning Phase
O->>D: Plan attack
D->>VS: Query exploits
VS-->>D: Return techniques
D->>KB: Load tools info
KB-->>D: Return capabilities
D-->>O: Attack plan
Note over O,E: Execution Phase
O->>E: Execute plan
E->>KB: Load tool guides
KB-->>E: Return procedures
E->>VS: Store results
E-->>O: Execution status
subgraph "Working Memory"
Context[Current Context<br/>Task State]
Goals[Active Goals<br/>Objectives]
State[System State<br/>Resources]
end
subgraph "Episodic Memory"
Actions[Past Actions<br/>Commands History]
Results[Action Results<br/>Outcomes]
Patterns[Success Patterns<br/>Best Practices]
end
Context --> |Query| VS
VS --> |Retrieve| Context
Goals --> |Consult| KB
KB --> |Guide| Goals
State --> |Record| Actions
Actions --> |Learn| Patterns
Patterns --> |Store| VS
Tools --> |Inform| State
Results --> |Update| Tools
VS --> |Enhance| KB
KB --> |Index| VS
classDef ltm fill:#f9f,stroke:#333,stroke-width:2px,color:#000
classDef wm fill:#bbf,stroke:#333,stroke-width:2px,color:#000
classDef em fill:#bfb,stroke:#333,stroke-width:2px,color:#000
class VS,KB,Tools ltm
class Context,Goals,State wm
class Actions,Results,Patterns em
</details>
<details>
<summary><b>Цепочное резюмирование</b> (нажмите, чтобы развернуть)</summary>
Система цепочного резюмирования управляет ростом контекста беседы путем выборочного обобщения старых сообщений. Это критически важно для предотвращения превышения лимитов токенов при сохранении связности разговора.```mermaid
flowchart TD
A[Input Chain] --> B{Needs Summarization?}
B -->|No| C[Return Original Chain]
B -->|Yes| D[Convert to ChainAST]
D --> E[Apply Section Summarization]
E --> F[Process Oversized Pairs]
F --> G[Manage Last Section Size]
G --> H[Apply QA Summarization]
H --> I[Rebuild Chain with Summaries]
I --> J{Is New Chain Smaller?}
J -->|Yes| K[Return Optimized Chain]
J -->|No| C
classDef process fill:#bbf,stroke:#333,stroke-width:2px,color:#000
classDef decision fill:#bfb,stroke:#333,stroke-width:2px,color:#000
classDef output fill:#fbb,stroke:#333,stroke-width:2px,color:#000
class A,D,E,F,G,H,I process
class B,J decision
class C,K output
Алгоритм работает на основе структурированного представления цепочек разговоров (ChainAST), которое сохраняет типы сообщений, включая вызовы инструментов и их ответы. Все операции суммирования поддерживают критически важный поток беседы, одновременно уменьшая размер контекста.
Экземпляры ассистентов могут использовать настраиваемые параметры суммаризации для точной настройки поведения управления контекстом:
Конфигурация суммаризатора ассистента обеспечивает больше памяти для удержания контекста по сравнению с глобальными настройками, сохраняя более позднюю историю разговора и одновременно гарантируя эффективное использование токенов.
SUMMARIZER_PRESERVE_LAST=true SUMMARIZER_USE_QA=true SUMMARIZER_SUM_MSG_HUMAN_IN_QA=false SUMMARIZER_LAST_SEC_BYTES=51200 SUMMARIZER_MAX_BP_BYTES=16384 SUMMARIZER_MAX_QA_SECTIONS=10 SUMMARIZER_MAX_QA_BYTES=65536 SUMMARIZER_KEEP_QA_SECTIONS=1
ASSISTANT_SUMMARIZER_PRESERVE_LAST=true ASSISTANT_SUMMARIZER_LAST_SEC_BYTES=76800 ASSISTANT_SUMMARIZER_MAX_BP_BYTES=16384 ASSISTANT_SUMMARIZER_MAX_QA_SECTIONS=7 ASSISTANT_SUMMARIZER_MAX_QA_BYTES=76800 ASSISTANT_SUMMARIZER_KEEP_QA_SECTIONS=3
</details>
<a id="advanced-agent-supervision"></a>
<details>
<summary><b>Продвинутый надзор за агентами</b> (нажмите, чтобы развернуть)</summary>
PentAGI включает сложные многоуровневые механизмы надзора за агентами, обеспечивающие эффективное выполнение задач, предотвращение бесконечных циклов и интеллектуальное восстановление из зависших состояний:
### Мониторинг выполнения (Beta)
- **Автоматическое вмешательство наставника**: Агент-советник (наставник) автоматически вызывается, когда шаблоны выполнения указывают на потенциальные проблемы
- **Обнаружение шаблонов**: Отслеживает идентичные вызовы инструментов (порог: 5, настраивается) и общее количество вызовов инструментов (порог: 10, настраивается)
- **Анализ прогресса**: Оценивает, продвигается ли агент к цели подзадачи, обнаруживает циклы и неэффективность
- **Альтернативные стратегии**: Рекомендует различные подходы, когда текущая стратегия не работает
- **Руководство по поиску информации**: Предлагает искать существующие решения вместо изобретения новых
- **Улучшенный формат ответов**: Ответы инструментов включают секции `<original_result>` и `<mentor_analysis>`
- **Настраиваемость**: Включить через `EXECUTION_MONITOR_ENABLED` (по умолчанию: false), настроить пороги через `EXECUTION_MONITOR_SAME_TOOL_LIMIT` и `EXECUTION_MONITOR_TOTAL_TOOL_LIMIT`
**Лучше всего для**: Меньшие модели (< 32B параметров), сложные сценарии атак, требующие постоянного руководства, предотвращение застревания агентов на одном подходе
**Влияние на производительность**: Увеличение времени выполнения и использования токенов в 2-3 раза, но обеспечивает **улучшение качества результатов в 2 раза** на основе тестирования с Qwen3.5-27B-FP8
### Интеллектуальное планирование задач (Beta)
- **Автоматическая декомпозиция**: Планировщик (советник в режиме планирования) генерирует 3-7 конкретных, выполнимых шагов до начала работы агентов-специалистов
- **Контекстно-зависимые планы**: Анализирует полный контекст выполнения через агента-обогатителя для создания информированных планов
- **Структурированное назначение**: Исходный запрос оборачивается в структуру `<task_assignment>` с планом выполнения и инструкциями
- **Управление объёмом**: Предотвращает расползание объёма, удерживая агентов в рамках только текущей подзадачи
- **Обогащённые инструкции**: Планы выделяют критические действия, потенциальные ловушки и точки проверки
- **Настраиваемость**: Включить через `AGENT_PLANNING_STEP_ENABLED` (по умолчанию: false)
**Лучше всего для**: Модели < 32B параметров, сложные рабочие процессы тестирования на проникновение, повышение вероятности успеха в сложных задачах
**Улучшенная конфигурация советника**: Работает особенно хорошо, когда агент-советник использует более сильную модель или расширенные настройки. Пример: использование той же базовой модели с максимальным режимом рассуждения для советника (см. [`vllm-qwen3.5-27b-fp8.provider.yml`](https://github.com/vxcontrol/pentagi/blob/main/examples/configs/vllm-qwen3.5-27b-fp8.provider.yml)) позволяет проводить всесторонний анализ задач и стратегическое планирование на одинаковой архитектуре модели.
**Влияние на производительность**: Добавляет накладные расходы на планирование, но значительно повышает процент завершения и сокращает избыточную работу
### Лимиты вызовов инструментов (всегда активны)
- **Жёсткие лимиты**: Предотвращают неконтролируемое выполнение независимо от режима надзора
- **Различие по типу агента**:
- Общие агенты (Помощник, Основной агент, Тестер на проникновение, Разработчик, Установщик): `MAX_GENERAL_AGENT_TOOL_CALLS` (по умолчанию: 100)
- Ограниченные агенты (Поисковик, Обогатитель, Запоминатель, Генератор, Репортёр, Советник, Отражатель, Планировщик): `MAX_LIMITED_AGENT_TOOL_CALLS` (по умолчанию: 20)
- **Корректное завершение**: Отражатель направляет агентов к правильному завершению при приближении к лимитам
- **Защита ресурсов**: Обеспечивает стабильность системы и предотвращает истощение ресурсов
### Интеграция Отражателя (всегда активна)
- **Автоматическая коррекция**: Вызывается, когда LLM не удаётся сгенерировать вызовы инструментов после 3 попыток
- **Стратегическое руководство**: Анализирует ошибки и направляет агентов к правильному использованию инструментов или барьерных инструментов (`done`, `ask`)
- **Механизм восстановления**: Предоставляет контекстное руководство в зависимости от конкретных шаблонов ошибок
- **Принудительное применение лимитов**: Координирует корректное завершение при достижении лимитов вызовов инструментов
### Рекомендации для моделей с открытым исходным кодом
**Обязательно для моделей < 32B параметров**:
Тестирование с Qwen3.5-27B-FP8 показывает, что включение как мониторинга выполнения, так и планирования задач **необходимо** для меньших моделей с открытым исходным кодом:
- **Улучшение качества**: В 2 раза лучшие результаты по сравнению с базовым выполнением без надзора
- **Предотвращение циклов**: Значительно сокращает бесконечные циклы и избыточную работу
- **Разнообразие атак**: Поощряет исследование нескольких векторов атак вместо фиксации на одном подходе
- **Автономные развёртывания**: Позволяет проводить автономное тестирование на проникновение промышленного уровня в замкнутых сетевых средах с локальным выводом LLM
**Компромиссы**:
- Потребление токенов: увеличение в 2-3 раза из-за вызовов наставника/планировщика
- Время выполнения: в 2-3 раза дольше из-за этапов анализа и планирования
- Качество результатов: в 2 раза улучшение полноты, точности и охвата атак
- Требования к модели: работает лучше всего, когда советник использует расширенную конфигурацию (более высокие параметры рассуждения, более сильная версия модели или другая модель)
**Стратегия конфигурации**:
Для оптимальной производительности с меньшими моделями настройте агента-советника с расширенными параметрами:
- Используйте ту же модель с максимальным режимом рассуждения (пример: [`vllm-qwen3.5-27b-fp8.provider.yml`](https://github.com/vxcontrol/pentagi/blob/main/examples/configs/vllm-qwen3.5-27b-fp8.provider.yml))
- Или используйте более сильную модель для советника, сохраняя базовую модель для других агентов
- Настройте пороги мониторинга в зависимости от сложности задачи и возможностей модели
</details>
Архитектура PentAGI спроектирована как модульная, масштабируемая и безопасная. Вот ключевые компоненты:
1. **Основные сервисы**
- Пользовательский интерфейс: веб-интерфейс на React с TypeScript для типобезопасности
- Бэкенд API: REST и GraphQL API на Go с аутентификацией через Bearer токен для программного доступа
- Векторное хранилище: PostgreSQL с pgvector для семантического поиска и хранения памяти
- Очередь задач: Система асинхронной обработки задач для надёжной работы
- ИИ-агент: Многоагентная система со специализированными ролями для эффективного тестирования
2. **Граф знаний**
- Graphiti: API графа знаний для отслеживания семантических связей и контекстного понимания
- Neo4j: Графовая база данных для хранения и запросов связей между сущностями, действиями и результатами
- Автоматический захват ответов агентов и выполнений инструментов для построения всеобъемлющей базы знаний
3. **Стек мониторинга**
- OpenTelemetry: Унифицированный сбор и корреляция данных наблюдаемости
- Grafana: Визуализация в реальном времени и панели оповещений
- VictoriaMetrics: Высокопроизводительное хранилище метрик временных рядов
- Jaeger: Сквозная распределённая трассировка для отладки
- Loki: Масштабируемая агрегация и анализ логов
4. **Аналитическая платформа**
- Langfuse: Продвинутая наблюдаемость и аналитика производительности LLM
- ClickHouse: Колоночное аналитическое хранилище данных
- Redis: Высокоскоростное кэширование и ограничение частоты запросов
- MinIO: S3-совместимое объектное хранилище для артефактов
5. **Инструменты безопасности**
- Веб-скрапер: Изолированная среда браузера для безопасного взаимодействия с веб-ресурсами
- Инструменты тестирования на проникновение: Комплексный набор из 20+ профессиональных инструментов безопасности
- Изолированное выполнение: Все операции выполняются в изолированных контейнерах
6. **Системы памяти**
- Долговременная память: Постоянное хранение знаний и опыта
- Рабочая память: Активный контекст и цели для текущих операций
- Эпизодическая память: Исторические действия и успешные шаблоны
- База знаний: Структурированная предметная экспертиза и возможности инструментов
- Управление контекстом: Интеллектуальное управление растущими контекстными окнами LLM с использованием цепной суммаризации
Система использует Docker-контейнеры для изоляции и простого развёртывания, с отдельными сетями для основных сервисов, мониторинга и аналитики для обеспечения надлежащих границ безопасности. Каждый компонент спроектирован для горизонтального масштабирования и может быть настроен для высокой доступности в производственных средах.
## Быстрый старт
### Системные требования
- Docker и Docker Compose (или Podman — см. [конфигурацию Podman](#running-pentagi-with-podman))
- Минимум 2 vCPU
- Минимум 4 ГБ ОЗУ
- 20 ГБ свободного дискового пространства
- Доступ в Интернет для загрузки образов и обновлений
### Использование установщика (рекомендуется)
PentAGI предоставляет интерактивный установщик с терминальным интерфейсом для упрощённой настройки и развёртывания. Установщик проводит через проверку системы, настройку LLM-провайдера, конфигурацию поисковой системы и усиление безопасности.
**Поддерживаемые платформы:**
- **Linux**: amd64 [скачать](https://pentagi.com/downloads/linux/amd64/installer-latest.zip) | arm64 [скачать](https://pentagi.com/downloads/linux/arm64/installer-latest.zip)
- **Windows**: amd64 [скачать](https://pentagi.com/downloads/windows/amd64/installer-latest.zip)
- **macOS**: amd64 (Intel) [скачать](https://pentagi.com/downloads/darwin/amd64/installer-latest.zip) | arm64 (M-серия) [скачать](https://pentagi.com/downloads/darwin/arm64/installer-latest.zip)
**Быстрая установка (Linux amd64):**```bash
# Create installation directory
mkdir -p pentagi && cd pentagi
# Download installer
wget -O installer.zip https://pentagi.com/downloads/linux/amd64/installer-latest.zip
# Extract
unzip installer.zip
# Run interactive installer
./installer
Предварительные требования и разрешения:
Установщик требует соответствующих привилегий для взаимодействия с Docker API для корректной работы. По умолчанию он использует Docker-сокет (/var/run/docker.sock), что требует либо:
Вариант 1 (Рекомендуется для продакшена): Запустите установщик от root: ```bash sudo ./installer
Вариант 2 (Среды разработки): Предоставьте вашему пользователю доступ к сокету Docker, добавив его в группу docker: ```bash
sudo usermod -aG docker $USER
newgrp docker
docker ps
⚠️ Примечание по безопасности: Добавление пользователя в группу docker предоставляет привилегии, эквивалентные root. Делайте это только для доверенных пользователей в контролируемых средах. Для производственных развертываний рассмотрите использование rootless Docker режима или запуск установщика с sudo.
Установщик выполнит:
.env с оптимальными значениями по умолчаниюВеб-консоль PentAGI уже управляет несколькими областями настроек после запуска сервера:
Следующие области конфигурации по-прежнему необходимо задавать на сервере через переменные окружения, файлы compose или монтируемые конфигурационные файлы:
OLLAMA_SERVER_CONFIG_PATH и LLM_SERVER_CONFIG_PATH.DUCKDUCKGO_*, GOOGLE_*, TAVILY_API_KEY, TRAVERSAAL_API_KEY, PERPLEXITY_*, SEARXNG_* и SPLOITUS_ENABLED.Для производства и повышенной безопасности:
Для производственных развертываний или сред с повышенными требованиями к безопасности мы настоятельно рекомендуем использовать распределенную двухузловую архитектуру, где рабочие операции изолированы на отдельном сервере. Это предотвращает выполнение недоверенного кода и проблемы сетевым доступом на вашей основной системе.
См. подробное руководство: Настройка рабочего узла
Двухузловая настройка обеспечивает:
2. Скопируйте `.env.example` в `.env` или скачайте его:```bash
curl -o .env https://raw.githubusercontent.com/vxcontrol/pentagi/master/.env.example
example.custom.provider.yml, example.ollama.provider.yml) или скачайте их:```bash
curl -o example.custom.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/custom-openai.provider.yml
curl -o example.ollama.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/ollama-llama318b.provider.yml4. Заполните необходимые ключи API в файле `.env`.```bash
# Required: At least one of these LLM providers
OPEN_AI_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key
# Optional: AWS Bedrock provider (enterprise-grade models)
BEDROCK_REGION=us-east-1
# Choose one authentication method:
BEDROCK_DEFAULT_AUTH=true # Option 1: Use AWS SDK default credential chain (recommended for EC2/ECS)
# BEDROCK_BEARER_TOKEN=your_bearer_token # Option 2: Bearer token authentication
# BEDROCK_ACCESS_KEY_ID=your_aws_access_key # Option 3: Static credentials
# BEDROCK_SECRET_ACCESS_KEY=your_aws_secret_key
# Optional: Ollama provider (local or cloud)
# OLLAMA_SERVER_URL=http://ollama-server:11434 # Local server
# OLLAMA_SERVER_URL=https://ollama.com # Cloud service
# OLLAMA_SERVER_API_KEY=your_ollama_cloud_key # Required for cloud, empty for local
# Optional: Chinese AI providers
# DEEPSEEK_API_KEY=your_deepseek_key # DeepSeek (strong reasoning)
# GLM_API_KEY=your_glm_key # GLM (Zhipu AI)
# KIMI_API_KEY=your_kimi_key # Kimi (Moonshot AI, ultra-long context)
# QWEN_API_KEY=your_qwen_key # Qwen (Alibaba Cloud, multimodal)
# Optional: Local LLM provider (zero-cost inference)
OLLAMA_SERVER_URL=http://localhost:11434
OLLAMA_SERVER_MODEL=your_model_name
# Optional: Additional search capabilities
DUCKDUCKGO_ENABLED=true
DUCKDUCKGO_REGION=us-en
DUCKDUCKGO_SAFESEARCH=
DUCKDUCKGO_TIME_RANGE=
SPLOITUS_ENABLED=true
GOOGLE_API_KEY=your_google_key
GOOGLE_CX_KEY=your_google_cx
TAVILY_API_KEY=your_tavily_key
TRAVERSAAL_API_KEY=your_traversaal_key
PERPLEXITY_API_KEY=your_perplexity_key
PERPLEXITY_MODEL=sonar-pro
PERPLEXITY_CONTEXT_SIZE=medium
# Searxng meta search engine (aggregates results from multiple sources)
SEARXNG_URL=http://your-searxng-instance:8080
SEARXNG_CATEGORIES=general
SEARXNG_LANGUAGE=
SEARXNG_SAFESEARCH=0
SEARXNG_TIME_RANGE=
SEARXNG_TIMEOUT=
## Graphiti knowledge graph settings
GRAPHITI_ENABLED=true
GRAPHITI_TIMEOUT=30
GRAPHITI_URL=http://graphiti:8000
GRAPHITI_MODEL_NAME=gpt-5-mini
# Neo4j settings (used by Graphiti stack)
NEO4J_USER=neo4j
NEO4J_DATABASE=neo4j
NEO4J_PASSWORD=devpassword
NEO4J_URI=bolt://neo4j:7687
# Assistant configuration
ASSISTANT_USE_AGENTS=false # Default value for agent usage when creating new assistants
.env для повышения безопасности.COOKIE_SIGNING_SALT - Соль для подписи cookie, измените на случайное значениеPUBLIC_URL - Публичный URL вашего сервера (например, https://pentagi.example.com)SERVER_SSL_CRT и SERVER_SSL_KEY - Пользовательские пути к вашему существующему SSL-сертификату и ключу для HTTPS (эти пути должны использоваться в файле docker-compose.yml для монтирования как томов)SCRAPER_PUBLIC_URL - Публичный URL для сборщика, если вы хотите использовать другой сервер сборщика для публичных URLSCRAPER_PRIVATE_URL - Приватный URL для сборщика (локальный сервер сборщика в файле docker-compose.yml для доступа к локальным URL).env, если вы хотите использовать его в VSCode или других IDE в качестве опции envFile:```bash
perl -i -pe 's/\s+#.*$//' .env7. Запустите стек PentAGI:```bash
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose.yml
docker compose up -d
Посетите localhost:8443 для доступа к веб-интерфейсу PentAGI (по умолчанию: [email protected] / admin)
PentAGI не предоставляет публичную самостоятельную регистрацию со страницы входа. При свежей установке создаётся учётная запись локального администратора по умолчанию:
[email protected]adminПри первом входе в систему измените пароль по умолчанию, прежде чем использовать экземпляр для реальной работы. Если в дальнейшем пароль администратора будет утерян, воспользуйтесь меню обслуживания установщика, чтобы сбросить пароль для учётной записи [email protected] по умолчанию.
Для многопользовательских конфигураций аутентифицированный администратор может управлять локальными пользователями через REST API для пользователей (/api/v1/users/). Интерфейс OpenAPI доступен по адресу https://localhost:8443/api/v1/swagger/index.html после запуска экземпляра.
[!NOTE] Если вы получили ошибку о
pentagi-network,observability-networkилиlangfuse-network, сначала необходимо запуститьdocker-compose.yml, чтобы создать эти сети, а затем запуститьdocker-compose-langfuse.yml,docker-compose-graphiti.ymlиdocker-compose-observability.yml, чтобы использовать сервисы Langfuse, Graphiti и Observability.Вы должны настроить как минимум одного провайдера языковых моделей (OpenAI, Anthropic, Gemini, AWS Bedrock или Ollama), чтобы использовать PentAGI. AWS Bedrock обеспечивает корпоративный доступ к нескольким базовым моделям от ведущих AI-компаний, в то время как Ollama предоставляет бесплатный локальный инференс при наличии достаточных вычислительных ресурсов. Дополнительные API-ключи для поисковых систем необязательны, но рекомендуются для лучших результатов.
Для полностью локального развёртывания с продвинутыми моделями: См. наше подробное руководство по Запуску PentAGI с vLLM и Qwen3.5-27B-FP8 для настройки локальной LLM производственного уровня. Эта конфигурация достигает ~13 000 TPS для обработки запросов и ~650 TPS для генерации на 4× RTX 5090, обеспечивая поддержку 12+ одновременных потоков с полной независимостью от облачных провайдеров.
Переменные окружения
LLM_SERVER_*являются экспериментальной функцией и будут изменены в будущем. Сейчас вы можете использовать их для указания собственного URL-адреса LLM-сервера и одной модели для всех типов агентов.
По умолчанию PentAGI привязывается к 127.0.0.1 (только localhost) в целях безопасности. Чтобы получить доступ к PentAGI с других машин в вашей сети, необходимо настроить внешний доступ.
.env, указав IP-адрес вашего сервера:```bashPENTAGI_LISTEN_IP=0.0.0.0 PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443
> [!IMPORTANT]
> - Замените `192.168.1.100` на фактический IP-адрес вашего сервера
> - НЕ используйте `0.0.0.0` в `PUBLIC_URL` или `CORS_ORIGINS` — используйте фактический IP-адрес
> - Включите как localhost, так и IP вашего сервера в `CORS_ORIGINS` для гибкости
2. **Пересоздайте контейнеры**, чтобы применить изменения:```bash
docker compose down
docker compose up -d --force-recreate
Вы должны увидеть `0.0.0.0:8443->8443/tcp` или `:::8443->8443/tcp`.
Если вы видите `127.0.0.1:8443->8443/tcp`, переменная окружения не была подхвачена. В этом случае напрямую отредактируйте `docker-compose.yml` строку 31:```yaml
ports:
- "0.0.0.0:8443:8443"
Затем снова создайте контейнеры.
sudo ufw allow 8443/tcp sudo ufw reload
sudo firewall-cmd --permanent --add-port=8443/tcp sudo firewall-cmd --reload
5. **Доступ к PentAGI:**
- **Локальный доступ:** `https://localhost:8443`
- **Сетевой доступ:** `https://your-server-ip:8443`
> [!NOTE]
> При доступе через IP-адрес вам потребуется принять предупреждение о самоподписанном SSL-сертификате в браузере.
---
### Запуск PentAGI с Podman
PentAGI полностью поддерживает Podman в качестве альтернативы Docker. Однако при использовании **Podman в бескорневом режиме (rootless)** сервис сборщика (scraper) требует специальной настройки, так как бескорневые контейнеры не могут привязывать привилегированные порты (порты ниже 1024).
#### Конфигурация Podman без root-прав
Конфигурация сборщика по умолчанию использует порт 443 (HTTPS), который является привилегированным. Для бескорневого Podman перенастройте сборщик на непривилегированный порт:
**1. Отредактируйте `docker-compose.yml`** - измените сервис `scraper` (примерно строка 199):```yaml
scraper:
image: vxcontrol/scraper:latest
restart: unless-stopped
container_name: scraper
hostname: scraper
expose:
- 3000/tcp # Changed from 443 to 3000
ports:
- "${SCRAPER_LISTEN_IP:-127.0.0.1}:${SCRAPER_LISTEN_PORT:-9443}:3000" # Map to port 3000
environment:
- MAX_CONCURRENT_SESSIONS=${LOCAL_SCRAPER_MAX_CONCURRENT_SESSIONS:-10}
- USERNAME=${LOCAL_SCRAPER_USERNAME:-someuser}
- PASSWORD=${LOCAL_SCRAPER_PASSWORD:-somepass}
logging:
options:
max-size: 50m
max-file: "7"
volumes:
- scraper-ssl:/usr/src/app/ssl
networks:
- pentagi-network
shm_size: 2g
2. Обновите файл .env - измените URL скрапера на использование HTTP и порт 3000:```bash
SCRAPER_PRIVATE_URL=http://someuser:somepass@scraper:3000/ LOCAL_SCRAPER_USERNAME=someuser LOCAL_SCRAPER_PASSWORD=somepass
> [!ВАЖНО]
> Ключевые изменения для Podman:
> - Используйте **HTTP** вместо HTTPS для `SCRAPER_PRIVATE_URL`
> - Используйте порт **3000** вместо 443
> - Измените внутренний `expose` на `3000/tcp`
> - Обновите привязку портов, указав `3000` вместо `443`
**3. Пересоздайте контейнеры:**```bash
podman-compose down
podman-compose up -d --force-recreate
4. Проверка подключения скрапера:```bash
podman exec -it pentagi wget -O- "http://someuser:somepass@scraper:3000/html?url=http://example.com"
Если вы видите HTML-вывод, значит, скрапер работает корректно.
#### Корневой режим Podman
Если вы запускаете Podman в корневом режиме (с sudo), вы можете использовать конфигурацию по умолчанию без изменений. Скрапер будет работать на порту 443, как и предполагается.
#### Совместимость с Docker
Все конфигурации Podman остаются полностью совместимыми с Docker. Подход с непривилегированным портом работает одинаково на обоих средах выполнения контейнеров.
### Конфигурация ассистента
PentAGI позволяет настроить поведение ассистентов по умолчанию:
| Переменная | По умолчанию | Описание |
| --------------------- | ------------ | -------------------------------------------------------------------------- |
| `ASSISTANT_USE_AGENTS` | `false` | Управляет значением по умолчанию для использования агентов при создании новых ассистентов |
Настройка `ASSISTANT_USE_AGENTS` влияет на начальное состояние переключателя "Use Agents" при создании нового ассистента в интерфейсе:
- `false` (по умолчанию): новые ассистенты создаются с отключенным делегированием агентов по умолчанию
- `true`: новые ассистенты создаются с включенным делегированием агентов по умолчанию
Обратите внимание, что пользователи всегда могут изменить этот параметр, переключив кнопку "Use Agents" в интерфейсе при создании или редактировании ассистента. Эта переменная окружения управляет только начальным состоянием по умолчанию.
## Как использовать PentAGI после входа
Как только стек запущен и вы можете войти в веб-интерфейс, самый быстрый способ начать — это через рабочий процесс Flows.
### 1. Создайте свой первый поток
1. Откройте **Flows** на боковой панели.
2. Нажмите **New Flow**.
3. Выберите режим, соответствующий вашей цели:
- **Automation**: полностью автономное выполнение для цели тестирования, которую вы хотите поручить PentAGI от начала до конца
- **Assistant**: интерактивная помощь с обратной связью, когда вы хотите вести расследование шаг за шагом. В этом режиме вы также можете включить переключатель **Use Agents**, чтобы позволить PentAGI делегировать подзадачи специализированным субагентам для более сложных расследований.
4. Выберите провайдера LLM, которого вы хотите использовать для этого потока.
5. Опишите цель и задачу на естественном языке в окне сообщения.
Хорошие первые запросы обычно включают:
- целевую систему или URL
- тип оценки, который вы хотите
- любые ограничения области или правила взаимодействия
- ожидаемый результат, например, отчет об уязвимости или подтверждение гипотезы
Пример:```text
Assess https://target.example for common web application vulnerabilities. Focus on authentication, file handling, and injection issues. Stay within the provided target only and summarize confirmed findings with reproduction steps.
Тестируйте только те системы, которые вам принадлежат или на которые вы имеете явное разрешение. См. EULA.md с требованиями к допустимому использованию.
Новая форма потока включает выбор шаблона, который может предварительно заполнить окно сообщения сохраненным шаблоном потока. Это полезно, когда вы регулярно проводите аналогичные оценки.
examples/prompts/base_web_pentest.md, если вам нужна практическая основа для тестирования веб-приложенийШаблоны — это отправные точки. Для использования PentAGI не требуется специальный синтаксис: обычные инструкции на естественном языке работают хорошо, если цель и задача ясны.
После отправки потока PentAGI автоматически открывает страницу потока.
Когда поток накопит достаточно результатов, используйте меню Отчет на странице потока, чтобы:
Каждый поток также включает вид Помощник для интерактивного управления. Это полезно, когда автономный запуск обнаруживает что-то, требующее вмешательства человека вместо полного перезапуска.
У каждого потока есть своя вкладка Файлы на странице потока. Файлы привязаны к родительскому потоку: они хранятся в {dataDir}/flow-{id}-data/ на хосте и никогда не попадают в другие потоки.
На вкладке отображаются три источника файлов:
uploads/): файлы, которые вы предоставляете через веб-интерфейс. Используйте действие Загрузить файлы или перетащите их прямо на вкладку «Файлы». Когда контейнер агента работает, загруженные файлы также помещаются в него по пути /work/uploads/, чтобы агент мог читать их с помощью обычных shell-инструментов.resources/): файлы, прикрепленные из вашей сохраненной библиотеки пользовательских ресурсов через Прикрепить ресурсы из библиотеки. Прикрепленные ресурсы копируются в поток и помещаются в работающий контейнер по пути /work/resources/.container/): снимки, извлеченные из работающего контейнера агента через Извлечь файл или каталог из контейнера. Они доступны только для чтения на стороне потока и никогда не отправляются обратно в контейнер.Действия для каждого файла на вкладке «Файлы» включают Скачать, Скопировать путь, Сохранить как ресурс (преобразовать файл потока в вашу повторно используемую библиотеку ресурсов) и Удалить. Действие «Извлечь» отключено, когда контейнер не работает, при этом отображается подсказка «Контейнер не запущен».
Загруженные файлы и прикрепленные ресурсы автоматически перечисляются в системных подсказках агента через шаблонную переменную {{.UserFiles}}, которая выводит компактный XML-блок <task_files> (с вложенными разделами <uploads> и <resources>), так что помощник и агенты автоматизации могут ссылаться на них по пути без необходимости вставлять содержимое в чат. Снимки контейнера видны только в интерфейсе и не вставляются автоматически обратно в подсказку.
Текущие ограничения, о которых следует знать:
/work/uploads/ и /work/resources/; файлы, записанные в другие пути контейнера, не зеркалируются автоматически обратно в модель файлов потока. Снимки контейнера могут быть получены из любого пути контейнера, который вы укажете (например, /etc/...), и кэшируются на стороне потока в каталоге container/; они не отправляются обратно в контейнер.flow-{id}-data/ на диске. Операторы по-прежнему должны вручную очищать каталог данных, если хотят освободить место.Для раннего тестирования начните с узкой цели и одной четкой задачи. Это упростит проверку результатов и поможет уточнить подсказки перед проведением более масштабных оценок.
PentAGI предоставляет всесторонний программный доступ через API REST и GraphQL, что позволяет интегрировать рабочие процессы тестирования на проникновение в ваши конвейеры автоматизации, процессы CI/CD и пользовательские приложения.
Управление токенами API осуществляется через веб-интерфейс PentAGI:
Каждый токен привязан к вашей учетной записи и наследует права вашей роли.
Включайте токен API в заголовок Authorization ваших HTTP-запросов:```bash
curl -X POST https://your-pentagi-instance:8443/api/v1/graphql
-H "Authorization: Bearer YOUR_API_TOKEN"
-H "Content-Type: application/json"
-d '{"query": "{ flows { id title status } }"}'
curl https://your-pentagi-instance:8443/api/v1/flows
-H "Authorization: Bearer YOUR_API_TOKEN"
### Исследование и тестирование API
PentAGI предоставляет интерактивную документацию для исследования и тестирования конечных точек API:
#### GraphQL Playground
Получите доступ к GraphQL Playground по адресу `https://your-pentagi-instance:8443/api/v1/graphql/playground`
1. Нажмите на вкладку **HTTP Headers** в нижней части
2. Добавьте свой заголовок авторизации: ```json
{
"Authorization": "Bearer YOUR_API_TOKEN"
}
Доступ к документации REST API по адресу https://your-pentagi-instance:8443/api/v1/swagger/index.html
Bearer YOUR_API_TOKENВы можете генерировать типобезопасные API-клиенты для вашего предпочитаемого языка программирования, используя файлы схем, включенные в PentAGI:
Схема GraphQL доступна по адресу:
schema.graphqlsbackend/pkg/graph/schema.graphqls в репозиторииГенерируйте клиенты с помощью таких инструментов, как:
Спецификация OpenAPI доступна по адресу:
https://your-pentagi-instance:8443/api/v1/swagger/doc.jsonbackend/pkg/server/docs/swagger.yamlГенерируйте клиенты с помощью:
class PentAGIClient: def init(self, base_url, api_token): self.base_url = base_url self.headers = { "Authorization": f"Bearer {api_token}", "Content-Type": "application/json" }
def create_flow(self, provider, target):
query = """
mutation CreateFlow($provider: String!, $input: String!) {
createFlow(modelProvider: $provider, input: $input) {
id
title
status
}
}
"""
response = requests.post(
f"{self.base_url}/api/v1/graphql",
json={
"query": query,
"variables": {
"provider": provider,
"input": target
}
},
headers=self.headers
)
return response.json()
def get_flows(self):
response = requests.get(
f"{self.base_url}/api/v1/flows",
headers=self.headers
)
return response.json()
client = PentAGIClient( "https://your-pentagi-instance:8443", "your_api_token_here" )
flow = client.create_flow("openai", "Scan https://example.com for vulnerabilities") print(f"Created flow: {flow}")
flows = client.get_flows() print(f"Total flows: {len(flows['flows'])}")
</details>
<details>
<summary><b>Пример клиента на TypeScript</b></summary>```typescript
import axios, { AxiosInstance } from 'axios';
interface Flow {
id: string;
title: string;
status: string;
createdAt: string;
}
class PentAGIClient {
private client: AxiosInstance;
constructor(baseURL: string, apiToken: string) {
this.client = axios.create({
baseURL: `${baseURL}/api/v1`,
headers: {
'Authorization': `Bearer ${apiToken}`,
'Content-Type': 'application/json',
},
});
}
async createFlow(provider: string, input: string): Promise<Flow> {
const query = `
mutation CreateFlow($provider: String!, $input: String!) {
createFlow(modelProvider: $provider, input: $input) {
id
title
status
createdAt
}
}
`;
const response = await this.client.post('/graphql', {
query,
variables: { provider, input },
});
return response.data.data.createFlow;
}
async getFlows(): Promise<Flow[]> {
const response = await this.client.get('/flows');
return response.data.flows;
}
async getFlow(flowId: string): Promise<Flow> {
const response = await this.client.get(`/flows/${flowId}`);
return response.data;
}
}
// Usage
const client = new PentAGIClient(
'https://your-pentagi-instance:8443',
'your_api_token_here'
);
// Create a new flow
const flow = await client.createFlow(
'openai',
'Perform penetration test on https://example.com'
);
console.log('Created flow:', flow);
// List all flows
const flows = await client.getFlows();
console.log(`Total flows: ${flows.length}`);
При работе с API-токенами:
Список токенов показывает:
При использовании пользовательских LLM-провайдеров с переменными LLM_SERVER_* вы можете точно настроить формат рассуждений, используемый в запросах.
[!TIP] Для локальных развертываний производственного уровня рассмотрите возможность использования vLLM с Qwen3.5-27B-FP8 для оптимальной производительности. См. наше полное руководство по развертыванию, которое включает требования к оборудованию, шаблоны конфигурации (режим мышления и режим без мышления), а также бенчмарки производительности, показывающие обработку 13K TPS на 4× RTX 5090 GPU.
Настройка LLM_SERVER_PROVIDER особенно полезна при использовании прокси LiteLLM, которая добавляет префикс провайдера к именам моделей. Например, при подключении к API Moonshot через LiteLLM модели типа kimi-2.5 становятся moonshot/kimi-2.5. Установив LLM_SERVER_PROVIDER=moonshot, вы можете использовать один и тот же файл конфигурации провайдера как для прямого доступа к API, так и для доступа через прокси LiteLLM без изменений.
Настройка LLM_SERVER_LEGACY_REASONING влияет на то, как параметры рассуждений отправляются в LLM:
false (по умолчанию): Использует современный формат, где рассуждения отправляются как структурированный объект с параметром max_tokenstrue: Использует устаревший формат с строковым параметром reasoning_effortЭта настройка важна при работе с разными LLM-провайдерами, так как они могут ожидать разные форматы рассуждений в своих API-запросах. Если вы столкнулись с ошибками, связанными с рассуждениями, при использовании пользовательских провайдеров, попробуйте изменить эту настройку.
Настройка LLM_SERVER_PRESERVE_REASONING управляет сохранением содержимого рассуждений в многократных диалогах:
false (по умолчанию): Содержимое рассуждений не сохраняется в истории диалогаtrue: Содержимое рассуждений сохраняется и отправляется в последующих API-вызовахЭта настройка требуется некоторыми LLM-провайдерами (например, Moonshot), которые возвращают ошибки вроде "thinking is enabled but reasoning_content is missing in assistant tool call message", когда содержимое рассуждений не включено в многократные диалоги. Включите эту настройку, если ваш провайдер требует сохранения содержимого рассуждений.
PentAGI поддерживает Ollama как для локального вывода LLM (без затрат, повышенная конфиденциальность), так и для Ollama Cloud (управляемый сервис с бесплатным уровнем).
Ollama Cloud предоставляет управляемый вывод с щедрым бесплатным уровнем и масштабируемыми платными тарифами.
Настройка бесплатного тарифа (одна модель)```bash
OLLAMA_SERVER_URL=https://ollama.com OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key OLLAMA_SERVER_MODEL=gpt-oss:120b # Example: OpenAI OSS 120B model
**Настройка платного тарифа (мультимодельная конфигурация с предварительной настройкой)**
Для платных тарифов, поддерживающих несколько одновременных моделей, используйте предварительно настроенную конфигурацию Ollama Cloud:```bash
# Using pre-built Ollama Cloud configuration (included in Docker image)
OLLAMA_SERVER_URL=https://ollama.com
OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-cloud.provider.yml
Предварительно созданная конфигурация ollama-cloud.provider.yml содержит оптимизированные назначения моделей для всех типов агентов:
nemotron-3-super:cloud - Быстрая модель общего назначенияqwen3-coder-next:cloud - Продвинутые рассуждения с режимом высоких усилийqwen3-coder-next:cloud - Специализированные модели для написания кодаqwen3.5:397b-cloud - Большой контекст для сбора информацииglm-5:cloud - Высококачественное уточнение текстаminimax-m2.7:cloud - Эффективные консультационные задачиdevstral-2:123b-cloud - Задачи установки и настройкиCustom Configuration (Advanced)
Чтобы создать собственную конфигурацию агента, смонтируйте пользовательский файл из файловой системы хоста:```bash
OLLAMA_SERVER_URL=https://ollama.com OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama.provider.yml
PENTAGI_OLLAMA_SERVER_CONFIG_PATH=/path/on/host/my-ollama-config.yml
Переменная окружения `PENTAGI_OLLAMA_SERVER_CONFIG_PATH` указывает на ваш файл конфигурации хоста, сопоставляя его с `/opt/pentagi/conf/ollama.provider.yml` внутри контейнера.
**Пример пользовательской конфигурации** (`my-ollama-config.yml`):```yaml
primary_agent:
model: "qwen3-coder-next:cloud"
temperature: 1.0
top_p: 0.9
max_tokens: 32768
reasoning:
effort: high
coder:
model: "qwen3-coder:32b"
temperature: 1.0
max_tokens: 20480
Для самостоятельно размещённых экземпляров Ollama:```bash
OLLAMA_SERVER_URL=http://localhost:11434 OLLAMA_SERVER_MODEL=llama3.1:8b-instruct-q8_0
OLLAMA_SERVER_URL=http://ollama-server:11434 OLLAMA_SERVER_PULL_MODELS_ENABLED=true OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900 OLLAMA_SERVER_LOAD_MODELS_ENABLED=true
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-llama318b.provider.yml
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwq32b-fp16-tc.provider.yml
**Рекомендации по производительности:**
- **Model Discovery** (`OLLAMA_SERVER_LOAD_MODELS_ENABLED=true`): Добавляет задержку запуска 1-2 с при запросе к API Ollama
- **Auto-pull** (`OLLAMA_SERVER_PULL_MODELS_ENABLED=true`): Первый запуск может занять несколько минут на скачивание моделей
- **Pull timeout** (`OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900`): Тайм-аут загрузки: 15 минут в секундах
- **Static Config**: Отключите оба флага и укажите модели в файле конфигурации для максимально быстрого запуска
#### Создание пользовательских моделей Ollama с расширенным контекстом
PentAGI требует модели с большим окном контекста, чем стандартные конфигурации Ollama. Вам необходимо создать пользовательские модели с увеличенным параметром `num_ctx` с помощью Modelfiles. В то время как типичные рабочие процессы агента потребляют около 64K токенов, PentAGI использует размер контекста 110K для запаса надёжности и обработки сложных сценариев тестирования на проникновение.
**Важно**: Параметр `num_ctx` может быть установлен только во время создания модели через Modelfile - его нельзя изменить после создания модели или переопределить во время выполнения.
##### Пример: Qwen3 32B FP16 с расширенным контекстом
Создайте Modelfile с именем `Modelfile_qwen3_32b_fp16_tc`:```dockerfile
FROM qwen3:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.3
PARAMETER top_p 0.8
PARAMETER min_p 0.0
PARAMETER top_k 20
PARAMETER repeat_penalty 1.1
Создайте пользовательскую модель:```bash ollama create qwen3:32b-fp16-tc -f Modelfile_qwen3_32b_fp16_tc
##### Пример: QwQ 32B FP16 с расширенным контекстом
Создайте Modelfile с именем `Modelfile_qwq_32b_fp16_tc`:```dockerfile
FROM qwq:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.2
PARAMETER top_p 0.7
PARAMETER min_p 0.0
PARAMETER top_k 40
PARAMETER repeat_penalty 1.2
Создайте пользовательскую модель:```bash ollama create qwq:32b-fp16-tc -f Modelfile_qwq_32b_fp16_tc
> **Примечание**: Модель QwQ 32B FP16 требует приблизительно **71,3 ГБ VRAM** для инференса. Убедитесь, что ваша система имеет достаточный объём памяти GPU перед попыткой использования этой модели.
Эти пользовательские модели упоминаются в предварительно созданных файлах конфигурации провайдера (`ollama-qwen332b-fp16-tc.provider.yml` и `ollama-qwq32b-fp16-tc.provider.yml`), которые включены в Docker-образ по пути `/opt/pentagi/conf/`.
### Конфигурация провайдера OpenAI
PentAGI интегрируется с всеобъемлющей линейкой моделей OpenAI, включающей продвинутые возможности рассуждения с расширенной цепочкой мыслей, агентные модели с улучшенной интеграцией инструментов и специализированные кодовые модели для инженерии безопасности.
#### Переменные конфигурации
| Переменная | По умолчанию | Описание |
| --------------------- | ---------------------------- | ------------------------------- |
| `OPEN_AI_KEY` | | API-ключ для сервисов OpenAI |
| `OPEN_AI_SERVER_URL` | `https://api.openai.com/v1` | Конечная точка API OpenAI |
#### Примеры конфигурации```bash
# Basic OpenAI setup
OPEN_AI_KEY=your_openai_api_key
OPEN_AI_SERVER_URL=https://api.openai.com/v1
# Using with proxy for enhanced security
OPEN_AI_KEY=your_openai_api_key
PROXY_URL=http://your-proxy:8080
PentAGI поддерживает 31 модель OpenAI с возможностью вызова инструментов, стриминга, режимов рассуждения и кэширования подсказок. Модели, отмеченные *, используются в конфигурации по умолчанию.
Серия GPT-5.2 - Последние флагманские агентные модели (декабрь 2025)
Серии GPT-5/5.1 - Продвинутые агентные модели
Серии GPT-5/5.1 Codex - Специализированные на коде
Серия GPT-4.1 - Повышенный интеллект
Серия GPT-4o - Мультимодальный флагман
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|---|---|---|
gpt-4o |
o-Серия - Модели продвинутого рассуждения
Цены: За 1 миллион токенов. Модели с рассуждением включают токены мышления в стоимость вывода.
[!WARNING] Модели GPT-5 - Требуется доверенный доступ*
Все модели серии GPT-5 (
gpt-5,gpt-5.1,gpt-5.2,gpt-5-pro,gpt-5.2-proи все варианты Codex) работают нестабильно с PentAGI и могут вызывать механизмы безопасности кибербезопасности OpenAI без подтвержденного доступа.Для надежной работы с моделями GPT-5:*
- Индивидуальные пользователи: Подтвердите свою личность по адресу chatgpt.com/cyber
- Корпоративные команды: Запросите доверенный доступ через своего представителя OpenAI
- Исследователи безопасности: Подайте заявку в Программу грантов по кибербезопасности (включает 10 миллионов долларов в виде API-кредитов)
Рекомендуемые альтернативы без верификации:
- Используйте модели
o-series(o3, o4-mini, o1) для задач, требующих рассуждения- Используйте серию
gpt-4.1для общего интеллекта и вызова функций- Все модели o-series и gpt-4.x надежно работают без специального доступа
Уровни усилия рассуждения:
Ключевые особенности:
PentAGI интегрируется с моделями Claude от Anthropic, предлагая продвинутые возможности расширенного мышления, исключительные механизмы безопасности и сложное понимание контекстов безопасности с кэшированием подсказок.
| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY | API-ключ для сервисов Anthropic | |
ANTHROPIC_SERVER_URL | https://api.anthropic.com/v1 | Конечная точка API Anthropic |
ANTHROPIC_API_KEY=your_anthropic_api_key ANTHROPIC_SERVER_URL=https://api.anthropic.com/v1
ANTHROPIC_API_KEY=your_anthropic_api_key PROXY_URL=http://your-proxy:8080
> [!NOTE]
> **Google Vertex AI для моделей Claude**
>
> PentAGI в настоящее время не предоставляет выделенного пути конфигурации Google Vertex AI для Anthropic Claude в `.env`. На данный момент нет отдельного поля для ключа API Vertex AI, а существующие переменные Anthropic (`ANTHROPIC_API_KEY`, `ANTHROPIC_SERVER_URL`) нацелены на прямой API Anthropic. Поддерживаемые маршруты для Claude:
>
> - **Прямой API Anthropic**: `ANTHROPIC_API_KEY` и `ANTHROPIC_SERVER_URL` (см. выше).
> - **AWS Bedrock**: переменные `BEDROCK_*` (см. [Конфигурация провайдера AWS Bedrock](#aws-bedrock-provider-configuration)).
>
> Если вам нужно использовать Vertex AI сегодня, самый безопасный поддерживаемый обходной путь — предоставить Vertex AI через OpenAI-совместимый прокси или шлюз, который преобразует вызовы Vertex AI в формат Chat Completions, сохраняя поведение чата и вызова инструментов, на которое полагается PentAGI, а затем направить пользовательского провайдера LLM на этот шлюз с помощью `LLM_SERVER_URL`, `LLM_SERVER_KEY` и `LLM_SERVER_MODEL`. Надежность этого пути зависит только от выбранного шлюза.
#### Поддерживаемые модели
PentAGI поддерживает 10 моделей Claude с вызовом инструментов, потоковой передачей, расширенным мышлением, адаптивным мышлением и кэшированием подсказок. Модели, отмеченные `*`, используются в конфигурации по умолчанию.
**Серия Claude 4 — Новейшие модели (2025–2026)**
| Идентификатор модели | Мышление | Дата выпуска | Цена (Ввод/Вывод/Кэш Чт/Зп) | Назначение |
| ------------------------- | -------- | ------------ | --------------------------- | ------------------------------------------- |
| `claude-opus-4-6`* | ✅ | Май 2025 | $5.00/$25.00/$0.50/$6.25 | Самая интеллектуальная модель для автономных агентов и кодирования. Расширенное + адаптивное мышление для разработки сложных эксплойтов, многоэтапного моделирования атак |
| `claude-sonnet-4-6`* | ✅ | Авг 2025 | $3.00/$15.00/$0.30/$3.75 | Лучший баланс скорости и интеллекта с адаптивным мышлением. Многофазные оценки безопасности, интеллектуальный анализ уязвимостей, охота за угрозами в реальном времени |
| `claude-haiku-4-5`* | ✅ | Окт 2025 | $1.00/$5.00/$0.10/$1.25 | Самая быстрая модель с интеллектом, близким к передовому. Высокочастотное сканирование, мониторинг в реальном времени, массовое автоматизированное тестирование |
**Устаревшие модели — всё ещё поддерживаются**
| Идентификатор модели | Мышление | Дата выпуска | Цена (Ввод/Вывод/Кэш Чт/Зп) | Назначение |
| ------------------------- | -------- | ------------ | --------------------------- | ------------------------------------------- |
| `claude-sonnet-4-5` | ✅ | Сен 2025 | $3.00/$15.00/$0.30/$3.75 | Передовые рассуждения (заменена на 4-6). Искусное тестирование на проникновение, расширенный анализ угроз |
| `claude-opus-4-5` | ✅ | Ноя 2025 | $5.00/$25.00/$0.50/$6.25 | Предельные рассуждения (заменена на opus-4-6). Критические исследования безопасности, обнаружение 0-day, операции красных команд |
| `claude-opus-4-1` | ✅ | Авг 2025 | $15.00/$75.00/$1.50/$18.75 | Продвинутые рассуждения (заменена). Сложное тестирование на проникновение, изощрённое моделирование угроз |
| `claude-sonnet-4-0` | ✅ | Май 2025 | $3.00/$15.00/$0.30/$3.75 | Высокопроизводительные рассуждения (заменена). Сложное моделирование угроз, координация нескольких инструментов |
| `claude-opus-4-0` | ✅ | Май 2025 | $15.00/$75.00/$1.50/$18.75 | Первое поколение Opus (заменена). Многоэтапная разработка эксплойтов, автономные рабочие процессы пентестинга |
**Устаревшие модели — перенесите на текущие модели**
| Идентификатор модели | Мышление | Дата выпуска | Цена (Ввод/Вывод/Кэш Чт/Зп) | Примечания |
| -------------------------------- | -------- | ------------ | --------------------------- | ----------------------------------------- |
| `claude-3-haiku-20240307` | ❌ | Мар 2024 | $0.25/$1.25/$0.03/$0.30 | Будет выведена из эксплуатации 19 апреля 2026 г. Перенесите на claude-haiku-4-5 |
**Цены**: За 1 млн токенов. Цены на кэш включают стоимость чтения и записи.
**Конфигурация расширенного мышления**:
- **Макс. токенов 4096**: Генератор (claude-opus-4-6) для максимальной глубины рассуждений при разработке сложных эксплойтов
- **Макс. токенов 2048**: Кодер (claude-sonnet-4-6) для сбалансированного анализа кода и исследования уязвимостей
- **Макс. токенов 1024**: Основной агент, ассистент, уточнитель, советник, рефлектор, искатель, установщик, пентестер для целенаправленных рассуждений по конкретным задачам
- **Расширенное мышление**: Все модели Claude 4.5+ и 4.6 поддерживают настраиваемое расширенное мышление для задач глубоких рассуждений
**Ключевые возможности**:
- **Расширенное мышление**: Все модели Claude 4.5+ и 4.6 с настраиваемой глубиной цепочки рассуждений для сложного анализа безопасности
- **Адаптивное мышление**: Серия Claude 4.6 (Opus/Sonnet) динамически регулирует глубину рассуждений в зависимости от сложности задачи для оптимальной производительности
- **Кэширование подсказок**: Значительное снижение стоимости с отдельной ценой на чтение/запись (10% чтение, 125% запись от ввода)
- **Расширенный контекст**: 200K токенов по умолчанию, до 1M токенов (бета) для Claude Opus/Sonnet 4.6 для всестороннего анализа кодовой базы
- **Вызов инструментов**: Надёжный вызов функций с исключительной точностью для координации инструментов безопасности
- **Потоковая передача**: Потоковая передача ответов в реальном времени для интерактивных рабочих процессов тестирования на проникновение
- **Безопасность в первую очередь**: Встроенные механизмы безопасности, обеспечивающие ответственные методы тестирования безопасности
- **Мультимодальная поддержка**: Возможности зрения в новейших моделях для анализа скриншотов и оценки безопасности пользовательского интерфейса
---
[Read more](https://github.com/vxcontrol/pentagi)
| Параметр | Переменная среды | По умолчанию | Описание |
|---|
| Preserve Last | SUMMARIZER_PRESERVE_LAST | true | Оставлять ли все сообщения в последнем разделе нетронутыми |
| Use QA Pairs | SUMMARIZER_USE_QA | true | Использовать ли стратегию суммаризации пар вопрос-ответ |
| Summarize Human in QA | SUMMARIZER_SUM_MSG_HUMAN_IN_QA | false | Суммировать ли сообщения человека в парах вопрос-ответ |
| Last Section Size | SUMMARIZER_LAST_SEC_BYTES | 51200 | Максимальный размер последнего раздела в байтах (50 КБ) |
| Max Body Pair Size | SUMMARIZER_MAX_BP_BYTES | 16384 | Максимальный размер одной пары тела в байтах (16 КБ) |
| Max QA Sections | SUMMARIZER_MAX_QA_SECTIONS | 10 | Максимальное количество сохраняемых разделов пар вопрос-ответ |
| Max QA Size | SUMMARIZER_MAX_QA_BYTES | 65536 | Максимальный размер разделов пар вопрос-ответ в байтах (64 КБ) |
| Keep QA Sections | SUMMARIZER_KEEP_QA_SECTIONS | 1 | Количество последних разделов QA, сохраняемых без суммаризации |
| Параметр | Переменная среды | По умолчанию | Описание |
|---|
| Preserve Last | ASSISTANT_SUMMARIZER_PRESERVE_LAST | true | Сохранять ли все сообщения в последнем разделе ассистента |
| Last Section Size | ASSISTANT_SUMMARIZER_LAST_SEC_BYTES | 76800 | Максимальный размер последнего раздела ассистента в байтах (75 КБ) |
| Max Body Pair Size | ASSISTANT_SUMMARIZER_MAX_BP_BYTES | 16384 | Максимальный размер одной пары тела в контексте ассистента (16 КБ) |
| Max QA Sections | ASSISTANT_SUMMARIZER_MAX_QA_SECTIONS | 7 | Максимальное количество сохраняемых разделов QA в контексте ассистента |
| Max QA Size | ASSISTANT_SUMMARIZER_MAX_QA_BYTES | 76800 | Максимальный размер разделов QA ассистента в байтах (75 КБ) |
| Keep QA Sections | ASSISTANT_SUMMARIZER_KEEP_QA_SECTIONS | 3 | Количество последних разделов QA, сохраняемых без суммаризации |
PENTAGI_POSTGRES_USERPENTAGI_POSTGRES_PASSWORDNEO4J_USER и NEO4J_PASSWORD - Учетные данные Neo4j (для графа знаний Graphiti)PROXY_URL — это глобальный URL-адрес прокси для всех LLM-провайдеров и внешних поисковых систем. Вы можете использовать его для изоляции от внешних сетей.
Файл docker-compose.yml запускает сервис PentAGI от имени пользователя root, так как ему требуется доступ к docker.sock для управления контейнерами. Если вы используете сетевое подключение TCP/IP к Docker вместо файла сокета, вы можете удалить привилегии root и использовать пользователя pentagi по умолчанию для повышения безопасности.
| Переменная | По умолчанию | Описание |
|---|
LLM_SERVER_URL | Базовый URL для конечной точки пользовательского LLM API | |
LLM_SERVER_KEY | Ключ API для пользовательского LLM-провайдера | |
LLM_SERVER_MODEL | Модель по умолчанию (можно переопределить в конфигурации провайдера) | |
LLM_SERVER_CONFIG_PATH | Путь к файлу конфигурации YAML для агент-специфичных моделей | |
LLM_SERVER_PROVIDER | Префикс имени провайдера для имен моделей (например, openrouter, deepseek для прокси LiteLLM) | |
LLM_SERVER_LEGACY_REASONING | false | Управляет форматом рассуждений в API-запросах |
LLM_SERVER_PRESERVE_REASONING | false | Сохранять содержимое рассуждений в многократных диалогах (требуется некоторыми провайдерами) |
| Переменная | По умолчанию | Описание |
|---|
OLLAMA_SERVER_URL | URL вашего сервера Ollama или Ollama Cloud | |
OLLAMA_SERVER_API_KEY | Ключ API для аутентификации Ollama Cloud | |
OLLAMA_SERVER_MODEL | Модель по умолчанию для вывода | |
OLLAMA_SERVER_CONFIG_PATH | Путь к файлу конфигурации пользовательского агента | |
OLLAMA_SERVER_PULL_MODELS_TIMEOUT | 600 | Тайм-аут для загрузки моделей (секунды) |
OLLAMA_SERVER_PULL_MODELS_ENABLED | false | Автоматическая загрузка моделей при запуске |
OLLAMA_SERVER_LOAD_MODELS_ENABLED | false | Запрос сервера на доступные модели |
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|
gpt-5.2* | ✅ | $1.75/$14.00/$0.18 | Последний флагман с улучшенным рассуждением и интеграцией инструментов, автономное исследование безопасности |
gpt-5.2-pro | ✅ | $21.00/$168.00/$0.00 | Премиум-версия с превосходным агентным кодированием, критически важные исследования безопасности, обнаружение уязвимостей нулевого дня |
gpt-5.2-codex | ✅ | $1.75/$14.00/$0.18 | Самый продвинутый, специализированный на коде, с компоновкой контекста, мощные кибербезопасные возможности |
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|
gpt-5 | ✅ | $1.25/$10.00/$0.13 | Ведущая агентная модель с продвинутым рассуждением, автономное исследование безопасности, разработка цепочек эксплойтов |
gpt-5.1 | ✅ | $1.25/$10.00/$0.13 | Улучшенная агентная модель с адаптивным рассуждением, сбалансированное тестирование на проникновение с сильной координацией инструментов |
gpt-5-pro | ✅ | $15.00/$120.00/$0.00 | Премиум-версия с серьезными улучшениями рассуждения, уменьшенным количеством галлюцинаций, критические операции безопасности |
gpt-5-mini | ✅ | $0.25/$2.00/$0.03 | Эффективная модель, балансирующая скорость и интеллект, автоматизированный анализ уязвимостей, генерация эксплойтов |
gpt-5-nano | ✅ | $0.05/$0.40/$0.01 | Самая быстрая для высокопроизводительного сканирования, разведки, массового обнаружения уязвимостей |
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|
gpt-5.1-codex-max | ✅ | $1.25/$10.00/$0.13 | Улучшенное рассуждение для сложного кодирования, подтвержденные находки CVE, систематическая разработка эксплойтов |
gpt-5.1-codex | ✅ | $1.25/$10.00/$0.13 | Стандартная оптимизированная для кода модель с сильным рассуждением, генерация эксплойтов, анализ уязвимостей |
gpt-5-codex | ✅ | $1.25/$10.00/$0.13 | Базовая специализированная для кода модель, сканирование уязвимостей, базовая генерация эксплойтов |
gpt-5.1-codex-mini | ✅ | $0.25/$2.00/$0.03 | Компактная высокопроизводительная модель, в 4 раза большая емкость, быстрое обнаружение уязвимостей |
codex-mini-latest | ✅ | $1.50/$6.00/$0.38 | Последняя компактная модель для кода, автоматизированное ревью кода, базовый анализ уязвимостей |
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|
gpt-4.1 | ❌ | $2.00/$8.00/$0.50 | Улучшенный флагман с превосходным вызовом функций, сложный анализ угроз, разработка изощренных эксплойтов |
gpt-4.1-mini* | ❌ | $0.40/$1.60/$0.10 | Сбалансированная производительность с повышенной эффективностью, рутинные оценки безопасности, автоматизированный анализ кода |
gpt-4.1-nano | ❌ | $0.10/$0.40/$0.03 | Сверхбыстрая легковесная модель, массовое сканирование безопасности, быстрая разведка, непрерывный мониторинг |
| ❌ |
| $2.50/$10.00/$1.25 |
| Мультимодальный флагман с возможностями зрения, анализ изображений, оценка веб-интерфейсов, оркестровка множества инструментов |
gpt-4o-mini | ❌ | $0.15/$0.60/$0.08 | Компактная мультимодальная модель с сильным вызовом функций, высокочастотное сканирование, экономичные массовые операции |
| Model ID | Thinking | Price (Input/Output/Cache) | Use Case |
|---|
o4-mini* | ✅ | $1.10/$4.40/$0.28 | Рассуждение нового поколения с повышенной скоростью, методичные оценки безопасности, систематическая разработка эксплойтов |
o3* | ✅ | $2.00/$8.00/$0.50 | Мощная модель рассуждения, многоэтапные цепочки атак, глубокий анализ уязвимостей |
o3-mini | ✅ | $1.10/$4.40/$0.55 | Компактное рассуждение с расширенным мышлением, пошаговое планирование атак, логическое связывание уязвимостей |
o1 | ✅ | $15.00/$60.00/$7.50 | Превосходное рассуждение с максимальной глубиной, продвинутое тестирование на проникновение, исследование новых эксплойтов |
o3-pro | ✅ | $20.00/$80.00/$0.00 | Самое продвинутое рассуждение, на 80% дешевле o1-pro, исследование уязвимостей нулевого дня, критические расследования безопасности |
o1-pro | ✅ | $150.00/$600.00/$0.00 | Премиум-рассуждение предыдущего поколения, исчерпывающий анализ безопасности, задачи критической важности |