open-webui/open-terminal
A computer you can curl ⚡
Open Terminal – AI 에이전트용 원격 셸
개요 – Open Terminal은 Unix 계열 셸, 파일 브라우저, 코드 실행 기능을 간단한 REST API로 노출하는 자체 호스팅 서비스입니다. LLM 기반 어시스턴트(또는 모든 자동화 도구)가 명령을 보내고, 파일을 읽고/쓰고, 심지어 동일한 환경에서 Docker를 실행할 수 있게 해줍니다.
AI에 중요한 이유 – 대규모 언어 모델은 코드를 생성할 수 있지만, 해당 코드를 실행할 안전한 장소가 필요합니다. Open Terminal은 Open WebUI와 같은 AI UI에서 호출할 수 있는 샌드박스(Docker) 또는 직접(베어메탈) 실행 호스트를 제공하여 종단 간 "코드 작성-실행-검사" 루프를 가능하게 합니다.
주요 기능
- 두 가지 배포 모드 – Docker(격리된, 사전 설치된 도구 체인) 또는 Python 패키지(호스트에서 실행).
- 풍부한 도구 세트 – Python, Node.js, git, ffmpeg, LibreOffice, LaTeX, Docker CLI, 데이터 과학 라이브러리 등.
- 구성 가능한 이미지 변형 –
latest(전체),slim(430MB),230MB),alpine(openshift(제한된). - 런타임 패키지 설치 – 환경 변수(
OPEN_TERMINAL_PACKAGES,*_PIP_PACKAGES,*_NPM_PACKAGES)를 통해. - 다중 사용자 모드 – 단일 컨테이너 내에서 선택적 사용자별 Linux 계정(보안 경계는 아님).
- Docker 소켓 액세스 –
/var/run/docker.sock을 마운트하여 에이전트가 컨테이너를 빌드/실행할 수 있게 함(전체 호스트 제어, 주의해서 사용). - 파일 브라우저 루트 힌트 – UI가 셸 액세스를 제한하지 않고 친숙한 시작 디렉토리를 표시할 수 있음.
- 오피스 미리보기 – LibreOffice가 DOCX/PPTX를 즉시 PDF로 변환할 수 있음.
시작하는 방법
- Docker(권장)
서비스는docker run -d --name open-terminal -p 8000:8000 \ -v open-terminal:/home/user \ -e OPEN_TERMINAL_API_KEY=your-secret-key \ ghcr.io/open-webui/open-terminalhttp://localhost:8000에서 접근 가능하며 OpenAPI 문서는/docs에서 확인할 수 있습니다. - 베어메탈
(또는 설치 없이 일회성 실행을 위해pip install open-terminal open-terminal run --host 0.0.0.0 --port 8000 --api-key your-secret-keyuvx를 사용하세요.)
사용자 지정
- 세 개의
OPEN_TERMINAL_*_PACKAGES환경 변수를 통해 추가 apt/pip/npm 패키지를 추가하거나 제공된 Dockerfile에서 사용자 지정 Docker 이미지를 빌드하세요. - TOML 구성 파일(
~/.config/open-terminal/config.toml) 또는 환경 변수로 설정을 조정하세요. CLI 플래그가 모든 것을 덮어씁니다. - 프로덕션 다중 사용자 격리를 위해 별도의 Terminals 프로젝트(엔터프라이즈)가 사용자별 전용 컨테이너를 생성합니다.
통합 – Open Terminal은 Open WebUI에 직접 연결됩니다. UI에서 통합 → Open Terminal 아래에 터미널 URL과 API 키를 추가하세요. 그러면 UI에 파일 브라우저 사이드바가 표시되고 채팅에서 명령을 실행할 수 있습니다.
보안 참고 사항
- Docker 모드는 호스트를 격리합니다. 베어메탈은 사용자 권한으로 명령을 실행합니다.
- Docker 소켓을 마운트하면 컨테이너가 호스트에 대한 루트 수준 제어권을 갖게 됩니다.
- 내장 다중 사용자 모드는 단일 커널을 공유하며 신뢰할 수 있는 사용자에게만 안전합니다.
라이선스 – MIT.
모든 세부 사항은 저장소의 README에서 가져온 것이며 외부 가정은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트