v0.1.0 — Now Available

shuck

Make any interactive CLI non-interactive.

Wraps programs in a PTY, strips ANSI artifacts,
returns clean pipeable UTF-8 text. Zero config. Agent ready.

terminal
$ # Before: interactive CLIs can't be piped
$ claude "write hello world"  # opens TUI, can't pipe
$ # After: clean, pipeable output
$ shuck claude -- "write hello world" | pbcopy
$ shuck gh copilot suggest -- "find large files" > suggestions.txt
$ shuck --json python3 -c "print('hello')"
{"stdout":"hello\n","exit_code":0,"duration_ms":42}

One command to get started.

cargo install shuck

Requires Rust 1.70+. Install Rust →

brew install shuck

macOS and Linux via Homebrew.

curl -fsSL https://shuck.build/install.sh | sh

Works on Linux and macOS. Installs to /usr/local/bin.

npx shuck-cli <command>

Or install globally: npm install -g shuck-cli

pip install shuck-cli

Python wrapper around the native binary.

Built for the agent era.

Zero Config

No scripts. No learning curve. Just shuck <command> and get clean output instantly. Works with any interactive program.

Agent Ready

Structured JSON output with --json, conventional exit codes (124=timeout, 127=not-found), MCP server support.

Blazing Fast

Single-pass state machine ANSI stripping — O(n) with zero allocations. Written in Rust. The bottleneck is always the child process.

How shuck works.

shuck allocates a pseudo-terminal so the child process believes it's running interactively. All output passes through the VTE stripper before reaching your pipeline.

User Input
stdin / args
stdin
shuck
Rust — PTY master
VTE Stripper
PTY slave
Child Process
interactive CLI
Clean Output
stdout → pipe / file / agent

Platform Backends

🐧 Linux / macOS / BSD POSIX forkpty via nix crate
🪟 Windows 10+ ConPTY via Win32 API
🤖 CI / Serverless Plain pipes (auto-detected via $CI)

Why shuck?

Every existing tool solves one piece of the puzzle. shuck solves all of them.

Feature shuck ✦ expect unbuffer script empty
Allocates PTY
Strips ANSI sequences
Zero config / scripting
JSON structured output
Conventional exit codes ~ ~ ~
MCP server
Cross-platform (Win)
CI fallback (no PTY)
Single binary, no deps