Pular para o conteúdo
A chef placing a red cube on a straight rail, above the word CARMY A chef placing a red cube on a straight rail, above the word CARMY

O raciocínio de um LLM pode ser probabilístico. Os efeitos colaterais, não.

O Carmy é a camada de execução entre agentes de IA e sistemas reais. As tools são funções Rust tipadas, com efeitos explícitos, erros legíveis por máquina, retries seguros e cancelamento de verdade, servidas por HTTP e MCP a partir do mesmo código.
Janela do terminal
$ cargo install carmy-cli
$ carmy new shop && cd shop
$ cargo run # HTTP
$ cargo run -- mcp # as mesmas tools via MCP

Tools tipadas

Uma async fn com #[carmy::tool] vira uma tool. Os JSON Schemas de entrada e saída são derivados dos seus tipos, então os agentes a descobrem sem ler documentação.

Efeitos explícitos

Toda tool declara none, read, write, external_write ou destructive. Tools destrutivas exigem uma confirmação confiável antes de rodar.

Retries seguros

Agentes repetem chamadas depois de timeouts. Um request_id repetido devolve o resultado já registrado. O efeito colateral nunca roda duas vezes.

Erros para máquinas

Os erros trazem um código estável, uma categoria, recoverable, retryable, retry_after e uma suggested_action, e não apenas “Algo deu errado”.

Streaming e cancelamento

Um stream de eventos do runtime (servido como SSE via HTTP), prazos de execução e cancelamento propagado a partir de desconexões do cliente e do MCP.

Um runtime, vários transportes

HTTP e MCP são adaptadores finos sobre o mesmo runtime e o mesmo código das tools. O core não conhece nenhum dos dois.