npx noninteractive

Run interactive CLIs
without a human

Let AI agents complete setup wizards, OAuth flows, and interactive installers autonomously.

$ npx noninteractive copy
View source
~ / noninteractive
# start the WorkOS installer in a background PTY
npx noninteractive start workos
# read what's on screen
npx noninteractive read workos
◆ Run the AuthKit installer?
● Yes / ○ No
# send Enter to confirm
npx noninteractive send workos ""
# read the next prompt
npx noninteractive read workos
◆ You are on main. Create a feature branch?
● Create feat/add-workos-authkit
1

Spawn in a real PTY

start launches a detached daemon that runs your command inside a real pseudo-terminal. The child process sees isTTY=true — ANSI colors, select menus, and raw terminal mode all work.

2

Talk over a unix socket

The daemon listens on a socket at ~/.noninteractive/sessions/<name>.sock. No ports, no HTTP — just fast, local IPC with JSON messages.

3

Read, decide, send

The agent reads terminal output, decides what to type, and sends keystrokes. It completes the entire interactive flow autonomously — no human needed.

Real terminal emulation

Go-based PTY bridge allocates a real pseudo-terminal. Programs that check isTTY, render @clack/prompts menus, or use raw mode all work correctly.

Zero config

No native deps, no Python, no Docker. Just npx noninteractive and it works. Ships cross-compiled binaries for macOS and Linux.

Works with everything

WorkOS, Vercel, Supabase, Stripe — any CLI that uses interactive prompts. If it runs in a terminal, noninteractive can drive it.

Detached sessions

Sessions persist as background daemons. Start a flow, read it later, send input when ready. The process keeps running even if the agent disconnects.

Five commands. That's it.

start <name> Start a session — runs npx <name> in a background PTY
read <name> Read the current terminal output
send <name> <text> Send keystrokes to the session
stop <name> Stop a running session
list Show all active sessions

Why this matters

Every devtool has a getting-started flow. Most of them are interactive. If an AI agent can't navigate your setup wizard, it can't use your product.

As agents become first-class users of developer tools, the gap between "has a CLI" and "works with agents" is just a PTY bridge away. noninteractive closes that gap.