
Prospero: 더 문명화된 시대를 위한 새로운 코딩 하네스
2026년 10월 31일
로컬 대규모 언어 모델(LLM)에 관심을 가져온 지 몇 년이 됐다. 일반적인 고성능 소비자용 하드웨어에서도 감당할 만한 속도로 추론하는 일부 오픈 웨이트 모델은 이제 간단한 프로그래밍 작업을 맡길 만큼 안정적이다. 이런 모델을 쓰려면 코딩 하네스가 필요하지만, 올해 나온 하네스 대부분은 웹 기술 스택으로 만들어져 메모리를 지나치게 많이 쓴다는 점에 실망했다. 하네스의 핵심은 사실상 curl과 popen()을 연결한 것인데, 여기에 기가바이트 단위의 메모리가 필요할 이유는 없다. 그래서 Prospero를 만들었다. 이 프로그램은 제작자의 C++ 스타일로 작성됐고, 빠르게 반응하는 Dear ImGui 도킹 인터페이스를 제공한다. 제작자는 기능을 희생하지 않으면서 다른 하네스보다 자원을 약 두 자릿수 규모 적게 쓴다고 설명한다.
다크 모드를 선호하는 사용자도 지원한다.
Prospero에는 모델 제공자가 내장돼 있지 않다. 사용자는 llama.cpp, 직장 내 온프레미스 모델, OpenRouter, Anthropic API, OpenAI API 등을 직접 준비해야 한다. Claude 구독은 사용할 수 없다.
코딩 하네스는 채팅 인터페이스를 확장해 AI가 하네스가 제공하는 도구와 대화하도록 한다. 도구는 파일을 읽거나 쓰고 셸 명령을 실행할 수 있으며, AI는 도구를 차례로 호출하고 결과를 바탕으로 작업을 반복한다. 이런 AI를 에이전트라고 한다. 에이전트는 진행 상황을 알리거나 질문할 때 사용자에게 메시지를 보내며, 채팅 인터페이스도 계속 사용할 수 있다.
Prospero를 비롯한 일부 하네스에서는 에이전트가 하위 에이전트를 실행해 일을 나눠 맡길 수 있다. 하위 에이전트들은 병렬로 작업하거나, 하위 작업으로 작업 맥락이 가득 차지 않도록 할 수 있고, 서로 메시지를 주고받으며 조율할 수도 있다. 다른 컴퓨터에 SSH로 접속하거나 일반 WSL을 사용하면 Prospero의 헤드리스 복사본을 다른 호스트에 배포해 그 시스템에서 에이전트를 실행할 수 있다. Professional Edition에는 macOS, Windows, Linux에서 x86/x86-64와 ARM64 조합을 지원하는 엔진이 포함된다. Windows x86 엔진은 Windows XP에서도 작동하며, 요청하면 솔리테어와 지뢰찾기도 할 수 있다.
Prospero는 데스크톱 제어 기능도 갖춘 하네스 중 하나다. 모델이 비전을 지원하면 데스크톱 화면을 보고 클릭·입력·드래그할 수 있어, GUI 애플리케이션을 실행 중에 테스트하고 디버깅할 수 있다. 앱별로 특화된 MCP 보조 도구는 필요하지 않다.
헤드리스 엔진이 있기 때문에 TUI는 필요하지 않다. 하네스 엔진은 헤드리스 시스템에서 실행하고, UI는 데스크톱이나 노트북에서 실행한다. 조금 더 설정하면 GUI와 완전히 독립적으로 하네스를 실행할 수도 있다. 이 경우 GUI가 연결되지 않아도 작업을 계속하고, 나중에 다시 연결할 수 있다.
Prospero는 자원을 적게 사용하므로, 특히 헤드리스 시스템에서 퍼즈 테스트 캠페인을 실행할 때 유용할 수 있다. 제작자는 메모리를 많이 차지하는 하네스가 아니라, 문제를 일으킨 폭주 퍼즈 대상이 리눅스 OOM 킬러의 종료 대상이 될 수 있다는 점을 장점으로 든다. 하네스 프로세스가 사라져 몇 시간 동안 진행한 퍼즈 테스트가 아무 성과 없이 끝나는 일을 겪었다고 설명한다. 에이전트가 퍼즈 테스트 중 발견한 버그를 바로 수정하고 캠페인을 이어갈 수 있다는 것도 에이전트에게 이 작업을 맡기는 이유라고 덧붙인다.
설정과 실행 방식
설정 파일은 ~/.config/prospero/prospero.ini에 있다. JSON 대신 편집하기 쉬운 INI 형식이며, 파일을 버전 관리에 추가하거나 복사해 공유할 수 있다. GUI의 Settings 페이지에서 모든 설정에 접근할 수도 있어 INI를 직접 편집하지 않아도 된다. INI 파일은 파일 시스템 경로뿐 아니라 URL로도 다른 설정 파일을 포함할 수 있다.
include = https://example.com/prospero.ini
URL을 통한 포함은 여러 사람이 공유하거나 관리하는 설정을 염두에 둔 기능이다. 포함된 설정은 지정할 수 있는 항목이 제한되며, 셸 명령에 들어갈 수 있는 항목은 설정하지 못하도록 막는다. 다만 설정에서 환경 변수를 API 키로 읽어, 설정을 통제하는 엔드포인트에 전달할 수 있으므로 어느 정도 신뢰가 필요하다.
Prospero는 엔드포인트에서 모델 목록과 컨텍스트 크기 같은 매개변수를 가져온다. 필요하면 사용자가 값을 조정할 수 있다. 다음은 설정 예시다.
model = falstaff/Qwen3.8-27B
[endpoint falstaff]
url = http://falstaff.local/
key = env:FALSTAFF_API_KEY
[model Qwen3.8-27B]
edit_format = replace
template.reasoning_effort = medium
[model Qwen3.8-27B-xhigh]
like = Qwen3.8-27B
template.reasoning_effort = xhigh
[web]
search = searxng
url = https://search.example.com/
key = env:EXAMPLE_API_KEY
수동 렌더링
ImGui는 보통 비디오 게임처럼 수직 동기화에 맞춰 화면을 계속 다시 그리는 능동 렌더링 방식을 쓴다. 게임 안의 인터페이스처럼 이런 방식이 적합한 경우도 있지만, 코딩 하네스처럼 텍스트 중심이고 대부분 정적인 UI에는 덜 적합하다. Prospero는 대신 정지 프레임을 활용하는 수동 렌더링을 쓴다. 애니메이션이 끝날 때까지는 필요한 프레임을 그린 뒤 대기 상태로 들어간다. 할 일이 없으면 아무 작업도 하지 않으므로, 에이전트가 빌드를 기다리는 동안 GPU를 계속 쓰지 않는다.
무한정 기다리지 않기
다른 하네스에서 자주 겪는 문제는 작업이 쉽게 멈춘다는 점이다. 긴 작업을 맡기고 잠든 뒤 아침에 확인하면, 밤중에 사소한 문제로 하네스가 두 시간 만에 멈춰 나머지 시간이 낭비된 경우가 있었다. Prospero의 핵심 설계 원칙은 어떤 작업도 무한정 기다리지 않게 하는 것이다. 모든 작업에 기한을 둔다.
사용자가 허가 요청에 응답하지 않으면 에이전트는 시간 초과로 거부를 받고 해당 작업을 진행하지 않아야 한다. 에이전트가 주의를 요청하면 시스템 알림을 띄워 사용자가 이를 놓칠 가능성을 줄인다. 하네스는 간헐적인 오류가 발생해도 에이전트가 작업을 완료하도록 계속 시도한다. 모든 네트워크 요청에는 시간 제한이 있고, 끝없는 대기를 막는 감시 기능이 있으며, 에이전트 메시지함의 크기도 제한된다.
시간 제한에 걸린 셸 명령은 비동기 백그라운드 작업으로 바뀐다. 에이전트는 시간 제한을 두고 해당 작업을 계속 기다릴 수 있으며, 정해진 간격으로 깨어나 작업을 계속 기다릴지 판단한다. 예외는 Plan 모드다. 계획을 제시하거나 ask_user 도구로 추가 설명을 요청한 뒤에는 무기한 기다린다. Plan 모드에서는 사용자가 에이전트에 주의를 기울이고 있다고 전제한다.
남는 프로세스 방지
올해 초 자주 겪은 또 다른 불편은 에이전트가 실행한 프로세스가 정리되지 않고 남는 일이었다. 에이전트가 병렬 빌드를 시작한 뒤 지나치게 낙관적으로 잡은 시간 제한에 걸리면 빌드 시스템 일부를 종료해 빌드가 멈춘 것처럼 보일 수 있다. 하지만 실제로는 빌드가 적어도 일부 계속된다. 에이전트가 다시 시도하면 빌드 두 개가 서로 간섭해 시스템을 어지럽히고 컴퓨터를 힘들게 한다.
이런 문제 때문에 특정 하네스에서는 에이전트가 빌드를 실행하도록 맡기는 일을 한동안 꺼렸다. 이는 에이전트가 독립적으로 작업을 반복해 완료하는 장점을 크게 줄인다. 사람이 계속 개입하면 에이전트에 족쇄를 채우는 것과 같다는 설명이다.
시간 제한이 걸린 동기식 작업을 비동기 작업으로 바꾸는 것 외에도 Prospero는 프로세스 트리 전체가 함께 종료되도록 한다. 명령을 중지하면 그 명령의 프로세스도 중지한다. Windows에서는 작업 객체를 이용하면 간단하지만, 이를 활용하는 하네스는 많지 않다고 설명한다. macOS와 Linux에서는 더 어렵지만 Prospero도 이 동작을 구현한다.
내장 도움말
Prospero는 다른 하네스와 마찬가지로 특정 작업을 수행하는 방법을 묶어 둔 지침인 스킬을 지원한다. Prospero 자체에 대한 스킬도 들어 있어 내장 문서를 읽을 수 있다. 사용자에게 Prospero의 사용법이나 설정 방법을 질문받으면 에이전트는 답변뿐 아니라 UI의 관련 위치로 이동하는 링크도 제공할 수 있다. 사용자를 대신해 prospero.ini를 수정하고 다시 불러올 수도 있다. 이런 기능 자체가 Prospero만의 것은 아니지만, 제작자는 이처럼 잘 구현한 하네스를 알지 못한다고 말한다.
셸 선택
Windows에서 Prospero는 w64devkit과 잘 작동하도록 설계됐으며, 설치돼 있으면 해당 셸을 우선 사용한다. 코딩용 모델은 w64devkit을 기본으로 알고 있어 두 도구가 서로 보완된다는 설명이다. 다른 셸을 기본값으로 선택할 수도 있다. Prospero는 세션 도중 셸을 바꿀 수 있는 드문 하네스이기도 하다. 작업에 PowerShell이 더 적합하면 드롭다운에서 선택할 수 있으며, 에이전트에는 셸 변경 사실과 알려진 특이점(예: 오래된 Bash라는 점)이 전달된다. macOS에서는 bash와 zsh 사이를 바꿀 수 있다.
기능과 한계
Prospero는 고급 셸에서 기대할 수 있는 기능도 제공한다. 하위 에이전트의 작업 트리를 포함한 Git worktree를 사용할 수 있어 여러 에이전트가 저장소를 공유할 수 있다. Model Context Protocol(MCP)을 지원하고, 사용자가 허용하면 웹을 검색한다. 맥락을 공유하는 사이드 채팅을 시작할 수 있으며, 이 기능은 하위 에이전트로 구현된다. 세션을 분기하는 기능도 있다.
현재 내장 터미널이나 편집기는 없다. 대신 사용자가 선택한 외부 터미널이나 편집기를 연다. 제작자는 내장 메모장보다 Vim을 선호한다고 설명한다. Ctrl+G를 누르면 외부 편집기에서 프롬프트를 편집할 수 있다.
권한 시스템만으로 악의적인 에이전트를 막을 수는 없다. 에이전트는 컴퓨터에서 프로그램을 작성하고 실행하므로, 궁극적으로 하네스가 접근할 수 있는 모든 자원에 접근할 수 있다. 권한은 사용자의 요구를 에이전트에 상기시키고 단순한 실수를 잡아내기 위한 장치다. 예를 들어 “프로젝트 범위를 벗어나지 말라”거나 “지금은 내 데스크톱을 제어하지 말라”고 알리는 용도다. 에이전트의 접근을 제한하려면 불편을 감수하거나 유용한 자원을 차단하면서 하네스 자체를 컨테이너나 Raspberry Pi 안에서 실행해야 한다.
Community Edition과 Professional Edition
Prospero는 오픈소스 프로젝트지만 두 가지 등급으로 나뉜다. GitHub에서 무료로 받을 수 있는 Community Edition에는 헤드리스 엔진이 내장돼 있지 않아 원격 배포가 제한된다. Community Edition임을 알리는 작은 안내 문구도 표시되며, 취미 사용자를 대상으로 한다.
Professional Edition은 명목상의 비용을 내고 DRM 없는 다운로드와 무료 업데이트를 받는 유료 버전이다. 모든 헤드리스 엔진이 내장돼 있어 버튼 한 번으로 원격 배포를 시작하고 다른 시스템에서 원격 세션을 실행할 수 있다. 제작자는 이를 전문가에게 중요한 기능으로 꼽는다.
두 버전 모두 Windows와 macOS 빌드에 코드 서명이 적용된다. 이 과정에는 비용이 든다. 원격 배포 기능이 없어도 업무에 Prospero가 유용하다면 지속적인 비용을 지원하기 위해 구매해 달라고 제작자는 요청한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요