# Arquitetura

> Os serviços que o PentAGI executa, como eles se comunicam e o que é opcional.

O PentAGI é um conjunto de serviços Docker. A stack principal é suficiente para executar [flows](https://pentagi.com/pt-br/docs/glossary/#flow); o [knowledge graph](https://pentagi.com/pt-br/docs/glossary/#knowledge-graph) e as stacks de observabilidade são complementos opcionais.

## [Contexto do sistema](https://pentagi.com/pt-br/docs/concepts/architecture/#system-context)

```mermaid
flowchart LR
  accTitle: System context of PentAGI with its users, targets, LLM providers, search engines, monitoring and the update server
  user["Security engineer"] -->|HTTPS| pentagi["PentAGI"]
  user -->|monitors| langfuse["Langfuse"]
  user -->|monitors| grafana["Grafana"]
  pentagi -->|tests| target["Target systems"]
  pentagi -->|queries| llm["LLM providers"]
  pentagi -->|searches| search["Search engines"]
  pentagi -->|reports| langfuse
  pentagi -->|reports| grafana
  pentagi -->|checks for updates| update["update.pentagi.com"]
```

Nos primeiros dois minutos após o início e depois a cada três horas, o PentAGI também verifica `update.pentagi.com` em busca de uma versão mais recente e envia um resumo da instalação junto com a solicitação; [Verificação de atualização](https://pentagi.com/pt-br/docs/configuration/security/#update-check) lista o que ela contém e como desativá-la.

## [Serviços](https://pentagi.com/pt-br/docs/concepts/architecture/#services)

| Grupo                      | Serviços                                                                                                                                                              | Arquivo Compose                    |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| Principal                  | `pentagi` (backend em Go com REST e GraphQL, UI em React), `pgvector` (PostgreSQL com pgvector), `pgexporter` (métricas do PostgreSQL), `scraper` (navegador isolado) | `docker-compose.yml`               |
| Knowledge graph            | `graphiti`, `neo4j`                                                                                                                                                   | `docker-compose-graphiti.yml`      |
| Observabilidade de LLM     | `langfuse-web`, `langfuse-worker`, `clickhouse`, `redis`, `minio`, `postgres`                                                                                         | `docker-compose-langfuse.yml`      |
| Observabilidade do sistema | `grafana`, `otel`, `victoriametrics`, `jaeger`, `clickstore`, `loki`, `node-exporter`, `cadvisor`                                                                     | `docker-compose-observability.yml` |

As [tools](https://pentagi.com/pt-br/docs/glossary/#tool) nunca executam dentro do próprio contêiner `pentagi`: cada flow recebe seu próprio container em [sandbox](https://pentagi.com/pt-br/docs/glossary/#sandbox), construído a partir de uma imagem escolhida para o objetivo do flow, como Kali Linux.

## [Contêineres](https://pentagi.com/pt-br/docs/concepts/architecture/#containers)

```mermaid
graph TB
  accTitle: Containers of the core stack and the optional knowledge graph
  subgraph Core
    UI[Web UI] -->|HTTP/WS| API[Backend API]
    API --> DB[(PostgreSQL + pgvector)]
    API --> Agents[Agents]
    Agents --> Sandbox[Sandboxed tools]
    Agents --> Scraper[Isolated browser]
  end
  subgraph Knowledge graph
    Graphiti --> Neo4j[(Neo4j)]
  end
  Agents --> Graphiti
  API -->|telemetry| OTEL[OpenTelemetry]
  API -->|LLM traces| Langfuse
```

* **Backend API** — Go, com REST e GraphQL e acesso via Bearer token para automação.
* **Vector store** — PostgreSQL com pgvector mantém todos os comandos, saídas e embeddings.
* **Agents** — o sistema multiagente que planeja e executa o trabalho; veja [Agents](https://pentagi.com/pt-br/docs/concepts/agents/).
* **Sandbox** — contêineres de tool isolados do host; em produção, eles podem residir em um [worker node](https://pentagi.com/pt-br/docs/deployment/worker-node/) separado.