S4 Firewall
Orçamento de tokens de LLM e controle de loops descontrolados
Um proxy de encaminhamento in-VPC que coloca um spend firewall preemptivo à frente do seu tráfego de LLM. Seu app só altera o base_url (compatível com OpenAI, compatível com Anthropic Messages ou compatível com Bedrock); cada request passa por um pipeline síncrono attribute → reserve → budget/anomaly → forward → reconcile. Sua função principal é o circuit breaker de loops descontrolados: ele bloqueia deterministicamente um request antes de ser retransmitido quando um orçamento seria excedido.
S4 Firewall é um proxy de encaminhamento que coloca um orçamento e um circuit breaker à frente do seu gasto com tokens de LLM, com duas camadas honestamente distintas. A camada 1, o hard cap, é determinística e preemptiva: o gasto cumulativo é conhecido, então qualquer request cuja reserva levaria o total corrente além de um hard cap configurado é bloqueado antes de ser retransmitido — um bloqueio 100% preemptivo de requests acima do limite, fixado por chaos tests. A camada 2, o bloqueio de loop, é best-effort e comportamental: detecta loops de agentes, cadeias de chamadas quase duplicadas e amplificação dentro da sessão para limitar o raio de impacto. O gasto é atribuído por feature / tenant / customer, e respostas em streaming passam chunk por chunk para preservar o time-to-first-token.
O problema
Os gastos com tokens de LLM são singularmente propensos a eventos descontrolados: um loop de agente, uma cadeia de chamadas quase duplicadas ou uma amplificação dentro da sessão podem consumir o orçamento de um mês antes que alguém perceba. Como o número de tokens de saída é desconhecido até que a resposta retorne, sem um mecanismo que interrompa os gastos antes que a cobrança seja gerada, resta apenas reconstruir depois do fato qual funcionalidade, tenant ou cliente elevou o custo. Seus gastos acompanham um loop descontrolado em vez do trabalho que você realmente pretendia.
Como funciona
- 1
Basta apontar seu base_url para ele
O S4 Firewall é um proxy de encaminhamento que você executa dentro da sua própria Amazon VPC. Sua aplicação altera apenas o seu base_url: o firewall aceita uma entrada compatível com OpenAI, Anthropic Messages ou Bedrock e encaminha cada requisição para o provedor upstream que você já utiliza. Respostas em streaming são transmitidas chunk por chunk sem buffering, de modo que o time-to-first-token é preservado.
- 2
Atribua, reserve e decida em um único pipeline síncrono
Antes do encaminhamento, cada requisição executa um pipeline síncrono do tipo attribute -> reserve -> budget/anomaly -> forward -> reconcile. Ele atribui a requisição a uma funcionalidade, tenant e cliente, reserva o custo no pior cenário (tokens de entrada contabilizados na hora, saída precificada como max_tokens vezes a taxa de saída), verifica a reserva em relação à hierarquia de orçamentos e, então, encaminha ou bloqueia.
- 3
Duas camadas realizam o bloqueio, depois reconciliam com o uso real
A Layer 1, o limite rígido, é determinística e preventiva: qualquer requisição cuja reserva exceda um limite configurado é bloqueada antes do encaminhamento (um bloqueio 100% preventivo de requisições que excedam o limite, em que a mesma entrada de estado gera a mesma decisão de saída, verificado por testes de caos). A Layer 2, o bloqueio de loop, é de melhor esforço e comportamental: detecta loops de agentes, cadeias de chamadas quase duplicadas e amplificação dentro da sessão para limitar o raio de impacto. Quando a resposta retorna, o uso relatado pelo provedor é considerado a fonte da verdade e reconciliado com a reserva.
Destaques
Hard cap determinístico: bloqueia um request acima do orçamento antes de ser retransmitido (hierarquia de orçamento tenant / feature / customer).
Circuit breaker para runaway loops: detecta loops de agentes e cadeias de chamadas quase duplicadas para conter o blast radius.
Drop-in: base_url compatível com OpenAI / Anthropic / Bedrock, streaming passthrough (TTFT preservado), roda na sua própria VPC.
O que está incluído
- AMI arm64 baseada no Amazon Linux 2023 (executada em instâncias Graviton c6g / c7g, tarifada por hora de instância)
- Proxy de encaminhamento com entrada compatível com OpenAI, Anthropic Messages e Bedrock (as aplicações alteram apenas o seu base_url; o streaming passa chunk por chunk, preservando o TTFT)
- Layer 1 hard cap — um circuit breaker determinístico e preventivo que bloqueia qualquer requisição que exceda o orçamento antes do encaminhamento (bloqueio 100% preventivo de requisições acima do limite, verificado por testes de caos)
- Layer 2 loop block — uma camada comportamental de melhor esforço que detecta loops de agentes, cadeias de chamadas quase duplicadas e amplificação dentro da sessão para limitar o raio de impacto (não há garantia de 100%; acompanha um modo shadow em dry-run)
- Contabilidade de tokens baseada em reserve-then-reconcile — a reserva utiliza o pior caso (entrada contabilizada na hora, saída precificada como max_tokens vezes a taxa de saída) e depois reconcilia com o uso relatado pelo provedor como fonte da verdade
- Atribuição de gastos com tokens por funcionalidade/tenant/cliente, enviada ao Amazon CloudWatch (namespace S4/Firewall) e um registro de auditoria opcional contendo apenas contagens (nunca os corpos de prompt ou resposta)
- Modelos do CloudFormation de um clique (cfn-single.yaml para uma única instância, cfn-ha.yaml para uma frota redundante atrás de um balanceador de carga interno), com função do IAM de privilégio mínimo e sem plano de controle ou banco de dados separados
Casos de uso
Interromper um agente descontrolado com um limite rígido determinístico antes que ele consuma o orçamento do mês
Equipes que precisam atribuir o gasto de tokens por funcionalidade, tenant ou cliente — com granularidade mais fina do que a de principal do IAM — e definir orçamentos de acordo
Controlar o tráfego de LLM sem entregar prompts ou corpos de resposta a terceiros — um registro que armazena a contagem de tokens, não o conteúdo
Colocar um único orçamento dentro da VPC à frente do tráfego compatível com OpenAI, Anthropic e Bedrock ao apontar o base_url da aplicação para o proxy
FAQ
Ele consegue interromper um agente descontrolado 100% das vezes?
Mantemos as duas camadas honestamente distintas. A Layer 1, o limite rígido, é determinística e preventiva: qualquer requisição cuja reserva exceda um limite configurado é bloqueada antes do encaminhamento, um bloqueio 100% preventivo de requisições acima do limite (o mesmo estado na entrada gera a mesma decisão na saída, verificado por testes de caos). A Layer 2, a detecção de loop, é de melhor esforço: um comportamento descontrolado só é detectável após algumas chamadas, e essas poucas chamadas já são faturadas, de modo que ela limita o raio de impacto a um pequeno número de requisições ou a um valor baixo em dólares, em vez de garantir 100% de prevenção. Ela acompanha um modo shadow em dry-run para que você possa medir a taxa de falsos bloqueios antes de impor os limites.
Se os tokens de saída são desconhecidos com antecedência, como ele interrompe os gastos antes da cobrança?
É baseado no modelo reserve-then-reconcile, não em uma estimativa simples. Antes do encaminhamento, a reserva utiliza o pior cenário — tokens de entrada contabilizados na hora, saída precificada como max_tokens vezes a taxa de saída — para tomar a decisão de limite rígido (hard cap). Quando a resposta retorna, o uso relatado pelo provedor é considerado a fonte da verdade e reconciliado com a reserva. A contagem de tokens é normalizada entre provedores e dividida em entrada, saída, cached-read e cache-write, de modo que a contabilidade reflita a tabela de preços real de cada provedor.
Onde meus prompts são armazenados ou enviados?
O próprio S4 Firewall não armazena nem transmite seus prompts ou respostas. Sua única chamada de saída é a requisição ao provedor que sua aplicação faria de qualquer maneira — o firewall não adiciona egress. O registro e as métricas carregam contagens de tokens, não o conteúdo (counts-not-content, garantido por testes de propriedade). Para onde os prompts são enviados depende do upstream escolhido: o roteamento para o Amazon Bedrock por meio de um VPC interface endpoint (PrivateLink, que esta AMI pode provisionar) mantém essas chamadas dentro da sua fronteira AWS, enquanto o roteamento para um provedor de terceiros na internet pública envia o tráfego para a internet e não o mantém na sua VPC.
Ele precisa de um plano de controle ou banco de dados separado?
Não. Não há um plano de controle separado nem banco de dados externo. O estado do orçamento é mantido em memória por instância e recalculado do zero na inicialização. O plano de dados é um único binário estático executado sob uma unidade systemd protegida com zero capacidades elevadas e uma função do IAM de menor privilégio (invocação de modelo upstream, PutMetricData do CloudWatch com escopo restrito ao namespace S4/Firewall e PutObject de gravação exclusiva no bucket do registro de auditoria). Não há chamadas de telemetria externa (home-call) nem validação de chave de licença.
Como ele é cobrado e como faço para implantá-lo?
A cobrança é por hora de AMI (tarifada por hora de instância) com uma opção de contrato anual, executada em instâncias c6g / c7g (Arm). A implantação é feita com os modelos do CloudFormation inclusos — cfn-single.yaml para uma única instância, cfn-ha.yaml para uma frota redundante atrás de um balanceador de carga interno —, que opcionalmente criam o VPC interface endpoint do Bedrock. Depois, basta apontar o base_url da sua aplicação para o firewall.
Modelo de precificação
Taxa horária de software + EC2 (classe c6g, Arm). Medição por tipo de instância.
Outros produtos S4
S4 — Squished S3
Gateway transparente de compressão S3 com GPU
S4 Logs
Arquive CloudWatch Logs em S3 com zstd
S4 Metrics
Controle a cardinalidade de métricas do CloudWatch