Skip to main content
O módulo PTY, ou pseudo-terminal, permite sessões de terminal interativas dentro do sandbox com comunicação bidirecional em tempo real. Uma sessão PTY oferece suporte a streaming em tempo real, entregando continuamente a saída do terminal por meio de callbacks à medida que ela é produzida, e fornece entrada bidirecional, permitindo que dados sejam enviados enquanto a sessão ainda está em execução. Ela também oferece uma experiência de shell interativo com comportamento completo de terminal, incluindo cores ANSI e sequências de escape, além de oferecer suporte à persistência de sessão, de modo que uma sessão em execução possa ser desconectada e reconectada posteriormente.

Criar uma sessão PTY

Você pode usar sandbox.pty.create() para iniciar um shell bash interativo.
O PTY inicia um shell bash interativo com TERM=xterm-256color, portanto cores ANSI e sequências de escape funcionam conforme esperado.

Timeout

A configuração de timeout é configurável e determina por quanto tempo a sessão PTY permanece ativa. Você pode manter uma sessão PTY aberta indefinidamente definindo timeoutMs: 0 em JavaScript ou timeout=0 em Python. Por padrão, a sessão usa um timeout de 60 segundos.

Enviar entrada para o PTY

Você pode usar sendInput() em JavaScript ou send_stdin() em Python para enviar dados ao terminal. Em JavaScript, sendInput() retorna uma Promise, e qualquer saída do terminal é entregue por meio do callback onData, em vez de ser retornada diretamente. Em Python, send_stdin() é concluído de forma síncrona, e qualquer saída do terminal é entregue por meio do callback on_pty passado para wait().

Redimensionar o terminal

Você pode usar resize() para notificar o PTY quando o usuário alterar o tamanho da janela do terminal. Os valores cols e rows representam as dimensões do terminal em caracteres, e não em pixels.

Desconectar e reconectar

Uma sessão PTY pode permanecer ativa mesmo depois que o cliente se desconecta. Você pode se desconectar da sessão e reconectar-se a ela novamente mais tarde com um novo manipulador de dados. Isso pode ser usado para se recuperar de interrupções de rede, oferecer suporte ao acesso ao terminal por vários clientes e preservar o estado da sessão entre reconexões.

Encerrar o PTY

Você pode usar kill() para encerrar a sessão PTY.

Aguardar o PTY sair

Você pode usar wait() para bloquear até que a sessão do terminal termine, por exemplo, quando o usuário digita exit.

Terminal interativo (semelhante a SSH)

Você pode usar a mesma API sandbox.pty descrita acima para criar um terminal totalmente interativo, como SSH, lidando com raw mode, encaminhamento de stdin e eventos de redimensionamento do terminal.
Última modificação em 10 de agosto de 2026