> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/conceitos/readme.md).

# Componentes principais

Antes de entrar nos detalhes, vale entender como o skail organiza sua aplicação (workloads).

**A ideia é simples:**

* você escreve o fluxo do seu sistema como código (SDK)
* o skail executa esse fluxo de forma confiável (Runtime + Orquestrador)
* e você consegue acompanhar tudo em tempo real (Portal)

**Esses elementos trabalham juntos para resolver problemas comuns em sistemas distribuídos, como:**

* fluxos longos e difíceis de manter
* falhas no meio do processo
* retries manuais
* dificuldade de entender o que aconteceu

\
Sem precisar montar filas, jobs, controle de estado ou lógica de retry manual.

Você não precisa dominar todos os detalhes para começar — mas entender o papel de cada um ajuda a construir sistemas mais simples e previsíveis.

O skail é composto por quatro partes que trabalham juntas:

## SDK

O SDK é a parte que você usa no código.

É onde você define:

* o fluxo da sua aplicação (`SkailFunction`)
* as integrações com sistemas externos (`SkailCommand`)
* e como o sistema reage a eventos (`WaitForEvent`, `FireEvent`)

Na prática, é só código C# comum — sem precisar aprender novos paradigmas complexos.

> você escreve o fluxo como se fosse síncrono, mesmo lidando com eventos, tempo e falhas.

O SDK cuida de expor os blocos necessários para isso, sem que você precise se preocupar com infraestrutura ou arquitetura complexa.&#x20;

[Ver mais detalhes do SDK.](/conceitos/readme.md#sdk)

## Runtime

O Runtime é quem executa o seu código.

Ele garante que:

* o fluxo continue exatamente de onde parou
* nenhuma etapa seja executada duas vezes indevidamente
* falhas no meio do processo não quebrem a execução

Mesmo que:

* o processo dure minutos, horas ou dias
* o sistema reinicie
* ou aconteça algum erro no meio

Na prática, o Runtime transforma seu código em uma execução confiável, sem você precisar gerenciar estado manualmente.

[Ver mais detalhes do Runtime.](/conceitos/readme.md#runtime)

## Cloud/Orquestrador

Essa é a camada que coordena tudo.

Ela trabalha junto com o Runtime para garantir que:

* cada execução aconteça no momento certo
* eventos sejam entregues corretamente
* o fluxo avance mesmo com falhas ou interrupções

Você não precisa configurar filas, workers ou infraestrutura distribuída.

O skail cuida disso automaticamente.

## Portal web

O Portal é onde você enxerga tudo o que está acontecendo.

É nele que você:

* configura ambientes (dev, staging, produção)
* gerencia aplicações
* e acompanha execuções em tempo real

**Principalmente, é onde fica o monitor:**

* cada execução aparece com seu estado atual
* cada etapa do fluxo fica visível
* cada chamada externa pode ser inspecionada

**Isso permite:**

* entender rapidamente o que aconteceu
* identificar onde falhou
* e depurar sem depender de logs espalhados

Incluindo o uso do Time Travel Debug, que permite simular e depurar execuções de produção na sua máquina facilmente, com as variáveis e contexto originais, como se estivessem acontecendo agora.
