Chega de sufoco
pra fazer seu sistema rodar.

O skail roda junto com sua aplicação e resolve automaticamente o que mais vira dor de cabeça quando o sistema cresce: falhas, integrações instáveis, processos quebrando e código difícil de manter.

Ver a documentação
Fluxo crítico inteiro em um código simples
[SkailFunction]
public async SkailTask ProcessarPedidoAsync(Guid pedidoId)
{
    var pedido = await _pedidos.Obter(pedidoId);

    // se uma API falhar, o skail tenta de novo sozinho
    var pagamento = await _pagamento.CobrarCartao(pedido);
    if (!pagamento.Aprovado) return;

    await _estoque.ReservarItens(pedido);
    await _notaFiscal.EmitirNFe(pedido);

    // Espera 72h - sem job rodando, zero cpu
    await SkailTask.DelayHours(72);

    // continua daqui — mesmo se o servidor crashou
    if (!await _cliente.AvaliouCompra(pedidoId))
        await _cliente.SolicitarAvaliacao(pedidoId);
}
executa pedidohibernado · 72hfollow-upcontinua automaticamente daqui
eNotas

"A gente entrega muito mais, com o mesmo time e quase o mesmo código. E quando dá problema, resolvemos em minutos o que levava horas."

— Jonathan S., CTO @ eNotas
Você continua codando do seu jeito

Não precisa aprender Kubernetes. Nem a programar de novo.

Sem mudar de infra e de tecnologia, seu time atual consegue criar sistemas robustos preparados para qualquer cenário e escala, inclusive de agentes de IA, sem mudar o jeito de desenvolver.

Sem lidar com fila, microsserviços
nem arquitetura complexa.

AntesCom skail
public async Task ProcessarPedidoAsync(Guid pedidoId)
{
    // idempotência manual — já processou?
    if (await _db.JaProcessado(pedidoId))
        return;

    var tentativa = 0;
    Exception? ultimo = null;

    while (tentativa++ < 5)
    {
        try
        {
            await _estoque.Reservar(pedidoId);
            var pgto = await _gateway.Cobrar(pedidoId);

            if (!pgto.Aprovado)
            {
                await _estoque.Liberar(pedidoId);   // compensar manual
                return;
            }

            await _nf.Emitir(pedidoId);
            await _db.MarcarProcessado(pedidoId);
            await _fila.Publish("pedido-pronto", pedidoId);
            return;
        }
        catch (Exception ex) when (tentativa < 5)
        {
            ultimo = ex;
            _log.LogError(ex, "tentativa {N}", tentativa);
            await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, tentativa)));
        }
    }

    await _db.RegistrarFalha(pedidoId, ultimo);  // pro suporte resolver
    throw ultimo!;
}
[SkailFunction]
public async SkailTask ProcessarPedidoAsync(Guid pedidoId)
{
    await _pedidos.ReservarEstoque(pedidoId);
    var pgto = await _pedidos.CobrarPagamento(pedidoId);

    if (pgto.Aprovado)
    {
        await _pedidos.EmitirNotaFiscal(pedidoId);
        await _pedidos.NotificarConcluido(pedidoId);
    }
    else
    {
        await _pedidos.LiberarEstoque(pedidoId);
    }
}
~30 linhas — retry, idempotência e compensação manuais~12 linhas — o skail cuida do resto
← arraste o slider para comparar →
Antes
public async Task ProcessarPedidoAsync(Guid pedidoId)
{
    // idempotência manual — já processou?
    if (await _db.JaProcessado(pedidoId))
        return;

    var tentativa = 0;
    Exception? ultimo = null;

    while (tentativa++ < 5)
    {
        try
        {
            await _estoque.Reservar(pedidoId);
            var pgto = await _gateway.Cobrar(pedidoId);

            if (!pgto.Aprovado)
            {
                await _estoque.Liberar(pedidoId);   // compensar manual
                return;
            }

            await _nf.Emitir(pedidoId);
            await _db.MarcarProcessado(pedidoId);
            await _fila.Publish("pedido-pronto", pedidoId);
            return;
        }
        catch (Exception ex) when (tentativa < 5)
        {
            ultimo = ex;
            _log.LogError(ex, "tentativa {N}", tentativa);
            await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, tentativa)));
        }
    }

    await _db.RegistrarFalha(pedidoId, ultimo);  // pro suporte resolver
    throw ultimo!;
}
~30 linhas — retry, idempotência e compensação manuais
Com skail
[SkailFunction]
public async SkailTask ProcessarPedidoAsync(Guid pedidoId)
{
    await _pedidos.ReservarEstoque(pedidoId);
    var pgto = await _pedidos.CobrarPagamento(pedidoId);

    if (pgto.Aprovado)
    {
        await _pedidos.EmitirNotaFiscal(pedidoId);
        await _pedidos.NotificarConcluido(pedidoId);
    }
    else
    {
        await _pedidos.LiberarEstoque(pedidoId);
    }
}
~12 linhas — o skail cuida do resto
Três coisas que mudam de imediato

O que o skail faz por você sem que você precise pensar nisso.

Suas aplicações sobrevivem ao caos

API caiu? Banco deu timeout? Serviço crashou? Não é mais problema seu — o skail tenta de novo sozinho e segue de onde parou, como se nada tivesse acontecido.

replaypasso 2agora

O fim do 'não consigo reproduzir'

Aconteceu algo estranho em produção? Reproduza a execução exata na sua máquina, com os dados reais do momento. Sem restaurar banco, sem recriar cenário.

hibernando0 CPU · 0 RAM

Rotinas grandes passam a ser simples e poderosas

Uma importação de 800 mil notas que dura horas pode pausar pra esperar uma aprovação humana e seguir do mesmo ponto. Sem timeout, sem fila, sem thread rodando (zero CPU).

Ver a documentação
Desenvolva como sempre.
Escale como nunca.

Volte a entregar features. Sem medo de causar mais incêndio.

Desenvolva no seu jeito monolito de sempre — o skail garante o resto.

Produtividade

Monolito simples por fora.
Cloud-native por dentro.

Manutenção

Tão simples que qualquer dev consegue evoluir sem medo de quebrar tudo.

Resiliência

Seu código sempre chega ao fim, mesmo se o servidor cair.

Escala

Mil ou um milhão de execuções — o código é o mesmo.

Observabilidade

Tudo é automaticamente rastreável passo a passo. Zero configuração.

Mesmo com uma falha no meio, a execução chega ao fimconsultar pedidocobrar cartãoatualizar estoqueemitir notaSEFAZ caiu — skail tentou de novo até passarnotificar clientedo ponto de vista do código, é uma linha reta.
Resiliência nativa

Escreva código como se falhas não existissem.

Uma chamada à API pode falhar, um update no banco pode dar timeout, um serviço pode crashar, uma conexão pode cair ou seu servidor pode até reiniciar. Isso não é mais problema seu.

  • Falhas momentâneas se resolvem sozinhas
  • Se o servidor cair, outra máquina continua do mesmo ponto
  • O que já executou nunca roda de novo
  • Sem preocupar com a complexidade de como isso acontece.

É realmente preciso ver pra crer. O skail é diferente de tudo que você já viu — e ao mesmo tempo estranhamente familiar.

Regras de negócio em poucas linhas

As rotinas que antes custavam dias de infra agora são 1 método.

Você nunca escreveu um código tão simples e tão poderoso. Foque no que o negócio precisa fazer — o skail cuida do resto.

Espera e continua sozinho. A execução pode ficar parada (hibernada) por horas, dias ou meses e continuar exatamente do ponto onde parou — com código simples, sem cron, sem timers, sem jobs rodando.

[SkailFunction]
public async SkailTask FollowUpClienteAsync(Guid pedidoId)
{
    // Notifica o cliente que o pedido foi entregue
    await notif.EnviarConfirmacao(pedidoId);

    // Espera 3 dias - sem job rodando
    await SkailTask.DelayHours(72);

    // Continua daqui depois do prazo, como se nunca tivesse parado
    var pedido = await pedidos.Obter(pedidoId);

    if (!pedido.AvaliacaoRecebida)
        await notif.SolicitarAvaliacao(pedidoId);
}
Modernização gradual: features novas brotam dos módulos skailestoquepedidosfaturamentointegrações+ cobrança recorrente+ webhook em tempo realainda legadorodando no skailfeature nova
Modernize seu legado em dias.
Não em meses

Você não joga fora o sistema que já roda.

O skail conversa com seu legado. Você moderniza o pedaço que dói — faturamento, integração com terceiros, estoque — e deixa o resto em paz. Sem big bang, sem migração arriscada.

  • Roda na sua infra atual ou em qualquer lugar
  • Modernize aos poucos, sem risco nem pressão
  • Reaproveite seu código, não precisa reescrever tudo
  • Sem preocupar com microsserviços, filas ou callbacks

Resolva bugs em minutos.
Não em horas ou dias.

O skail registra cada etapa da sua execução, como uma timeline. Então quando algo dá errado em produção, você reproduz tudo localmente em segundos — com os dados, variáveis e contexto reais daquele momento exato.

Monitor nativo

Veja cada execução como um filme.
Não como log.

Cada passo, cada chamada externa, cada duração — tudo aparece automaticamente no painel do skail, sem você configurar nada. Chega de perder tempo vasculhando milhares de logs tentando adivinhar o que aconteceu.

Monitor do skail com timeline passo a passo de uma execução EmitirCTe — cada chamada com duração visível em tempo real
IDE do desenvolvedor reproduzindo execução real de produção, com variáveis e estado em tooltip
Time travel debug

Simule exatamente o que aconteceu em produção na sua máquina.

Pegou um bug estranho? Abra a execução problemática no painel, clique em Debug, e o skail reproduz aquela execução exata na sua máquina — com todas as variáveis, entradas e contexto que tinham em produção. Sem restaurar banco nem recriar cenário manualmente.

Casos de uso onde o skail mais brilha

Onde o skail vira a diferença entre 1 semana e 3 meses.

Integrações com sistemas externos

Conecte ERPs, gateways de pagamento, SEFAZ e serviços diversos — sem ter que tratar falha de comunicação a cada linha de código.

Long-running jobs

Processos que rodam por horas ou dias — conciliação, folha, processamentos em massa, sincronias — com garantia que rodarão até o final mesmo se algo falhar no caminho.

Faturamento e cobrança

Cobrança recorrente, retry de cartão recusado, geração de NF-e. Cada transação garantida do início ao fim.

Onboarding de usuário

Jornadas de cadastro com múltiplas etapas, validações externas, envio de docs — sem perder o progresso quando o usuário some por dias.

Aprovação humana em fluxos

Fluxos que dependem de alguém clicar "aprovar". O skail hiberna até a ação acontecer (ou expirar), sem nenhuma complexidade nem máquina rodando.

Fluxos distribuídos

Processos que orquestram múltiplos serviços, sistemas ou regiões mantendo consistência mesmo quando algo cai no meio do caminho.

Ver a documentação
Agentes de IA

Surfe a era dos agentes de IA com seu sistema atual

O skail transforma seu sistema em uma plataforma pronta para executar agentes de IA. Memória, retries, observabilidade, resiliência e human-in-the-loop — sem microsserviços, filas e nem arquitetura complexa.

Seu sistema orquestrando agentes de IA que chamam tools (WhatsApp, Gmail, Slack, Stripe, banco de dados e outras, de forma extensível); chamadas que falham são repetidas automaticamente. Tudo apoiado no harness que o skail dá: memória, retries, observabilidade e human-in-the-loopo harness que o skail dá ao seu sistemamemória · retries · observabilidade · human-in-the-loopseu sistemaagenteagenteagentese falha, repetetools+
O skail fala sua língua

Disponível hoje em C#. Mais a caminho.

O skail é poliglota, por isso, qualquer função feita em C# pode chamar outra em Java, sem adaptar nada. Dá até pra rodar um time travel debug pra depurar algo entre elas.

C#
Javaem breve
Node.jsem breve
Pythonem breve
FAQ

Perguntas frequentes

Onde minhas aplicações skail rodam?

Onde sua aplicação já roda — mesma infra, mesmo cloud, mesmo data center, ou em qualquer lugar que você escolher, até no seu notebook.

O SDK e runtime do skail rodam junto com sua aplicação e coordenam automaticamente tudo junto ao nosso orquestrador cloud em tempo real.

Você configura algumas variáveis de ambiente e pronto.

Posso rodar atrás de firewall?

Claro. Deve!

Sua aplicação roda dentro da sua infraestrutura — atrás do seu firewall, no seu cloud, com seu banco, nada precisa mudar se não quiser. O orquestrador que coordena as execuções entre os seus workers é um PaaS gerenciado pela skail, que comunicará constantemente com suas aplicações para mantê-las saudáveis e preparadas para qualquer situação.

Em quanto tempo coloco meu código pra rodar no skail?

Em uma sessão de demonstração com nosso time, você sai com um exemplo prático, dentro da sua necessidade, rodando e provando os conceitos que mais importam pra você. Podemos discutir e te mostrar na prática o cenário que você mais precisa, sem um monte de teorias e apresentações.

Dependendo do tamanho do escopo, alguns times colocam rotinas relativamente complexas pra rodar em produção em menos de 2 semanas.

Funciona com .NET Framework antigo ou só .NET 8+?

Hoje suportamos oficialmente .NET 8.

Pra projetos em .NET Framework rodando há anos, o módulo skail roda em .NET 8 e se comunica com seu legado pelos canais que ele já expõe (normalmente um simples POST HTTP [REST], mas pode ser via qualquer outro meio, como fila ou banco). O importante é começar a migrar o que mais vai gerar valor pra sua operação e ir modernizando aos poucos.

O problema é que depois de vivenciar a experiência do skail, seu time nunca mais vai querer fazer algo fora dele! É um problema bom: seu software sai muito mais rápido e bem mais confiável.

Além disso: alivia seu banco de dados já que tudo relacionado à infra fica no skail!

E se eu quiser sair do skail? Estou preso à plataforma?

Não no modelo tradicional de plataformas cloud. Seu código continua sendo seu, rodando na sua infraestrutura e usando tecnologias normais do ecossistema .NET (ou outra tecnologia, se não estiver usando C#). O skail adiciona resiliência, observabilidade e execução distribuída sem te obrigar a reescrever seu sistema ou ficar preso a uma cloud proprietária. Você pode remover o SDK/runtime do skail e rodar sem ou criar isso do seu lado, o seu código é todo seu e suas regras de negócio continuam naturalmente.

Como gerencio minhas aplicações?

Pelo painel do skail, com métricas, logs, time travel debug e replay. Pra quem prefere terminal, tem CLI completo pra deploy, monitoramento e gestão de workloads.

Como funciona a precificação?

Dimensionado pelo volume de execuções do seu cenário e pelo nível de suporte que faz sentido para o seu time. Em 30 minutos de conversa fechamos uma proposta — sem letra miúda, sem cobrança escondida.

E como toda solução cloud séria: é possível realizar um investimento upfront (1, 2 ou 3 anos) pra garantir descontos significativos!

Por que skail é sempre minúsculo?

Propositalmente. Achamos mais tech & cool 🙂

Você não deveria ter medo do próprio sistema.

Qual parte do seu sistema mais te tira o sono hoje? Em minutos te mostramos, ao vivo, como voltar a evoluir seu produto sem medo de quebrar tudo no caminho.

O skail garante que seu software continue funcionando mesmo quando tudo dá errado.