Skip to main content
El módulo PTY, o pseudoterminal, permite sesiones de terminal interactivas dentro del sandbox con comunicación bidireccional en tiempo real. Una sesión PTY admite streaming en tiempo real, entregando la salida del terminal continuamente mediante callbacks a medida que se produce, y proporciona entrada bidireccional, lo que permite enviar datos mientras la sesión aún se está ejecutando. También ofrece una experiencia de shell interactiva con comportamiento completo de terminal, incluidos colores ANSI y secuencias de escape, y admite persistencia de sesión, por lo que una sesión en ejecución puede desconectarse y volver a conectarse más tarde.

Crear una sesión PTY

Puedes usar sandbox.pty.create() para iniciar una shell bash interactiva.
El PTY inicia una shell bash interactiva con TERM=xterm-256color, por lo que los colores ANSI y las secuencias de escape funcionan como se espera.

Tiempo de espera

La configuración de tiempo de espera es configurable y determina cuánto tiempo permanece activa la sesión PTY. Puedes mantener una sesión PTY abierta indefinidamente configurando timeoutMs: 0 en JavaScript o timeout=0 en Python. La sesión usa un tiempo de espera de 60 segundos de forma predeterminada.

Enviar entrada al PTY

Puedes usar sendInput() en JavaScript o send_stdin() en Python para enviar datos al terminal. En JavaScript, sendInput() devuelve una Promise, y cualquier salida del terminal se entrega mediante el callback onData en lugar de devolverse directamente. En Python, send_stdin() se completa de forma síncrona, y cualquier salida del terminal se entrega mediante el callback on_pty pasado a wait().

Cambiar el tamaño del terminal

Puedes usar resize() para notificar al PTY cuando el usuario cambie el tamaño de la ventana del terminal. Los valores cols y rows representan las dimensiones del terminal en caracteres en lugar de píxeles.

Desconectar y volver a conectar

Una sesión PTY puede permanecer activa incluso después de que el cliente se desconecte. Puedes desconectarte de la sesión y volver a conectarte más tarde con un nuevo manejador de datos. Esto puede usarse para recuperarse de interrupciones de red, admitir acceso al terminal desde varios clientes y conservar el estado de la sesión entre reconexiones.

Terminar el PTY

Puedes usar kill() para terminar la sesión PTY.

Esperar a que el PTY finalice

Puedes usar wait() para bloquear hasta que la sesión de terminal termine, por ejemplo cuando el usuario escriba exit.

Terminal interactivo (similar a SSH)

Puedes usar la misma API sandbox.pty descrita anteriormente para crear un terminal completamente interactivo como SSH, gestionando raw mode, el reenvío de stdin y los eventos de cambio de tamaño del terminal.
Última modificación el 10 de agosto de 2026