Rust PTY wrapper

Claude Code, shaped for agent runtimes.

claude-e gives orchestrators a claude -p-style command while still driving the real interactive Claude Code runtime through a PTY.

npm install -g claude-e
claude-e "summarize this repo"
git diff --cached | claude-e \
  --output-format json \
  "summarize this staged diff"
claude-e --output-format stream-json \
  "audit src/" --verbose | jq .

One command surface for interactive Claude.

PTY-backed

Runs the interactive Claude Code path instead of pretending the CLI is a hidden API.

Structured output

Supports text, json, and stream-json while keeping wrapper diagnostics away from stdout.

Runtime contracts

Timeouts, prompt sanitization, resume metadata, and exit codes are documented and testable.

Compatibility without hiding the contract.

The short `claude-e` bin is primary, while `claude-exec`, `claude-i`, and `jaw-claude-i` remain intentional compatibility aliases for cli-jaw migration.

printf 'Say hello.\n' | claude-e run \
  --jsonl \
  --output-format stream-json \
  --idle-timeout-ms 600000 \
  --claude-bin "$(command -v claude)" \
  -- --model opus

Release checks are explicit.