remorses/tuistory

TMUX for agents. let agents control & test terminal user interfaces. Like Playwright & agent-browser but for TUIs

tuistory – “AI 에이전트를 위한 tmux”

그것은 무엇인가 – Node‑JS CLI(및 라이브러리)로 관리되는 PTY 세션 내에서 모든 터미널 명령을 실행합니다. 세션은 백그라운드에서 실행되며, AI 기반 에이전트가 검사, 대기, 입력, 스크린샷을 찍을 수 있고, 인간은 언제든지 같은 세션에 연결하여 에이전트가 보는 것을 정확히 볼 수 있습니다.

AI/ML에 중요한 이유 – 현재 LLM 기반 코딩 에이전트는 종종 개발 서버나 REPL을 시작한 다음 프로세스가 준비될 때까지 폴링하거나 슬립해야 합니다. tuistory는 이러한 에이전트에게 결정적이고 이벤트 기반의 제어를 제공합니다:

  • 로그 읽기 (tuistory read),
  • 특정 출력 대기 (tuistory wait "ready"),
  • 터미널 화면의 스냅샷 또는 스크린샷 캡처,
  • 프로세스에 타이핑 또는 키 입력,
  • 프로세스 재시작/종료 – 모두 즉시 반환되는 빠른 CLI 호출로 수행됩니다.

작동 방식

  1. tuistory -- <command>는 백그라운드 PTY에서 명령을 실행하고 세션 이름을 등록합니다 (cwd와 명령에서 자동 파생, 예: myapp-next-dev).
  2. 작은 데몬이 모든 세션을 메모리에 유지하고 CLI 도구와 에이전트가 PTY와 통신할 수 있도록 로컬 WebSocket 서버(127.0.0.1에 바인딩)를 노출합니다.
  3. 인간은 tuistory attach로 모든 세션에 연결할 수 있으며, tmux attach처럼 동작합니다 – 라이브 터미널을 보고, 상호작용하고, Ctrl+C를 두 번 눌러 분리할 수 있습니다.
  4. 에이전트는 동일한 CLI(또는 프로그래매틱 API)를 사용하여 출력 읽기, 패턴 대기, 입력, 키 누르기, 스크린샷 캡처 등을 수행합니다.

주요 CLI 명령어

명령어 목적
tuistory -- <cmd> 새 세션 시작 (이미 존재하면 다시 연결).
tuistory read -s <name> [--all] 마지막 읽기 이후의 새 stdout 반환 (또는 전체 버퍼).
tuistory wait -s <name> <pattern> 주어진 텍스트/정규식이 나타날 때까지 차단.
tuistory wait-idle -s <name> 터미널이 설정 가능한 지연 동안 조용해질 때까지 차단.
tuistory snapshot -s <name> [--trim] 현재 화면을 일반 텍스트로 가져오기.
tuistory screenshot -s <name> 화면을 PNG 이미지로 저장.
tuistory type -s <name> "text" 프로세스에 문자를 하나씩 입력.
tuistory press -s <name> <key> 키 또는 코드 전송 (예: ctrl c).
tuistory restart -s <name> 같은 세션에서 원래 명령을 재시작.
tuistory close -s <name> 프로세스를 종료하고 세션을 삭제.
tuistory attach -s <name> 인간 전용 대화형 연결 (tmux처럼).
tuistory sessions 활성 세션 목록 표시.

프로그래매틱 API – 동일한 기능이 TypeScript 라이브러리로 제공됩니다:

import { launchTerminal } from 'tuistory'
const sess = await launchTerminal({ command: 'claude', cols:150, rows:45 })
await sess.waitForText('Claude Code')
await sess.type('what is 2+2?')
await sess.press('enter')
const out = await sess.read()
sess.close()

API는 CLI를 반영합니다: type, press, text, read, waitForText, click, close 등.

LLM 기반 코딩 에이전트의 일반적인 워크플로우

# 1️⃣ 도구를 백그라운드 세션에서 시작 (예: 웹 개발 서버)
tuistory -s dev -- pnpm dev

# 2️⃣ 서버가 "ready"를 출력할 때까지 대기
tuistory -s dev wait "ready" --timeout 30000

# 3️⃣ 에이전트는 추가 작업을 실행할 수 있습니다 (예: 브라우저 열기, 테스트 실행 등)
# 4️⃣ 인간이 상황을 확인하려면:
#    $ tuistory attach -s dev

모든 단계는 에이전트에게 비차단적이며, 임의의 sleep 호출이 필요 없습니다.

설치

npm install -g tuistory   # 전역 CLI
# 또는 프로젝트 의존성으로
npm install tuistory

전체 옵션 목록은 tuistory --help를 실행하세요.

사용 대상

  • LLM 오케스트레이션 자동화 (예: Claude Code, Auto‑GPT 스타일 에이전트)를 개발하고 신뢰할 수 있는 터미널 상호작용이 필요한 개발자.
  • 플래키한 슬립 없이 대화형 CLI 도구(REPL, 디버거)를 스크립트화하려는 테스트 엔지니어.
  • 백그라운드 프로세스에 이미 tmux를 사용하지만 기계가 읽을 수 있는 인터페이스를 원하는 사람.

관련 프로젝트 – tuistory는 저자의 termcast(Raycast 스타일의 터미널 UI)와 kimaki(TUI를 제어하는 Discord 봇 에이전트)를 구동합니다.

라이선스 – MIT.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트