Skip to main content
The PTY, or pseudo-terminal, module enables interactive terminal sessions inside the sandbox with real-time, bidirectional communication. A PTY session supports real-time streaming, delivering terminal output continuously through callbacks as it is produced, and provides bidirectional input, allowing data to be sent while the session is still running. It also offers an interactive shell experience with full terminal behavior, including ANSI colors and escape sequences, and supports session persistence, so a running session can be detached and reconnected later.

Create a PTY session

You can use sandbox.pty.create() to start an interactive bash shell.
The PTY launches an interactive bash shell with TERM=xterm-256color, so ANSI colors and escape sequences work as expected.

Timeout

The timeout setting is configurable and determines how long the PTY session remains active. You can keep a PTY session open indefinitely by setting timeoutMs: 0 in JavaScript or timeout=0 in Python. The session uses a 60-second timeout by default.

Send input to PTY

You can use sendInput() in JavaScript or send_stdin() in Python to send data to the terminal. In JavaScript, sendInput() returns a Promise, and any terminal output is delivered through the onData callback rather than returned directly. In Python, send_stdin() completes synchronously, and any terminal output is delivered through the on_pty callback passed to wait().

Resize the terminal

You can use resize() to notify the PTY when the user changes the terminal window size. The cols and rows values represent the terminal dimensions in characters rather than pixels.

Disconnect and reconnect

A PTY session can remain active even after the client disconnects. You can detach from the session and reconnect to it again later with a new data handler. This can be used to recover from network interruptions, support terminal access from multiple clients, and preserve session state across reconnects.

Kill the PTY

You can use kill() to terminate the PTY session.

Wait for PTY to exit

You can use wait() to block until the terminal session ends, for example when the user types exit.

Interactive terminal (SSH-like)

You can use the same sandbox.pty API described above to create a fully interactive terminal such as SSH by handling raw mode, stdin forwarding, and terminal resize events.
Last modified on June 4, 2026