ScreenEnv: Deploy your full stack Desktop Agent
Quick Summary
ScreenEnv는 Docker 기반의 격리된 우분투 데스크톱과 직접 제어 API·MCP 연동을 제공해 GUI 에이전트의 개발, 테스트, 배포를 단순화하는 Python 라이브러리다.
🖼️ 인포그래픽

🖼️ 4컷 인포그래픽

💡 한 줄 요약
ScreenEnv는 Docker 기반의 격리된 우분투 데스크톱과 직접 제어 API·MCP 연동을 제공해 GUI 에이전트의 개발, 테스트, 배포를 단순화하는 Python 라이브러리다.
📌 핵심 요약
- ScreenEnv는 응용프로그램 실행, 마우스·키보드 조작, 창 관리, 파일 처리, 터미널 명령, 화면 녹화를 지원하는 완전한 가상 데스크톱을 Docker 컨테이너로 제공한다.
- 사용자는 세밀한 제어에 적합한 직접 Sandbox API와 AI 시스템 연동에 적합한 MCP 서버 방식 중 기존 아키텍처에 맞는 접근법을 선택할 수 있다.
- Docker 기반 환경은 격리성과 재현성을 제공하며 AMD64와 ARM64를 지원하고, 기본 Sandbox 객체는 한 줄의 초기화 코드로 생성할 수 있다.
- smolagents와 결합할 때는 모델을 선택한 뒤 DesktopAgentBase를 상속하고 클릭, 입력, 키 누르기, 파일·URL 열기, 응용프로그램 실행 등의 행동 도구를 정의해 맞춤형 데스크톱 에이전트를 구성한다.
- 현재 예시는 Linux 데스크톱을 중심으로 하며, 향후 Android·macOS·Windows 지원을 추가해 교차 플랫폼 자동화와 재현 가능한 벤치마크 환경으로 확장하는 것이 목표다.
🧩 주요 포인트
- ScreenEnv는 응용프로그램 실행, 마우스·키보드 조작, 창 관리, 파일 처리, 터미널 명령, 화면 녹화를 지원하는 완전한 가상 데스크톱을 Docker 컨테이너로 제공한다.
- 사용자는 세밀한 제어에 적합한 직접 Sandbox API와 AI 시스템 연동에 적합한 MCP 서버 방식 중 기존 아키텍처에 맞는 접근법을 선택할 수 있다.
- Docker 기반 환경은 격리성과 재현성을 제공하며 AMD64와 ARM64를 지원하고, 기본 Sandbox 객체는 한 줄의 초기화 코드로 생성할 수 있다.
- smolagents와 결합할 때는 모델을 선택한 뒤 DesktopAgentBase를 상속하고 클릭, 입력, 키 누르기, 파일·URL 열기, 응용프로그램 실행 등의 행동 도구를 정의해 맞춤형 데스크톱 에이전트를 구성한다.
- 현재 예시는 Linux 데스크톱을 중심으로 하며, 향후 Android·macOS·Windows 지원을 추가해 교차 플랫폼 자동화와 재현 가능한 벤치마크 환경으로 확장하는 것이 목표다.
🧠 상세 정리
1. 복잡한 데스크톱 자동화를 컨테이너로 단순화
ScreenEnv는 GUI 에이전트를 시험하고 배포하기 위한 격리형 우분투 데스크톱을 Docker 컨테이너 안에 생성하는 Python 라이브러리다. 글은 데스크톱 작업 자동화, GUI 응용프로그램 테스트, 소프트웨어를 직접 다루는 AI 에이전트 구축이 기존에는 복잡한 가상 머신 설정과 쉽게 깨지는 자동화 프레임워크를 요구했다고 설명한다. ScreenEnv가 제공하는 것은 단순한 클릭·키 입력 도구가 아니라 응용프로그램 실행, 창 정리, 파일 처리, 터미널 명령 실행, 전체 세션 녹화까지 코드로 제어할 수 있는 완전한 가상 데스크톱 세션이다. 이 세션을 샌드박스로 격리함으로써 실제 응용프로그램을 보고 클릭하고 조작하는 컴퓨터 사용 에이전트에 일관된 실행 기반을 제공하는 것이 핵심이다.
2. 전체 데스크톱 제어와 Docker 기반 실행 특성
ScreenEnv의 제어 범위에는 마우스와 키보드 자동화뿐 아니라 창 관리, 응용프로그램 실행, 파일 작업, 터미널 접근, 화면 녹화가 포함된다. 환경은 Docker에 기본적으로 맞춰져 있어 별도의 복잡한 가상 머신을 구성하지 않고도 격리되고 재현 가능한 데스크톱을 배포할 수 있으며, 글에서는 환경 생성에 10초 미만이 걸린다고 소개한다. 지원 아키텍처는 AMD64와 ARM64이며, 기본 사용법은 screenenv 패키지에서 Sandbox를 가져와 객체를 생성하는 한 줄의 초기화로 제시된다. 이 구성은 에이전트의 행동을 실제 사용자 데스크톱과 분리하면서도 응용프로그램과 파일, 터미널을 함께 다뤄야 하는 전체 작업 흐름을 하나의 컨테이너 안에서 실행할 수 있게 한다.
3. 세밀한 제어를 위한 직접 Sandbox API
첫 번째 연동 방식은 맞춤형 에이전트 프레임워크, 기존 백엔드, 세밀한 실행 제어가 필요한 경우에 적합한 직접 Sandbox API다. 예제는 화면을 표시하는 모드로 Sandbox를 생성한 다음 터미널을 실행하고, 문자열을 입력하며, 현재 화면의 스크린숏을 가져와 이미지로 읽는 흐름을 보여준다. 개발자는 이 API를 통해 자신의 에이전트 판단 로직과 데스크톱 행동을 직접 연결하고 각 동작의 순서와 결과 처리를 프로그램 수준에서 관리할 수 있다. 작업이 끝나면 close 메서드로 환경을 종료해야 하며, 이를 호출하지 않으면 남아 있는 컨테이너를 사용자가 직접 종료해야 할 수 있다는 운영상 주의점도 명시되어 있다.
4. AI 시스템을 위한 MCP 서버 연동
두 번째 방식은 Model Context Protocol을 지원하는 AI 시스템을 위한 MCP 서버 연동이다. MCPRemoteServer를 실행하면 에이전트가 접속할 수 있는 서버 주소가 제공되고, 예제에서는 스트리밍 HTTP 클라이언트와 ClientSession을 사용해 세션을 초기화한 뒤 사용 가능한 도구 목록을 조회한다. 이후 에이전트는 screenshot 도구를 호출하고, 응답에 포함된 데이터를 Base64에서 바이트로 복원해 이미지로 열 수 있다. 서버 사용을 마친 뒤에는 close 메서드를 호출해야 하며, 직접 API와 마찬가지로 종료하지 않으면 컨테이너 정리가 별도로 필요할 수 있다. 이러한 이중 접근법의 목적은 특정 에이전트 구조를 강요하는 것이 아니라 기존 인프라가 직접 제어와 MCP 중 적합한 연결 방식을 선택하도록 하는 데 있다.
5. smolagents와 모델 백엔드 선택
ScreenEnv는 smolagents를 기본적으로 지원하며, 글은 이를 이용해 맞춤형 데스크톱 에이전트를 만드는 과정을 모델 선택부터 설명한다. 예시에는 OpenAIServerModel을 통한 GPT-4.1 연결, HfApiModel을 통한 Qwen2.5-VL-7B-Instruct 추론 엔드포인트 사용, TransformersModel을 통한 동일 모델의 로컬 실행이 제시된다. 다른 제공자와 연결하는 사례로는 LiteLLMModel을 이용한 Claude Sonnet 4 모델 설정이 포함되며, 선택 가능한 전체 연결 방식은 smolagents 문서를 참고하도록 안내한다. 이 구성에서는 데스크톱 실행 환경과 에이전트를 구동하는 시각언어모델 연결부가 분리되어 있으므로, 사용자는 작업 목적과 실행 조건에 맞는 모델 백엔드를 선택한 뒤 동일한 ScreenEnv 환경에 연결할 수 있다.
6. 맞춤형 행동 공간을 갖는 데스크톱 에이전트
맞춤형 에이전트는 DesktopAgentBase를 상속하고 setup_desktop_tools 메서드에서 사용할 행동 공간을 구현하는 방식으로 정의한다. 생성자는 모델, 데이터 디렉터리, Sandbox 데스크톱, 추가 도구, 최대 실행 단계, 로그 상세 수준, 계획 간격 등의 설정을 상위 클래스에 전달하며, 예제의 기본 최대 단계는 200으로 설정되어 있다. 도구 예시에는 좌표를 받아 클릭하는 기능, 현재 커서 위치에 문자열을 입력하는 기능, 단일 키나 조합 키를 누르는 기능, 파일 또는 URL을 여는 기능, 지정한 응용프로그램을 실행하는 기능이 포함된다. 각 도구는 실제 Sandbox 메서드를 호출하고 수행한 행동을 문자열로 반환해 에이전트의 실행 과정에 연결된다. 글은 행동 공간이 달라질 경우 성능 향상을 위해 시스템 프롬프트도 그 행동 공간에 맞게 조정하는 것이 중요하다고 덧붙인다.
7. 실제 데스크톱 작업 실행과 설치 절차
실행 예제는 1920×1080 해상도의 화면 표시형 Sandbox를 만든 뒤 선택한 모델과 데이터 디렉터리, 데스크톱 객체를 CustomDesktopAgent에 전달한다. 에이전트에 주어진 작업은 LibreOffice를 열고 2025년 AI 에이전트 작업 흐름을 주제로 약 300단어의 보고서를 작성한 다음 문서를 저장하는 것이다. agent.run으로 작업을 실행하고 결과를 출력한 뒤 Sandbox를 닫는 순서로 전체 흐름이 구성된다. Docker 접근 권한이 거부될 경우에는 환경 변수를 유지한 sudo 실행을 시도하거나 사용자를 docker 그룹에 추가하는 방법이 안내되어 있다. 설치는 pip로 screenenv를 설치하는 방식이며, 저장소를 복제한 다음 examples.desktop_agent 모듈을 실행해 제공된 예제를 시험할 수도 있다.
8. 교차 플랫폼 확장 목표와 공개 범위
ScreenEnv의 다음 목표는 Linux를 넘어 Android, macOS, Windows를 지원해 하나의 에이전트가 여러 GUI 환경에서 최소한의 설정으로 동작하도록 만드는 것이다. 글은 이러한 확장이 데스크톱 에이전트의 교차 플랫폼 자동화뿐 아니라 평가와 벤치마킹에 적합한 재현 가능하고 격리된 환경을 만드는 기반이 될 것으로 설명한다. 공개된 저장소는 Hugging Face의 screenenv 프로젝트이며, 게시물의 댓글에서는 macOS와 ARM64 환경 사용, 컨테이너 내부 서버 구현과 Docker 이미지 소스 공개 여부가 질문으로 제기되었다. 작성자는 당시 Docker 이미지를 안정화한 뒤 오픈소스로 공개하기 위해 작업 중이라고 답했으며, 이미 제공되는 이미지는 AMD64와 ARM64를 모두 지원하므로 ARM64 기반 macOS에서도 사용할 수 있다고 밝혔다. 다른 사용자는 컨테이너화된 환경의 일관성과 재현성이 smolagents 기반 다중 에이전트 테스트에 유용하다는 반응을 남겼다.
🧾 핵심 주장 / 시사점
- 직접 Sandbox API와 MCP 서버를 함께 제공하는 구조는 데스크톱 실행 환경을 특정 에이전트 프레임워크에 종속시키지 않고, 맞춤형 백엔드와 표준 프로토콜 기반 AI 시스템을 모두 수용한다.
- ScreenEnv의 핵심 단위는 개별 클릭 명령이 아니라 응용프로그램, 창, 파일, 터미널, 화면 기록을 함께 제어하는 전체 데스크톱 세션이므로 복합 GUI 작업의 실행과 재현에 초점이 맞춰져 있다.
- 맞춤형 도구 정의와 행동 공간에 맞춘 프롬프트 조정이 에이전트 구현의 중심이며, Docker 종료 처리와 사용자 권한 설정까지 포함해 실행 수명주기를 관리해야 한다.
✅ 액션 아이템
- ScreenEnv의 직접 Sandbox API와 MCP 서버 방식을 기존 아키텍처 특성에 맞춰 장점·제약 기준으로 정리해 통합 적용 범위를 정의한다.
- Docker 기반 Ubuntu 데스크톱에서 AMD64와 ARM64 모두 기본 Sandbox 한 줄 초기화 코드를 실행해 앱 실행·입력·창 관리·터미널·화면녹화 동작의 재현성을 점검한다.
- smolagents 조합 시 모델 선택 뒤 DesktopAgentBase 상속과 클릭·입력·키 누르기·URL/파일 열기·프로세스 실행 동작 도구 정의로 맞춤형 데스크톱 에이전트를 구성한다.
❓ 열린 질문
- 세밀한 제어가 필요한 시나리오에서 직접 Sandbox API가 적합한 이유는 무엇이며, AI 연동 중심 작업에서는 MCP 서버가 더 나은 판단 기준은 무엇인가?
- 현재 Linux 중심 예시에서 Android·macOS·Windows 확장을 순차적으로 진행할 경우, 교차 플랫폼 확장 우선순위는 어떤 기준으로 정해야 하는가?
- 화면 녹화, 파일 처리, 터미널 명령이 포함된 Docker 가상 데스크톱에서 재현 가능한 벤치마크가 되려면 어떤 지표로 성능·안정성을 판단해야 하는가?