Unterm

Unterm의 모든 기능

전체 목록: 모든 제어 표면, 모든 기능, 그리고 왜 이렇게 만들었는지.

고급 가이드 읽기 →

60초 만에 보는 Unterm

소스에서 직접 확인할 수 있는 사양 · 릴리스마다 갱신
최신 버전
v0.71.18 · 2026-10-04 · MIT
번들 AI 에이전트
서명된 매니페스트 7개 — Claude Code · Codex CLI · Gemini CLI · OpenCode · Aider · Kimi Code CLI · Trae Agent. unterm.app/api/agents/manifests에서 받는 Ed25519 검증 엔벨로프, 에이전트별 인증 방식 선택.
가격
영원히 $0 · 유료 등급 없음 · 구독 없음 · 인앱 결제 없음
플랫폼
macOS(유니버설) · Linux x86_64 + arm64(.deb + AppImage) · Windows 10/11 x64 + arm64(.msi + 포터블 .zip) — 릴리스당 9개 패키지
설치 파일 크기
DMG 50 MB · .deb 27 MB · AppImage 43 MB · MSI 43 MB(x86_64 / x64)
유휴 시 메모리
상주 메모리 ~110 MB · 열린 페인 수에 비례해 증가
UI 언어
9개 — en · 简体 · 繁體 · 日本語 · 한국어 · Deutsch · Français · Italiano · हिन्दी
컨트롤 표면
MCP(TCP 위의 JSON-RPC) · HTTP 웹 설정 · unterm-cli · GUI — 네 가지 모두 같은 JSON 상태
테스트된 에이전트 통합
Claude Code · Cursor · Codex CLI · 사용자 정의 Python / Node MCP 클라이언트 — 모두 소켓 1개, 코드 ~30줄
데이터 수집
텔레메트리 0 · 계정 없음 · 분석 없음 · 모든 서버는 127.0.0.1에 바인딩
기술 스택
Rust · 네이티브 next-core 엔진 · wgpu · MCP(줄 단위 JSON-RPC) · 웹 설정은 Tailwind + Alpine
v0.18 · AI 에이전트 런처

모든 코딩 에이전트를 설치하세요. 각각 클릭 한 번. 설정 부담 없이.

AI 코딩 CLI를 두 개 이상 나란히 돌려 본 적이 있다면 그 부담을 알 겁니다: npm install, OAuth 흐름, API 키, ~/.config/<vendor>/<different format each>, 환경 변수, 프로필 분리. Unterm v0.18은 이것을 설정 탭 하나 + CLI 하나로 줄입니다. 다른 어떤 터미널도 이렇게 하지 않습니다.

Claude Code
Anthropic
OAuth · BYO key · gateway
Codex CLI
OpenAI
ChatGPT OAuth · BYO key · gateway
Gemini CLI
Google
Google OAuth · BYO key · Vertex
OpenCode
SST
BYO key · local
Aider
Open-source
BYO key · local
01 · one click

GUI 또는 CLI로 설치

에이전트 카드에서 Install을 클릭하거나 unterm-cli agent install <id>를 실행하세요. Unterm이 플랫폼에 맞는 명령(npm / pipx 등)을 실행하고, 바이너리가 PATH에 들어갔는지 확인한 뒤 자동으로 다시 감지합니다.

02 · subscription-safe

공식 구독이 우선. 자체 키는 선택 사항.

대부분의 에이전트는 공식 계정 또는 구독 로그인 경로(Claude Pro, ChatGPT Plus, Google AI Pro)를 제공합니다. Unterm은 그 방식을 기본으로 하며 — API 키를 몰래 주입하는 일은 절대 없습니다. 토큰당 과금이나 회사 게이트웨이가 실제로 필요할 때만 설정 양식에서 자체 키 사용 또는 사용자 정의 엔드포인트로 명시적으로 전환하세요.

03 · signed catalog

Ed25519 서명 매니페스트 카탈로그

에이전트 목록과 설치 명령은 Unterm에 하드코딩되어 있지 않습니다 — unterm.app/api/agents/manifests에서 제공되는 서명된 엔벨로프입니다. CDN이 탈취되어도 여러분의 머신에 curl | sh를 밀어 넣을 수 없습니다. 공개 키가 모든 Unterm 바이너리에 내장되어 있기 때문입니다.

AI가 터미널을 조종하고, MCP가 그것을 현실로 만듭니다.

대부분의 터미널은 AI를 바이너리 안에 넣습니다. Unterm은 반대로 갑니다. AI는 바깥에 두고, 터미널을 어떤 외부 에이전트든 MCP로 붙잡을 수 있는 표면으로 공개합니다. 터미널은 조종당하는 쪽이고, 에이전트는 일을 하는 쪽입니다.

대표 사례

한 AI가 터미널을 통해 다른 AI를 조종합니다.

바깥 에이전트가 터미널 세션을 소유합니다. cwd를 바꾸고, 페인에서 안쪽 코딩 에이전트를 실행하고, 로그를 읽으며, 저장소가 green이 될 때까지 반복합니다.

01
저장소 열기

바깥 에이전트가 활성 페인을 프로젝트 루트로 지정해, 모든 명령, 로그, 스크린샷이 같은 작업 디렉터리에 고정되게 합니다.

02
안쪽 에이전트 시작

분할 페인에서 코딩 에이전트를 띄우고 작업을 맡긴 뒤, 그 에이전트가 터미널 안에서 편집 루프를 돌게 합니다.

03
읽고, 재시도하고, 릴리스

바깥 에이전트가 테스트 출력과 페인 상태를 읽고 필요하면 재시도하며, 터미널이 작업 완료를 알릴 때에만 커밋이나 릴리스로 넘어갑니다.

outer agent → inner agent
demo
→ open /work/auth-service in a new tab and start a coding agent
unterm session.create { cwd: "/work/auth-service" }
→ { session_id: "7", pid: 41208 }
unterm exec.run { id: "7", command: "claude" }
→ inner agent ready
unterm exec.run { id: "7", command: "cargo test" }
running 142 tests
test result: ok. 142 passed; 0 failed
unterm screen.scrollback_text { id: "7" }
→ { text: "…build is green, commit the fix", row_count: 142 }
$
zsh · ~/work/auth-service · 80×24 · mcp:4

Unterm을 쓰는 세 가지 방법

한 가지 워크플로만을 위해 만들지 않았습니다. MCP 표면 덕분에 누구든 서로 다른 입구로 같은 컨트롤 플레인을 씁니다.

🤖
AI 엔지니어

Claude Code, Cursor 또는 직접 만든 에이전트로 여러 터미널 pane을 조종하세요. pane 하나에 작업 하나, 어디에 입력할지는 에이전트가 고릅니다. 멀티 인스턴스 NATO 이름(alpha, bravo, charlie…) 덕분에 창을 넘나드는 라우팅도 간단합니다.

  • 디렉터/워커 패턴: 바깥 에이전트가 pane 안의 에이전트를 감독
  • 장시간 감시: 빌드를 시작하고, 유휴 상태가 될 때까지 폴링한 뒤 다음 단계 결정
  • 멀티 pane 오케스트레이션: 여러 프로젝트에 작업을 나누고 결과를 모음
  • 리뷰와 파인튜닝을 위한 토큰 가림 녹화
⚙️
DevOps와 SRE

GUI에서 할 수 있는 모든 일을 cron에서도 쓰기 좋은 CLI로 할 수 있습니다. unterm-cli는 모든 릴리스에 포함되며, 원시 JSON-RPC가 필요한 곳이면 어디든 --json으로 넘길 수 있습니다. 운영 스크립트, 대시보드, 런북이 같은 표면을 씁니다.

  • 프록시 자동 감지: macOS scutil / Windows 레지스트리 / GNOME gsettings
  • 장애 문서용 헤드리스 스크린샷과 pane 읽기
  • 녹화 → markdown으로 런북 생성, 개인정보는 기본으로 가림
  • 텔레메트리 없음, 로그인 없음, 모든 서버는 127.0.0.1에 바인딩
🔧
파워 유저와 오픈소스 해커

MIT 라이선스, v0.61부터 자체 next-core 커널(약 1.2만 줄, 직접 의존성 10개) 위에서 동작하며 에이전트 통합을 기본으로 갖췄습니다. GitHub에서 패치를 받습니다. 직접 빌드할 수 있고, CLI 바이너리는 모든 릴리스에 포함됩니다. 웹 설정 UI는 Tailwind + Alpine SPA라서 페이지를 fork해 색만 바꾸면 됩니다.

  • macOS용 arm64 + x86_64 유니버설 바이너리, Developer ID로 서명
  • Linux .deb(apt)와 AppImage(모든 배포판)
  • Windows용 WiX 6 MSI + 포터블 .zip
  • 9개 언어 기본 제공, 시스템 로캘 자동 감지

네 가지 컨트롤 표면, 하나의 엔진

모든 Unterm 창은 로컬 MCP 서버와 HTTP 설정 서버를 시작합니다. 어느 쪽에서든 같은 JSON 상태를 읽고 쓸 수 있습니다.

🔌
MCP 서버

127.0.0.1:19876의 줄 단위 JSON-RPC, 인증 토큰 필요. 셸 실행, pane 상태 읽기, 스크린샷, 세션 제어.

⚡
unterm-cli

어떤 셸, cron 작업, 스크립트에서도 같은 표면을 씁니다. 로컬 MCP 위의 얇은 JSON-RPC 클라이언트라 비즈니스 로직이 중복되지 않습니다.

🖥️
웹 설정

셀 그리드가 아닌 브라우저에서 쓰는 현대적인 설정 UI. 127.0.0.1:19877의 Tailwind + Alpine SPA. 테마, 프록시, 녹화, 언어.

🌍
9개 언어

en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी 기본 제공. 시스템 로캘 자동 감지.

🎬
세션 녹화

OSC 133 블록 단위로 나뉜 markdown, 가림 처리 내장. 녹화 파일은 <cwd>/.unterm/sessions/에 저장됩니다.

📸
영역 스크린샷

상태 표시줄에서 클릭 한 번으로 영역 캡처. PNG는 디스크로, 이미지는 클립보드로, 경로는 텍스트 클립보드로.

🌐
프록시 자동 감지

macOS / Windows / GNOME / 환경 변수 설정을 자동 감지하고, 수동 HTTP/SOCKS 재정의, 이름 있는 노드, 로테이션, Clash/mihomo 컨트롤러를 지원합니다.

⚙️
GPU 렌더링

Unterm 고유의 next-core 터미널 엔진 위에 만들었고, 크로스 플랫폼 wgpu로 렌더링합니다.

완전한 컨트롤 표면

스크린샷 투어가 아닙니다 — 모든 에이전트와 스크립트가 실제로 호출하는 표면입니다. 30개 네임스페이스에 걸친 152개 MCP 메서드와 34개 CLI 명령, 모두 같은 JSON을 반환합니다.

152
MCP 메서드
30
네임스페이스
34
CLI 명령
4
컨트롤 표면
22ms
시작 → MCP 응답
~12k
커널 소스 라인
🛩️ 에이전트 콕핏
cockpit · fleet.* · review.* · 11

모든 CLI 에이전트의 실시간 상태(작업 중 / 대기 / 유휴)를 한눈에 보고, 인박스에서 당신을 필요로 하는 에이전트로 바로 이동하고, 격리된 git worktree에서 하나의 작업에 N개의 에이전트 플릿을 띄우고, 그 결과물을 리뷰·머지·롤백하세요 — GUI, MCP, CLI 어디서든.

agent.status · cockpit.inbox · fleet.launch · fleet.retry · review.verify · review.diff · review.merge · review.rollback
🪟 세션 & 페인
session.* · 27

터미널 바깥에서 페인을 생성, 분할, 포커스, 크기 조절, 종료합니다. 어떤 페인에든 한 글자씩 입력하고, cwd를 읽고, 유휴 상태가 될 때까지 폴링합니다 — 키 입력 시뮬레이션 없이.

create · split · focus · resize · input · destroy · history · idle · cwd
👁️ 화면 읽기
screen.* · 8

실시간 뷰포트 텍스트, 하나의 문자열로 된 전체 스크롤백, 커서 위치를 가져오거나 정규식으로 검색합니다. detect_errors는 실패한 명령을 표시해 에이전트가 대응할 수 있게 합니다.

text · scrollback_text · search · cursor · detect_errors · scroll
▶️ 명령 실행
exec.* · 5

명령을 실행해 출력을 스트리밍하거나, 실행 후 종료 코드를 기다리거나, 원시 바이트를 보내거나, 상태를 조회하거나, 취소하거나, POSIX 시그널을 전달합니다 — 화면 스크래핑이 아닌 구조화된 결과로.

run · run_wait · send · status · cancel · signal.send
🤖 AI 에이전트 런처
agent · 7 CLIs

Claude Code / Codex / Gemini / OpenCode / Aider를 설치, 인증, 설정, 실행합니다. mcp-stdio 브리지가 각 에이전트를 이 터미널의 MCP 서버에 자동으로 연결합니다.

install · auth · launch · config · mcp-stdio bridge
🪪 아이덴티티 프로필
profile · 7 sniffers

창을 개발자 아이덴티티에 묶습니다 — GitHub PAT, AWS 키, npm 토큰, SSH 키, git 작성자. 자격 증명은 OS 보관소에 저장되고, 7개의 스니퍼가 기존 자격 증명을 읽기 전용으로 찾아냅니다.

list · current · create · switch · delete
🛰️ 다중 인스턴스
instance.* · 8

각 창은 NATO 이름을 가진 인스턴스(alpha, bravo, charlie…)입니다. 머신에서 실행 중인 모든 Unterm을 나열하고, 하나에 포커스하거나 제목을 바꿀 수 있습니다 — 에이전트는 cwd나 제목으로 창 사이에 작업을 배분합니다.

list · info · focus · set_title
🎬 세션 녹화
recording · markdown

어떤 페인이든 OSC 133 명령 블록으로 나뉜 Markdown으로 녹화합니다 — 각 블록에는 명령, 출력, 종료 코드, 소요 시간이 담기고 토큰은 가려집니다. 녹화는 MCP나 CLI로 나열, 읽기, 내보내기할 수 있습니다. 재생 기능은 없습니다: 예전의 asciicast record / replay 명령은 제거되었습니다.

recording_start · stop · status · list · read · export_markdown
📸 캡처 & 업로드
capture.* · 6 + upload

화면, 창, 사각형 영역을 스크린샷합니다(macOS와 Windows. Linux에서는 현재 “not implemented”를 반환). 모든 플랫폼에서 페인의 전체 스크롤백을 하나의 긴 PNG로 렌더링하고, macOS에서는 다른 앱 창을 긴 스크린샷으로 찍고, 클립보드를 읽거나, 파일을 내 Aliyun OSS / Tencent COS / Qiniu 버킷에 올려 공개 URL을 받습니다 — 모두 MCP로.

screen · window · select · clipboard · scrollback · window_scroll · upload.file
🌐 프록시 관리
proxy.* · 12

OS 프록시 상태를 읽고, 설정된 노드 간에 전환하고, 엔드포인트 지연 시간을 테스트하거나, 시스템 프록시 재정의를 적용 / 해제합니다(macOS scutil · Windows 레지스트리 · Linux 환경 변수) — URL 붙여넣기 없이.

status · switch · nodes · speedtest · configure · disable · env
🛡️ 거버넌스 & 감사
governance · 9

모든 에이전트 쓰기는 아이덴티티와 함께 기록되고, 쓰기 확인 정책이 첫 접촉을 통제합니다. 정책 결정을 테스트하고, 내장 자체 테스트 스위트를 실행하고, liveness/readiness 플래그를 읽을 수 있습니다.

audit_log · policy.check/set · agent.identify · selftest.run · server.health
💾 워크스페이스
workspace.* · 3

현재 창의 페인 / 탭 레이아웃 전체를 저장하고, 저장된 레이아웃을 나열하고, 하나를 복원합니다 — 에이전트가 작업 세트를 스냅샷으로 남겼다가 나중에 되살릴 수 있습니다.

save · restore · list
📖 자기 기술 표면
meta.surface

meta.surface는 모든 MCP 메서드(파라미터 스키마 포함), 모든 CLI 하위 명령, 모든 실시간 키 바인딩을 한 번의 호출로 반환합니다 — 방금 연결한 에이전트도 문서 없이 전체 API를 파악합니다.

reference · show-keys · settings · theme · lang

에이전트와 스크립트는 MCP(TCP 위의 JSON-RPC)와 unterm-cli 바이너리로 이 표면에 접근하고, 사람은 GUI와 웹 설정 페이지를 씁니다. 웹 설정의 HTTP API는 스크립트에서도 호출할 수 있습니다. 네 표면은 서로를 그대로 복제하지 않고 겹칩니다 — 예를 들어 테마, 언어, unterm.conf는 MCP에 없습니다. meta.surface(또는 unterm-cli reference)를 한 번 호출하면 모든 MCP 메서드, CLI 명령, 키 바인딩을 실시간으로 돌려받습니다.

Unterm이 돋보이는 지점

직접 grep하고, 빌드하고, 실행해 볼 수 있는 세 가지 주장. 마케팅 안개는 없습니다.

🤖 v0.18
모든 AI 코딩 CLI를 띄우는 터미널

v0.18부터 Unterm은 Claude Code, Codex CLI, Gemini CLI, OpenCode, Aider의 원클릭 런처입니다. 각 에이전트의 설치 명령, OAuth 흐름, API 키, 네이티브 설정 파일은 unterm.app에서 받는 서명된 매니페스트에 기술되어 있습니다. 런타임은 키를 OS 키체인에 넣고, 에이전트 고유의 JSON/TOML/YAML 설정을 작성하며(알 수 없는 필드는 보존), Unterm 자체를 MCP 서버로 에이전트에 노출하고, 세션을 감사 로그에 기록합니다 — 모두 CLI와 새 AI 에이전트 웹 설정 탭에서 다룰 수 있습니다.

🪟 v0.17
AI가 터미널 바깥에서 페인을 분할

MCP의 session.split + session.focus로 외부 에이전트(Claude Code, Cursor, 여러분의 스크립트)가 활성 창을 왼쪽 / 오른쪽 / 위 / 아래로 나누고 새 페인에 포커스를 넘깁니다 — 키 입력 시뮬레이션 없이. 히어로의 Python 스니펫에 들어 있습니다. 페인 구조를 이런 방식으로 외부 프로세스에 노출하는 터미널은 달리 없습니다.

👁️ v0.16
모든 에이전트 쓰기는 감사·취소·검토 가능

각 session.input / exec.send는 호출한 에이전트의 아이덴티티와 함께 기록됩니다. 새 에이전트의 첫 쓰기는 허용 / 차단 / 항상 허용 배너를 띄웁니다. 신뢰는 ~/.unterm/trusted_agents.json에 저장되며, 웹 설정 MCP 탭에서 클릭 한 번으로 취소할 수 있습니다. 상태 표시줄에는 실시간 MCP 쓰기 횟수가 표시됩니다.

사용 편의

쌓이면 커지는 작은 손길

매일 쓰는 도구를 위한 다듬기 — 어느 것도 대표 기능은 아니지만, 모이면 마찰을 없앱니다.

👻
페인 간 고스트 텍스트

Fish 스타일의 회색 예측이 모든 페인의 셸 기록을 바탕으로 입력을 이어 줍니다. → 또는 End로 수락합니다.

✨
session.suggest 바

에이전트는 PTY를 건드리지 않고 명령을 제안합니다 — 상태 표시줄 위에 표시되며, Tab은 수락, Alt+Enter는 수락 후 실행입니다.

📋
영역 스크린샷 → 클립보드

상태 표시줄에서 아무 사각형이나 드래그로 선택하면 PNG는 디스크에, 이미지는 클립보드에, 파일 경로는 텍스트로 — 한 번에 처리됩니다.

🎨
테마 + 탭별 CWD

번들 테마 7종. unterm-cli theme set midnight로 모든 창을 실시간으로 바꿉니다. 상태 표시줄에는 활성 페인의 $HOME 기준 cwd가 표시됩니다.

📁
macOS 네이티브 우클릭

Finder 우클릭 → Unterm에서 열기. AppleScript 서비스 확장을 사용하며, 앱 내 컨텍스트 메뉴는 없습니다.

🪪
상태 표시줄의 아이덴티티 칩

활성 아이덴티티 프로필(이 창에 묶인 GitHub PAT / AWS 키 / npm 토큰)이 상태 표시줄에 표시됩니다. 클릭하면 다음 프로필로 새로 엽니다.

🚦
설정 없는 프록시

macOS scutil / Windows 레지스트리 / GNOME gsettings / 환경 변수를 읽습니다. 토글 하나로 켜고 끕니다. URL 붙여넣기 없음.

🌐
OSC 133 블록 분할

녹화는 셸 프롬프트 경계에서 자동으로 나뉩니다. 각 블록에 명령, 출력, 종료 코드, 소요 시간이 담겨 검색할 수 있습니다.

v0.71.6 마우스 흐름

오른쪽 버튼은 붙여넣기. 복사는 선택이 합니다.

복사-붙여넣기 전체가 마우스 위에서 이뤄지지만, 두 절반은 서로 다른 동작에 있습니다. 선택을 놓는 순간 이미 클립보드에 들어가 있고, 오른쪽 버튼을 누르면 커서 위치에 붙여넣습니다 — 선택 여부와 상관없이 항상. 컨텍스트 메뉴는 절대 열리지 않으니 닫을 것도 없습니다.

🖱️
선택 — 이미 복사됨

출력 위를 드래그하거나 단어를 더블클릭하기만 하세요. 버튼을 떼는 순간 텍스트가 클립보드에 있습니다. 기억할 두 번째 동작도, 확인을 위해 누를 것도 없습니다.

📥
오른쪽 버튼 — 붙여넣기 완료

버튼 하나, 역할 하나. 선택이 있든 없든 프롬프트에 붙여넣습니다. 한 페인에서 복사하고, 다른 페인을 클릭하고, 오른쪽 버튼 — 명령 이동 완료, 키 입력 0번. 클립보드가 비어 있으면 조용히 아무 일도 하지 않으며, 오류가 나지 않습니다.

⌃
Ctrl+클릭, macOS 방식대로

macOS는 Ctrl+클릭을 보조 클릭으로 취급하고, Unterm도 마찬가지입니다 — 트랙패드, Magic Mouse, 서드파티 드라이버 모두. 단독 Ctrl만 해당되므로 직접 만든 Ctrl 조합 마우스 바인딩과 Ctrl+Shift 창 드래그는 그대로입니다. macOS는 이 한 번의 동작을 두 개의 이벤트로 보내지만, Unterm은 한 번만 처리합니다. vim이나 Claude Code처럼 마우스를 인식하는 TUI도 똑같이 동작합니다.

v0.71.6에서 변경되었습니다. 예전에는 선택이 있으면 오른쪽 버튼이 복사를 했습니다 — 선택이 이미 한 일을 반복하느라, 정작 의도한 붙여넣기를 놓쳤습니다.

since v0.55 에이전트 콕핏

이제 터미널이 그 안에서 돌아가는 에이전트를 봅니다

Claude Code, Codex, Gemini, Aider — 모든 pane이 누가 작업 중인지, 누가 당신을 기다리며 막혀 있는지, 무엇을 바꿨는지 보고합니다. 설정 없이 바로 시작하고, 명령 한 줄이면 hook 수준의 정밀 보고로 올라갑니다.

에이전트 받은 편지함: Codex 승인 대기, Claude 완료, Claude 작업 중
🛰️ 모든 탭의 실시간 상태

공식 hooks, 타이틀/OSC 파싱, 프로세스 감지, 화면 휴리스틱 — 네 겹의 신호가 pane마다 하나의 상태로 접힙니다: 작업 중(숨 쉬는 파랑), 응답 대기(호박색), 완료, 유휴. 상단 바는 모든 창을 집계하고, 무언가가 당신을 기다리는 순간 호박색으로 바뀝니다.

📥 에이전트 인박스

Ctrl+Shift+A: 모든 창의 모든 에이전트를 대기 중 우선으로 정렬해, 얼마나 오래 무엇에 막혀 있는지 보여줍니다. Enter를 누르면 해당 pane으로 바로 이동. “가서 y 좀 눌러주기”가 이제 키 두 번이면 끝납니다.

🚀 플릿: 하나의 작업, N개의 에이전트

claude × 2 + codex에게 같은 작업을 경쟁시키세요 — 각 멤버는 저장소 옆 자기만의 git worktree와 브랜치, 자기 탭, 자기 상태 배지를 가집니다. 당신의 작업 사본은 절대 건드리지 않습니다.

🔍 리뷰: 어떤 변경도 놓치지 않습니다

에이전트가 작업을 시작하는 순간 Unterm이 저장소 체크포인트를 만듭니다(dangling 커밋 — HEAD, 인덱스, 파일은 그대로). 에이전트가 새로 만든 파일까지 포함한 라인 단위 diff, 스테이징 상태로의 squash 머지(커밋은 여전히 당신 몫), 어느 체크포인트로든 롤백, 멤버 결과의 나란히 비교까지.

🔌 다른 모든 것처럼, 완전히 스크립트 가능

콕핏 자체가 MCP + CLI입니다: agent.status, cockpit.inbox, fleet.launch, review.merge… 오케스트레이션 에이전트가 사람 없이도 플릿을 띄우고 diff를 리뷰할 수 있습니다. 로컬 우선 — 이 모든 것이 클라우드를 거치지 않습니다.

에이전트 콕핏 문서 읽기 →

v0.71의 새로운 기능

그래픽 드라이버가 없는 머신에서도 열리는 터미널, 587 ms 대신 31 ms에 열리는 두 번째 창, 열었던 창보다 오래 사는 셸, 마침내 텍스트로 복사되는 CJK — 최근 여덟 개 릴리스를 일곱 장의 카드로.

v0.71.18 터미널에서 바로 이미지 표시

Unterm이 이제 인라인 이미지를 그립니다. kitty 그래픽 프로토콜, iTerm2 인라인 이미지, sixel을 지원하므로 chafa, img2sixel, viu, timg, unterm-cli imgcat가 이미지 자체를 보여 줍니다. 이미지는 옆의 텍스트와 함께 스크롤되고, 스크롤백에 남으며, 창 가장자리에서 깔끔하게 잘리고, 그려진 화면(대체 화면 포함)에만 속합니다. 셀 크기를 픽셀로 묻는 프로그램은 실제 값을 받습니다. 에이전트는 screen.images로 목록을 볼 수 있습니다. 또한 설정의 [platform.*] 섹션이 적용되고, close_confirmation이 동작하며, 효과 없는 설정은 이유와 함께 알려 줍니다.

v0.71.17 스스로 업데이트하고, 명령이 어떻게 끝났는지 압니다

원클릭 업데이트: unterm-cli update, 명령 팔레트의 「업데이트 설치」, Web 설정의 버튼이 새 릴리스를 내려받아 SHA-256(macOS는 서명도)을 확인하고 새 버전으로 다시 시작합니다. 셸 통합이 자동으로 로드되어(zsh·bash·fish·PowerShell) 실패한 명령의 탭에 ▲가 붙고, 출력에 「error」가 있을 뿐인 경우에는 붙지 않습니다. 에이전트가 터미널에 기대하는 것도 갖췄습니다: Shift+Enter와 Enter 구분(kitty 키보드 프로토콜), 테마에 맞춘 색상 질의 응답, 탭 아래 진행 막대(OSC 9;4), 찢어지지 않는 전체 화면 다시 그리기(mode 2026). 또한 Windows 셸 메뉴의 Git Bash와 각 WSL 배포판, 미리 채워진 GitHub issue를 여는 충돌 대화상자, Homebrew·Scoop 설치.

v0.71 그래픽 드라이버가 없는 머신에서도 터미널이 열립니다

시작 과정은 하드웨어 경로만 시도하고 거기서 멈췄습니다. 쓸 만한 디스플레이 드라이버가 없는 Windows 머신 — VM, 깨끗한 이미지, 원격 세션 — 에서는 DX12가 어댑터는 찾아도 서피스를 구성하지 못했고, OpenGL은 찾을 드라이버가 없었으며, 터미널은 D3D12에 포함되어 드라이버가 전혀 필요 없는 WARP를 요청해 보지도 않은 채 “no working GPU path”로 시작을 거부했습니다. 이제 이 체인은 소프트웨어 경로로 끝납니다. 같은 릴리스에서: `unterm-cli start`는 이미 실행 중인 프로세스에 창을 넘기지 않고 두 번째 프로세스로 대체 실행할 때 그 사실을 알려 줍니다. 그 대체 실행은 두 번째 GPU 어댑터와 공유 Core를 대가로 치르기 때문입니다. 또한 provider 매니페스트는 이제 그것을 읽는 계약에 맞춰 검증됩니다.

v0.68 하나의 프로세스, N개의 창 — 두 번째 창은 31 ms에 열립니다

예전에는 두 번째 창이 곧 두 번째 Unterm이었습니다: GPU 어댑터 하나 더, Core 연결 하나 더, 587 ms의 대기. 이제는 이미 실행 중인 프로세스 안에서 31 ms에 열립니다. 창에는 id가 있어 `instance.new_window`는 방금 만든 창을 응답하고 `instance.focus`는 그것을 받습니다. 세션은 정확히 하나의 창에 속하며, 창을 닫으면 뷰만 닫히고 셸은 남은 창을 위해 Core에 남습니다. 정말 종료할 것인지는 마지막 창만 묻습니다.

v0.68 에이전트에게 소리치는 대신, 에이전트를 호스팅하는 터미널

이제 기능은 리스 뒤에 있습니다: 에이전트는 리스를 획득해 여러분이 볼 수 있는 키 아래에서 사용하고, 여러분이 취소하면 잃습니다 — 모든 호출자가 같은 무제한 소켓을 쥐고 있는 대신. 승인은 답할 수 있는 질문이 되었고, 질문은 그것을 구현하는 메서드가 아니라 곧 일어날 일을 명시합니다. 플릿은 JSON 파일이 아닌 영속 저장소에 보관되므로, 실행 도중 크래시가 나도 어느 멤버가 무엇을 하고 있었는지 잃지 않습니다.

v0.66 창은 닫고, 셸은 유지

“백그라운드에서 계속 실행”이 이제 화면에 흔적을 남깁니다 — 세 플랫폼 모두에서 트레이 표시기가 아직 살아 있는 세션 수를 알려 주고, 클릭 한 번으로 주차된 창을 되돌립니다. 에이전트도 MCP로 같은 일을 할 수 있습니다: `instance.focus`는 주차된 창에서 실패하지 않고 그 창을 깨웁니다. 두 닫기 버튼이 더 이상 셸에 대해 서로 다르게 동작하지 않습니다 — 그래서 어느 버튼을 눌렀느냐에 따라 “닫기”가 두 가지 의미를 갖던 문제가 사라졌습니다.

v0.64 복사도, 선택도, 입력도 한 글자로 처리되는 CJK

GUI가 셸에 설정된 적 없는 로캘을 넘기면 CJK 입력이 `<009d>` 같은 바이트 찌꺼기로 깨지곤 했습니다. 복사한 텍스트에는 글자 대신 그리드의 스페이서 셀이 들어가, 붙여넣으면 구멍이 뚫려 있었습니다. 더블클릭은 단어의 절반만 선택하고 나머지 절반을 잃었습니다. 이제 와이드 문자는 한 글자입니다 — 선택에서도, 클립보드에서도, 입력에서도. 그리고 다시 그리기 폭주도 끝났습니다: 프레임을 잘못된 방식으로 비교하는 바람에 무엇이 움직였든 아니든 다시 그리고 있었습니다.

v0.63 세션은 하나의 프로세스가 소유하고 — 설치판에 마침내 전부 담겼습니다

unterm-core가 세션을 소유합니다. 사용자별 프로세스가 shell·스크롤백·분할 레이아웃을 보관하고 MCP 서피스 전체를 제공하며 창에서 창으로 이어 줍니다(v0.62). 마지막 창을 종료하면 Core도 함께 끝납니다 — 그 창을 트레이에 두었거나 Core를 --headless로 시작한 경우는 예외입니다. v0.63은 설치판이 마땅히 받아야 했던 릴리스입니다: core 데몬이 9종 패키지 모두에 실제로 포함되고, 설정 페이지가 Core 모드에서 동작하며, 이모지가 처음으로 렌더링되고(번들 폰트는 FreeType이 그릴 수 없는 COLRv1이었습니다), 일시정지 후 타이핑 지연이 96ms에서 8ms로, macOS는 새 마크를 달고, 탐색기 우클릭에 “Open in Unterm tab”이 추가되었습니다.

v0.61 자체 커널: 실행 22ms 만에 라이브 컨트롤 표면

Unterm은 더 이상 WezTerm 포크 위에서 동작하지 않습니다. next-core는 이 제품을 위해 새로 작성한 터미널 커널입니다 — 파서, 스크린 모델, PTY 런타임, 폰트 스택, wgpu 렌더러 — 약 12k 소스 라인과 10개의 직접 의존성이라는 예산 안에서. 실행부터 라이브 MCP 표면까지 22ms(이전 7.1s), 유휴 시 코어의 6.6%(이전 80%), 20만 라인 처리량은 동일. 이전 커널과의 기능 패리티는 159개 요구사항 장부에 대해 항목별로 닫았고, 타이포그래피는 플랫폼 네이티브로: macOS의 진짜 신호등 버튼, pt 단위로 정확한 크기, 그리고 마침내 제대로 렌더링되는 CJK. 자세한 이야기는 블로그에서.

View all releases on GitHub →

여섯 가지 원칙, 예외 없음

01
로컬 우선, 클라우드 없음

모든 서버, 모든 API 엔드포인트, 모든 녹화는 127.0.0.1에 있습니다. 로그인도, 텔레메트리도, 구독도 없습니다. 셸 기록은 여러분의 것입니다.

02
AI는 터미널 바깥에 있다

채팅 오버레이도, 인라인 AI 패널도, 내장 모델도 없습니다. 터미널은 다뤄지는 표면입니다 — Claude Code, Cursor, 여러분의 스크립트가 MCP로 붙잡습니다. 유일한 예측은 셸 프롬프트에서 여러분 자신의 기록으로 만든 회색 고스트 텍스트이며, Claude Code 같은 에이전트가 실행 중인 pane에는 나타나지 않습니다.

03
MCP는 일급 표면이다

에이전트를 위한 기능은 MCP 메서드와 CLI 명령을 함께 갖추고 출시됩니다. 예외는 의도된 것입니다: 테마, 언어, 설정 파일은 여러분 손에 남습니다 — 웹 설정, <code class="font-mono text-xs">unterm-cli</code>, <code class="font-mono text-xs">unterm.conf</code> — 그래서 어떤 에이전트도 세션 도중에 터미널 모양을 바꾸지 않습니다.

04
크로스 플랫폼 동등성이 곧 정확성이다

Windows에서는 되는데 macOS나 Linux에서는 안 되는 기능은 '아직 미지원'이 아니라 버그입니다. Mac, Linux, Windows는 함께 출시합니다.

05
꾸밈보다 덜어내기

OS가 할 일은 OS에 맡깁니다. AI 생성은 터미널 바깥에 두고, 핵심 동작은 로컬에 유지하며, macOS에서는 네이티브 Finder 통합을 사용합니다.

06
구독을 존중합니다. 기본은 OAuth.

Unterm으로 AI 에이전트를 설치하면 기본 인증 방식은 벤더의 공식 구독(OAuth) — 여러분의 Pro / Plus / Team 플랜입니다. 세션에 API 키를 몰래 주입하는 일은 절대 없습니다. 토큰당 과금은 설정 양식에서 인증 방식을 '자체 API 키 사용' 또는 '사용자 정의 엔드포인트'로 명시적으로 바꿨을 때만 발생합니다. 함정이 아니라 옵트인입니다.

터미널에 AI를 내장할 필요는 없습니다.
AI가 조종할 수 있어야 합니다.

이것이 Unterm과 Warp의 갈림길입니다 — 기능 차이가 아니라 방향의 차이.

수명의 불일치

터미널은 서른 해짜리 도구이고, AI 모델은 여섯 달짜리 부품입니다. AI를 터미널에 용접하면, 가장 오래 쓰는 도구가 가장 수명이 짧은 부품에 의해 규정됩니다 — 모델이 낡으면 터미널 전체가 함께 낡습니다.

에이전트는 이미 있습니다

Claude Code, Codex, Gemini CLI, Aider — 여러분은 이미 최강의 코딩 에이전트들을 쓰고 있고, 그들은 매달 더 좋아집니다. 터미널 안의 채팅 상자는 로그인할 코파일럿이 하나 더 늘어날 뿐이며, 결코 여러분이 실제로 선호하는 것이 되지 못합니다.

부족한 것은 두뇌가 아니라 손잡이

에이전트에게 부족한 것은 지능이 아니라 터미널을 붙잡을 손입니다. Unterm은 터미널을 MCP로 조종 가능한 표면으로 만듭니다: 페인 생성, 명령 실행, 화면 읽기, 스크롤 스크린샷, 설정 변경, 세션 녹화. 에이전트는 유리 너머로 지켜보는 대신, 여러분처럼 터미널을 사용합니다.

Warp의 답: AI를 터미널 안에 넣는다
  • 터미널 UI에 내장된 AI, 그들의 클라우드에 묶임 — 로그인, 구독, 할당량
  • 그들이 고른 모델, 그들의 일정에 맞춰 업그레이드
  • AI 핵심은 비공개이며, 여러분의 명령 컨텍스트가 그들의 서버를 거쳐 갑니다
Unterm의 답: 터미널을 AI에게 건넨다
  • 터미널은 MCP 표면 — 오늘의 에이전트든 내년의 에이전트든 꽂아서 조종합니다
  • 에이전트와 모델은 여러분이 고릅니다. Unterm은 결코 여러분을 가두지 않습니다
  • MIT, 완전한 오픈 소스. 모든 것이 127.0.0.1에 머뭅니다 — 로그인, 구독, 텔레메트리 없음

서른 해 뒤에도 여러분은 터미널을 쓰고 있을 겁니다. 그때 어떤 AI가 그것을 조종할지는 아무도 모릅니다 — 그래서 미래에도 유효한 터미널은 조종받도록 만들어진 터미널뿐입니다.

Unterm vs. 네이티브 터미널 vs. 유료 AI 터미널

네이티브 터미널(Terminal.app)은 이미 갖고 있는 기준선입니다. Warp는 유료 AI 터미널이고, iTerm2와 Ghostty는 무료 파워 터미널입니다. Unterm은 자기만의 길을 갑니다: 외부 에이전트가 바깥에서 붙잡을 수 있는 모든 것.

기능 Unterm Terminal.app Warp iTerm2 Ghostty
에이전트 우선 네이티브 유료 무료 무료
MCP로 외부에서 조종 가능 ✓ ✗ ✗ ✗ ✗
모든 동작을 스크립트로 쓸 수 있는 CLI ✓ ✗ ✗ Python API ✗
AI 코딩 에이전트 런처 내장 ✓ ×7 ✗ ✗ ✗ ✗
에이전트가 터미널 MCP에 자동 연결 ✓ ✗ ✗ ✗ ✗
에이전트 조종석 (받은 편지함 · 플릿 · 리뷰) ✓ ✗ ~ cloud ✗ ✗
아이덴티티 프로필(창별 자격 증명) ✓ ✗ ✗ ✗ ✗
다중 인스턴스 오케스트레이션 ✓ ✗ ✗ ✗ ✗
세션 녹화 → Markdown ✓ md ✗ ~ ✓ ✗
MCP에서 스크린샷 + 파일 업로드 ✓ (Linux ~) ✗ ✗ ~ ✗
선택하면 복사, 우클릭하면 붙여넣기 — 메뉴 없음 ✓ gesture menu menu menu menu
내장 프록시 관리 ✓ ✗ ✗ ✗ ✗
로컬 우선, 클라우드·로그인 없음 ✓ ✓ ✗ ✓ ✓
터미널에 내장된 AI ✗ 의도된 설계 ✗ ✓ (cloud) plugin ✗
GPU 렌더링 ✓ ✗ ✓ ✓ ✓
macOS + Linux + Windows ✓ ✗ ✓ macOS mac+Linux
오픈소스 클라이언트 ✓ MIT ✗ ✗ ✓ GPL ✓ MIT
네이티브 UI 언어 ✓ ×9 OS en en en
가격 $0 $0 부분 유료 $ $0 $0

✓ 예 · ✗ 아니요 · ~ 부분 지원 · ×N 개수. "AI 내장" 항목의 ✗ 의도된 설계가 핵심 주장입니다: Unterm은 AI를 바깥에 두고, 터미널을 AI가 붙잡는 표면으로 노출합니다.

2026-05 기준 공개 문서화된 기능을 반영합니다. Warp는 클로즈드 소스이며 클라우드 기반 무료 등급과 유료 Team/Pro 플랜이 있습니다. iTerm2는 Python 스크립팅 API와 선택형 AI 명령 플러그인을 제공하며, Ghostty는 아직 Windows 빌드가 없습니다. 정정은 GitHub에서 환영합니다.

자주 묻는 질문

Unterm은 무엇인가요?

MCP, HTTP, CLI 컨트롤 표면을 내장한 크로스 플랫폼 터미널 에뮬레이터입니다. 핵심 아이디어는 MCP로 조종 가능한 표면으로서의 터미널입니다. 터미널 안에 AI를 넣는 대신, 어떤 외부 AI 에이전트든 바깥에서 조종할 수 있게 합니다.

Claude Code가 내 승인을 기다리는 걸 어떻게 알 수 있나요?

Unterm은 모든 pane의 에이전트 상태를 추적합니다. Claude Code(또는 Codex, Gemini, Aider)가 확인을 기다리며 멈추면 해당 탭의 점이 호박색으로 바뀌고, 상단 바 칩이 개수와 함께 호박색이 되며, 그 에이전트는 에이전트 인박스(Ctrl+Shift+A) 맨 위로 올라옵니다 — Enter를 누르면 해당 pane으로 바로 이동합니다. Claude Code와 Gemini는 설정 없이 감지되며, “unterm-cli agent enable-hooks”로 hook 수준의 정밀 보고를 더할 수 있습니다.

여러 Claude Code 인스턴스를 충돌 없이 병렬로 돌릴 수 있나요?

네 — 그게 바로 플릿의 용도입니다. “unterm-cli fleet launch --agents claude,claude,codex -- 작업”을 실행하면 각 멤버가 저장소 옆 자기만의 git worktree와 브랜치를 받아, 서로를 밟을 수도, 당신의 작업 사본을 건드릴 수도 없습니다. 각 멤버는 실시간 상태 배지가 달린 자기 탭을 가지며, 리뷰 페이지에서 결과를 나란히 비교할 수 있습니다.

AI 코딩 에이전트가 바꾼 내용을 어떻게 리뷰하거나 되돌리나요?

에이전트가 저장소에서 작업을 시작하는 순간 Unterm이 체크포인트를 만듭니다 — HEAD, 인덱스, 파일을 전혀 건드리지 않는 dangling git 커밋입니다. 리뷰 페이지(웹 설정 안)는 에이전트가 새로 만든 파일까지 포함한 라인 단위 diff를 보여주고, 마음에 드는 결과를 스테이징된 변경으로 squash 머지하거나(커밋은 당신이 합니다), 버리거나, worktree를 어느 체크포인트로든 롤백할 수 있습니다.

Unterm은 어떤 AI 코딩 에이전트를 지원하나요?

런처에서 Claude Code, Codex CLI, Gemini CLI, OpenCode, Aider를 각각 클릭 한 번으로 설치하고 연결합니다. 콕핏의 상태 감지는 kimi, trae, cursor-agent도 기본으로 인식하며, 표준 터미널 신호(타이틀, OSC 9/777, BEL)를 내보내는 에이전트라면 무엇이든 기본 추적이 공짜로 붙습니다. 어떤 도구든 “unterm-cli agent signal”로 연동할 수 있습니다.

마우스만으로 복사·붙여넣기를 하려면?

선택하면 복사, 우클릭하면 붙여넣기입니다. 드래그나 더블클릭을 놓으면 텍스트는 이미 클립보드에 있습니다. 우클릭은 항상 커서 위치에 붙여넣습니다 — 선택이 있든 없든, 모든 페인에서, 마우스를 가져가는 프로그램(vim, htop, Claude Code)에서도 마찬가지입니다: Unterm은 우클릭을 그 프로그램에 넘기지 않고 직접 처리합니다. 그런 프로그램에서 선택하려면 Shift를 누른 채 드래그하세요. macOS에서는 단독 Ctrl+클릭도 우클릭으로 취급되며, 가운데 버튼으로도 붙여넣을 수 있습니다. 닫아야 할 컨텍스트 메뉴는 없고, 클립보드가 비어 있으면 조용히 아무 일도 하지 않습니다.

Claude Code, Cursor 같은 에이전트와는 어떻게 함께 쓰나요?

각 Unterm 창은 로컬 MCP 서버(TCP, JSON-RPC, 인증 토큰 필요)를 시작합니다. MCP 클라이언트를 127.0.0.1:<port>로 지정하세요 — 포트와 토큰은 실행 시 ~/.unterm/server.json에 기록됩니다. 에이전트는 셸 실행, 명령 실행, pane 상태 읽기, 스크린샷, 녹화 전환, Agent Cockpit(상태, 받은편지함, 플릿, 리뷰) 사용이 가능합니다. 테마, 언어, 설정은 의도적으로 MCP에 없습니다. 웹 설정, unterm-cli, 또는 unterm.conf에서 바꾸세요.

하나의 에이전트로 여러 Unterm 창을 조종하려면?

각 Unterm 프로세스는 NATO 음성 알파벳 이름(alpha, bravo, …)을 가진 하나의 인스턴스이며, ~/.unterm/instances/<name>.json에 기록됩니다. 아무 인스턴스에서나 instance.list를 호출해 목록을 얻고, cwd / 제목 / 시작 순서로 고른 뒤 그 인스턴스의 포트와 인증 토큰으로 연결합니다. ~/.unterm/active.json은 가장 최근에 살아 있는 인스턴스를 가리키므로 단일 인스턴스용 대체 경로로 쓸 수 있습니다.

Warp와는 무엇이 다른가요?

Warp는 AI를 닫힌 클라우드 오케스트레이터(Oz) 안에 넣었습니다 — Claude Code 같은 외부 도구는 바깥에서 Warp를 조종할 수 없습니다. Unterm은 세 번째 길을 택했습니다. AI는 터미널 바깥에 두고, 터미널 자체를 MCP로 조종 가능한 표면으로 공개해 어떤 에이전트든 붙잡을 수 있게 합니다. 클라우드도, 로그인도 없습니다.

내 데이터는 어디로 가나요?

외부 어디로도 가지 않습니다. MCP와 웹 설정 서버는 127.0.0.1에만 바인딩됩니다. 세션 녹화는 <project>/.unterm/sessions/에 저장되며 토큰 가림 처리가 내장되어 있습니다. 텔레메트리도, 분석도, 로그인도, 클라우드 왕복도 없습니다. 셸 기록은 여러분의 것입니다.

Unterm은 단 한 번이라도 외부로 신호를 보내나요?

텔레메트리, 분석, 크래시·설치 핑, 계정 모두 없습니다. Unterm이 스스로 보내는 요청은 두 가지뿐이며, 어느 것도 여러분에 관한 정보를 담지 않습니다: (1) 업데이트 확인 — 실행 약 20초 후, 이후 6시간마다 api.github.com/repos/zhitongblog/unterm/releases/latest에 보내는 단순 GET으로, 고정된 User-Agent(unterm-update-check)를 쓰고 식별자는 없습니다. 응답은 ~/.unterm/update_check.json에 캐시됩니다. (2) AI 에이전트 카탈로그 — unterm.app/api/agents/manifests로 보내는 GET으로, 웹 설정에서 AI 에이전트를 열거나 unterm-cli agent 명령을 실행할 때 전송되며, User-Agent의 Unterm 버전과 캐시 ETag만 보냅니다. 실패하면 앱에 내장된 서명 사본을 사용합니다. 두 요청 모두 아직 설정에서 끌 수 없습니다 — Unterm을 완전히 오프라인으로 써야 한다면 방화벽에서 이 두 호스트를 차단하세요. 그 밖의 트래픽은 모두 여러분이 시작한 것입니다: 다운로드, 내 버킷으로의 업로드, 내 프록시 노드에 대한 상태 확인, 그리고 셸이 하는 모든 일.

유료 버전이나 프리미엄 기능이 있나요?

없습니다. Unterm은 MIT 라이선스이며 하나의 바이너리에 모든 기능이 들어 있습니다. 구독도, Pro 버전도, 플러그인 마켓도, “창 분할은 유료” 같은 것도 없습니다. 프로젝트를 돕고 싶다면 푸터의 후원 링크가 유일한 부탁입니다.

설치 크기와 실행 시 용량은 얼마나 되나요?

macOS DMG ~50 MB · Linux .deb 27 MB · AppImage 43 MB · Windows MSI 43 MB. 창 하나를 연 유휴 상태에서 상주 메모리는 ~110 MB이며, 페인마다 선형으로 늘어납니다. 네이티브 next-core 엔진은 wgpu로 렌더링하며, 실행 비용은 보통 각 페인의 셸과 애플리케이션이 대부분을 차지합니다.

Unterm은 시스템 언어를 감지하나요?

네. 첫 실행 시 Unterm은 OS 로캘(macOS는 defaults, Linux는 $LANG, Windows는 레지스트리)을 읽어 번들된 9개 UI 언어 중 가장 가까운 것을 고릅니다. 웹 설정 → 언어에서 창별로 바꿀 수 있습니다. 번역은 unterm-services/src/i18n/locales/*.json에 있으며 — 패치를 환영합니다.

악성 에이전트가 내 저장소에서 rm -rf를 실행하는 것은 무엇이 막나요?

여러 겹의 관문이 있습니다. (1) MCP 서버는 127.0.0.1에서만 수신합니다 — 네트워크 접근이 없습니다. (2) 인증 토큰으로 보호됩니다. 토큰은 ~/.unterm/instances/<name>.json에 있으며, 이 파일을 읽을 권한이 없는 에이전트는 연결조차 할 수 없습니다. (3) 모든 요청은 일곱 가지 위험 등급 중 하나로 분류됩니다 — read, local_mutation, exec, external_side_effect, credential_access, financial, destructive. 읽기는 통과합니다. 로컬 변경과 명령 실행은 정책의 차단·허용 명령 패턴에 따라 확인 없이 통과합니다. external_side_effect 이상은 여러분의 승인을 기다리며, 자격 증명, 금전, 파괴적 작업에 대한 승인은 호출 한 번에만 유효합니다. (4) 셸에 입력하는 것은 exec로 간주되므로, 에이전트와 rm -rf 사이를 막는 것은 첫 쓰기 배너입니다: 새 에이전트가 처음 페인에 쓸 때 허용 / 차단 / 항상 허용이 표시되고, 감사 로그는 모든 쓰기 시도를 호출자의 아이덴티티와 함께 기록합니다. 신뢰는 웹 설정 MCP 탭에서 언제든 취소할 수 있습니다.

스크립트로는 어떻게 다루나요?

unterm-cli를 쓰세요: session list, proxy status, theme set midnight, session record start, screenshot. 어떤 하위 명령에든 --json을 붙이면 셸 파이프라인과 cron 작업에 알맞은 원시 JSON-RPC 출력을 얻습니다.

서명·공증된 빌드를 제공하는 플랫폼은?

macOS: arm64 + x86_64 유니버설 DMG, Developer ID로 서명하고 Apple 공증 및 스테이플 완료(Gatekeeper 경고 없음). Linux: Debian/Ubuntu용 .deb와 모든 배포판용 AppImage. Windows: WiX로 빌드한 MSI 설치 파일과 포터블 .zip. 모두 마이너 태그마다 GitHub Releases에 게시됩니다.

오픈소스인가요?

네 — MIT 라이선스입니다. 현재 GUI와 터미널 런타임은 Unterm의 네이티브 next-core 엔진을 사용하며, MCP, 웹 설정, 녹화, i18n, 릴리스 도구가 같은 저장소에 있습니다. 소스: github.com/zhitongblog/unterm.

어떻게 기여하나요?

GitHub에 issue나 PR을 올려 주세요. 버그, 기능 요청, 토론을 하나의 큐에서 관리합니다. 쌓인 수정은 마이너 릴리스로 묶습니다 — 패치 수준 버전은 CI 빌드를 실행하지 않습니다. 문서는 저장소의 /docs에 있습니다.