# node:tty

<!-- Generated from reports/manifest.json by `node ./scripts/api-docs.ts`.
     Do not edit this file. Run `pnpm run docs` to rebuild it.
     Node v26.7.0, commit 975a25d, 2026-08-27T21:51:46.116Z. -->

# `node:tty`

## Import

```js
import tty from "nstdlib/tty";
```

> [!NOTE]
> Only the API surface is available. No TTY: `isatty()` answers `false` for every descriptor, which is what the same call answers for a pipe in Node, and `ReadStream`/`WriteStream` throw `ERR_NSTDLIB_NO_BINDING` at construction.

## Runtime support

| Where it runs | Status | Export coverage | Details |
| ------------- | ------ | --------------- | ------- |
| **nstd** | ⚠️ some support | – | 0/3 of Node's own eligible tests pass under nstd. |
| **Browser** | ❔ not tested | 100% of Node.js | It imports with the small process shim. 3/3 Node.js exports are available. No module-specific behavior test ran. |
| **Node.js (host)** | ⚠️ some support | 100% of Node.js | 3/3 exports. |

## Exports (3 of 3)

Each cell shows what happens when code reads an export:

- ✅ Available through every import style. A named error also counts.
- ⚠️ Available through only some import styles.
- ❔ The export exists but has no value.
- ❌ The export does not exist.
- – This environment was not measured.

| Export | Node.js | nstdlib | browser |
| ------ | ------- | ------- | ------- |
| `ReadStream` | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> |
| `WriteStream` | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> |
| `isatty` | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> | <span title="Available" aria-label="Available">✅</span> |
