본문으로 건너뛰기

Butler Agent CLI

앱 없이 헤드리스 런타임을 설치하고 명령줄로 다룹니다.

Butler Agent CLI는 데스크톱 앱 없이 Butler 런타임을 설치하고 실행하는 명령줄 도구입니다. standalone Agent 아카이브에 들어 있으며, 서비스 시작과 중지, 설치 점검, 모델과 설정 관리, MCP 서버 실행을 명령으로 처리합니다.

Butler 앱을 쓴다면 CLI를 따로 설치하지 않아도 됩니다. 앱에 포함된 Agent는 앱이 직접 관리합니다.

지원 환경

  • Apple Silicon Mac(darwin-arm64) 전용입니다. Linux와 Intel Mac에서는 실행되지 않습니다.
  • 네이티브 Agent 아카이브(butler-agent-<버전>-darwin-arm64.tar.gz)를 게시한 릴리스가 필요합니다.

설치

아카이브는 버전마다 새 폴더에 풀어 쓰는 설치 패키지입니다. 실행 중에 바뀌는 데이터는 설치 폴더가 아니라 데이터 폴더(기본값 ~/.butler)에 저장합니다.

  1. GitHub Releases에서 네이티브 Agent 아카이브가 올라간 버전을 확인합니다.
  2. 아래 스크립트를 파일(예: install-butler-agent.sh)로 저장하고 VERSION을 그 버전으로 바꿉니다.
  3. bash install-butler-agent.sh로 실행합니다. 아카이브와 butler-<버전>-SHA256SUMS를 내려받아 체크섬을 확인한 뒤 새 버전 폴더에 풉니다.
  4. 마지막의 version과 doctor 명령이 오류 없이 끝나면 설치가 완료됩니다.
bash
set -euo pipefail
VERSION=0.0.21 # 네이티브 Agent 아카이브가 있는 릴리스 버전으로 바꿉니다.
ARCHIVE="butler-agent-${VERSION}-darwin-arm64.tar.gz"
RELEASE_URL="https://github.com/Hexpy-Games/butler/releases/download/v${VERSION}"
DOWNLOAD_DIR="$HOME/Downloads/butler-agent-${VERSION}"
INSTALL_ROOT="$HOME/.local/opt/butler-agent"
INSTALL_DIR="$INSTALL_ROOT/$VERSION"
export BUTLER_DATA="${BUTLER_DATA:-$HOME/.butler}"

mkdir -p "$DOWNLOAD_DIR" "$INSTALL_ROOT" "$BUTLER_DATA"
cd "$DOWNLOAD_DIR"
curl -fL --retry 3 -o "$ARCHIVE" "$RELEASE_URL/$ARCHIVE"
SUMS="butler-${VERSION}-SHA256SUMS"
curl -fL --retry 3 -o "$SUMS" "$RELEASE_URL/$SUMS"
EXPECTED_SHA256="$(awk -v name="$ARCHIVE" '$2 == name { print $1 }' "$SUMS")"
test "${#EXPECTED_SHA256}" -eq 64
printf '%s  %s\n' "$EXPECTED_SHA256" "$ARCHIVE" | shasum -a 256 -c -

if [ -e "$INSTALL_DIR" ]; then
  printf 'Installation already exists; choose a new version directory: %s\n' "$INSTALL_DIR" >&2
  exit 1
fi
mkdir "$INSTALL_DIR"
tar -xzf "$ARCHIVE" -C "$INSTALL_DIR"
"$INSTALL_DIR/butler" --data "$BUTLER_DATA" version --json
"$INSTALL_DIR/butler" --data "$BUTLER_DATA" doctor --check installation --json

설치 폴더에는 다음 파일이 들어 있습니다.

  • butler-agent: 실행 파일입니다.
  • butler: butler-agent를 가리키는 링크입니다. 이 문서의 명령은 butler로 적습니다.
  • resources/: 실행에 필요한 리소스입니다.
  • native-agent-manifest.json: 버전과 SHA-256 정보를 담은 설치 매니페스트입니다.

PATH에 추가하기 (선택)

전체 경로 없이 butler로 실행하려면 설치 폴더를 PATH에 추가합니다. 셸 설정 파일(~/.zshrc 등)에 넣으면 새 터미널에서도 적용됩니다.

bash
export PATH="$HOME/.local/opt/butler-agent/0.0.21:$PATH"
butler version

기본 사용법

데이터 폴더 지정

Agent 명령은 데이터 폴더 하나를 대상으로 실행합니다. 다음 순서로 먼저 찾은 값을 씁니다.

  1. --data PATH 옵션
  2. BUTLER_DATA 환경 변수
  3. ~/.butler
bash
butler --data ~/butler-test status
BUTLER_DATA=~/butler-test butler status

도움말과 명령 목록

bash
butler help
butler help mcp
butler commands --json

butler help <명령>은 해당 명령 아래의 하위 명령만 보여 줍니다. --help나 -h를 붙여도 같은 도움말이 나옵니다.

공통 옵션

옵션 설명
--data PATH 대상 데이터 폴더를 지정합니다.
--json 결과를 JSON으로 출력합니다. mcp serve를 제외한 명령에서 쓸 수 있습니다.
--quiet 사람이 읽는 출력을 생략합니다.

서비스 실행과 중지

명령 설명
butler start Agent 서비스를 백그라운드에서 시작합니다. 이미 실행 중이면 새로 띄우지 않고 실행 중인 서비스를 알려 줍니다. --dry-run을 붙이면 실제로 시작하지 않고 계획만 보여 줍니다.
butler stop 실행 중인 서비스를 중지합니다.
butler restart 서비스를 중지한 뒤 다시 시작합니다.
butler service run 서비스를 현재 터미널에서 실행합니다. 로 종료합니다.
butler status 서비스 상태를 확인합니다.
butler ps Agent가 관리하는 프로세스를 확인합니다.
bash
butler start
butler status
butler logs --lines 200
butler stop

로그 보기

butler start로 시작한 서비스의 출력은 데이터 폴더의 logs/butler-agent-service.stdout.log와 logs/butler-agent-service.stderr.log에 기록됩니다.

명령 설명
butler logs 최근 로그를 보여 줍니다. 기본 80줄이며 --lines N으로 최대 1,000줄까지 늘릴 수 있습니다.
butler logs --follow 새로 기록되는 로그를 계속 보여 줍니다.

설치 점검: doctor

butler doctor는 설치 파일과 데이터 폴더, 실행 중인 서비스를 읽기 전용으로 점검합니다. 문제를 고치지는 않습니다.

bash
butler doctor
butler doctor --check installation
butler doctor --check service --json

--check로 점검 범위를 한 가지만 고를 수 있습니다.

값 점검 내용
installation 실행 파일, 리소스, 버전, 무결성을 한 번에 점검합니다.
executable, resources, version, integrity 설치 항목을 하나씩 점검합니다.
data 데이터 폴더가 있는지 확인합니다. 폴더를 만들지는 않습니다.
service, owned_service 실행 중인 서비스의 기록과 프로세스가 일치하는지 확인합니다.

각 항목은 PASS, WARN, FAIL 중 하나로 표시됩니다. 모든 항목이 PASS이면 healthy와 종료 코드 0을, 하나라도 아니면 degraded와 종료 코드 1을 반환합니다.

서비스가 실행 중이 아니면 서비스 점검이 WARN이 되어 전체 결과가 degraded로 나옵니다. 설치만 확인하려면 --check installation을 씁니다.

모델과 인증

명령 설명
butler auth status 저장된 모델 인증 상태를 보여 줍니다. 비밀값은 가려서 표시합니다.
butler auth login 브라우저에서 OpenAI Codex 구독 OAuth 로그인을 진행합니다. 인증 결과는 http://localhost:1455/auth/callback으로 받습니다.
butler auth logout --yes 데이터 폴더의 로컬 인증 프로필을 삭제합니다. .env에 저장한 API 키는 건드리지 않습니다.
butler model status 현재 모델 설정을 보여 줍니다.
butler model list 내장 카탈로그의 OpenAI 모델을 openai/모델 형식으로 보여 줍니다.
butler model set PROVIDER/MODEL 기본 모델을 바꿉니다. 제공자/모델 형식으로 입력합니다.
bash
butler auth status
butler model list
butler model status

설정

설정은 데이터 폴더의 butler.config.json에 저장됩니다. 키는 점(.)으로 구분한 경로로 지정합니다.

명령 설명
butler config get KEY 값을 읽습니다. 비밀값 경로는 가려서 표시합니다.
butler config set KEY VALUE 값을 바꿉니다.
butler config edit EDITOR 환경 변수의 편집기로 파일을 엽니다. 지정하지 않았으면 vi를 씁니다.
butler config validate 설정 파일을 검증합니다.
bash
butler config get system.defaultModel
butler config validate

기타 명령

분류 명령
예약 작업 butler automation list, butler automation show ID, butler automation run ID, butler automation delete ID
스킬 butler skills list, butler skills inspect NAME, butler skills import PATH, butler skills validate PATH
외부 MCP 서버 등록 butler mcp list, butler mcp add, butler mcp enable ID, butler mcp disable ID, butler mcp delete ID --yes, butler mcp test ID
Butler를 MCP 서버로 실행 butler mcp serve
웹 검색과 읽기 butler search status, butler search test QUERY, butler web read URL
개인화 butler personalization show, butler personalization get KEY, butler personalization set KEY VALUE
기억 관리 butler cognition ... 아래의 고급 명령입니다. butler help cognition으로 목록을 확인합니다.

외부 MCP 서버는 옵션으로 등록합니다. 연결 방식(--transport)은 stdio, http, sse 중 하나이며 기본값은 stdio입니다.

bash
butler mcp add --id docs --transport http --url https://example.com/mcp
butler mcp test docs

데이터와 설정 위치

데이터 폴더(기본값 ~/.butler)에는 다음이 저장됩니다.

  • butler.config.json: 설정 파일입니다.
  • .env: API 키 같은 비밀값입니다.
  • auth/openai-codex.json: OAuth 로그인 프로필의 기본 위치입니다.
  • logs/: 서비스 로그입니다.

설치 폴더(예: ~/.local/opt/butler-agent/0.0.21)는 실행 중에 바뀌지 않습니다. 파일을 직접 수정하지 않습니다.

업데이트

Butler는 설치된 버전을 바꾸거나 데이터를 옮기지 않습니다. 새 버전은 이전 버전 옆에 따로 설치합니다.

  1. butler update --check로 새 버전이 있는지 확인합니다.
  2. 필요하면 butler update --dry-run으로 수행할 작업을 미리 봅니다.
  3. butler update --apply --yes를 실행하면 검증한 아카이브를 데이터 폴더에 내려받아 둡니다. 이 단계에서는 설치하지 않습니다.
  4. 위 설치 절차를 새 버전으로 반복해 새 버전 폴더에 설치합니다.
  5. 이후에는 새 버전 폴더의 butler를 실행합니다. 이전 설치 폴더는 그대로 두고, 같은 BUTLER_DATA를 계속 씁니다.

주의 사항

DATA 폴더 하나에는 서비스 하나만 실행됩니다

Butler 앱도 기본으로 ~/.butler를 씁니다. 같은 DATA 폴더를 쓰면 butler stop과 butler restart가 앱이 실행한 Agent를 멈출 수 있습니다. 앱과 CLI를 함께 쓸 때는 --data로 다른 폴더를 지정합니다.

데이터 폴더는 설치 폴더 안에 두거나 설치 폴더를 포함하는 위치로 지정할 수 없습니다. 이 경우 butler_data_overlaps_installation 오류가 납니다. --home 옵션은 지원하지 않으므로 --data를 씁니다.

관련 문서