나만의 코딩 에이전트(Moa)를 직접 호스팅하고 사용 후기
요약
Moa(My Own Agent)는 사용자의 서버 또는 로컬 기기에서 구동되는 오픈소스 코딩 에이전트입니다. 웹 UI를 통해 데스크톱, 모바일 등 다양한 환경에서 접근 가능하며, 외부 이벤트 처리, 음성 메시지 전송, 실시간 미리보기 등 강력한 기능을 제공합니다. 이를 통해 사용자에게 최적화된 개인 맞춤형 AI 작업 환경을 구축할 수 있습니다.
핵심 포인트
- Moa는 사용자의 서버/로컬 기기에서 구동되는 오픈소스 에이전트입니다.
- 외부 도구 호출, 음성 메시지 전송 등 다양한 자동화 기능을 지원합니다.
- 실시간 미리보기 및 Owners 기능으로 작업의 연속성과 기록 관리가 용이합니다.
- Tailscale 등을 활용하여 접근 권한을 제한할 수 있습니다.
안녕하세요. 평소에는 여기 글을 잘 올리지 않지만, 사람들이 무슨 이야기를 하는지 볼 때는 항상 들러보곤 했습니다. 이 글에 대해 오랫동안 쓰고 싶었지만, 늘 홍보하는 것이 망설여졌습니다. 마침내 쓰기로 결심했습니다.
Moa란 무엇인가요?
Moa(My Own Agent)는 사용자의 서버(또는 로컬 기기)에서 구동되는 무료 오픈소스 에이전트이며, 웹 UI를 통해 데스크톱, 모바일 또는 PWA로 제어할 수 있습니다. 어떤 장치에서든 접속하여 URL만 열면 동일한 인터페이스에서 세션을 이어서 진행할 수 있습니다. 데스크톱 버전에는 단일 대화(single-conversation) 모드와 그리드 모드(grid mode)가 있습니다. 저는 현재 아직 공개되지 않은 네이티브 iOS 앱에 이것을 사용하고 있으며, 이전까지는 항상 PWA로만 사용해 왔습니다.
Moa를 사용하려면 무엇이 필요한가요?
집이나 클라우드 등 구동할 컴퓨터가 필요합니다. 저는 전용 서버(dedicated server)에서 구동하고 있습니다. 만약을 대비하여 말씀드리자면, Moa에 접근할 수 있는 사람은 다른 모든 코딩 에이전트와 마찬가지로 사용자의 기기에서 원하는 것을 실행할 수 있습니다. 저는 Tailscale을 사용하여 접근 권한을 제한하며, 이것을 추천합니다. 또한 토큰 액세스도 지원하지만, 이를 인터넷에 직접 노출하지는 않습니다.
Moa가 할 수 있는 것은 무엇인가요?
- 외부 이벤트 처리 및 자동화: 예를 들어 GrokBot에서 Moa와 대화하는 방식입니다. 엔드포인트(endpoint)를 호출할 수 있는 모든 외부 도구를 사용하여 Moa에 메시지를 보낼 수 있습니다.
- 음성 메시지 및 통화 기능: OpenAI API 키를 사용하면 STT(Speech-to-Text)를 이용해 음성으로 프롬프트를 전송할 수 있습니다. 또한, 특정 기능을 정의하거나 매번 대화마다 시간을 낭비하지 않고 깊이 있게 파고들어야 할 때 사용할 수 있는 '통화' 모드(call mode)가 있습니다. 이 경우 통화(GPT Live)를 설정하고 필요한 것을 질문하며 정의하면, 세션에 우리가 내린 결정 사항의 요약본이 기록됩니다.
- 소유자 관리 (Owners): 이전에는 프로젝트당 여러 개의 작업 공간(worktrees)을 사용했습니다. GrokBot과 Dots가 어떻게 작동하는지 본 후, 저는 Owners를 만들었습니다. 그 이후로는 프로젝트당 하나의 대화만으로 모든 것을 처리하며, 이 기능이 서브 세션(subsessions)을 생성하고 제가 내린 모든 결정 사항의 기록을 유지해 줍니다.
- 첨부 파일 전송 및 수신: (내용 없음)
만약 제가 더 시각적인 것을 봐야 할 필요가 있다면, HTML 파일을 요청하고 그것이 전송되며 렌더링됩니다 (JS 포함). PDF, XLSX 파일, 이미지 등 필요한 모든 것을 보낼 수 있습니다. 또한 대화를 거치지 않고 서버에 바로 저장되는 비밀 정보(secrets)도 보낼 수 있습니다.
작업 시스템(task system). 다소 실험적인 기능이지만, 아이디어는 세션에 작업을 할당할 때 아예 쓰기(write)를 할 필요 없이 이를 수행하고 이미 이벤트(event)를 받는 것입니다. 이는 세션 자체가 사용하는 것과 동일한 작업 시스템입니다.
실시간 미리보기(Live preview). 에이전트들이 작업하는 웹 앱을 열고, 상호 작용하며, 특정 요소를 가리키며 무엇을 변경할지 말하고 실시간으로 그 변화를 볼 수 있습니다.
요약하자면, 저는 제가 필요하다고 생각하거나, 매일 고객들을 위해 일하는 방식을 더 좋게 만들 것이라고 생각한 모든 것을 넣었습니다. 만약 어느 시점에서 컴퓨터로 가야 한다는 상황이 생긴다면… 그것은 Moa가 무언가를 놓치고 있다는 뜻입니다.
왜 Moa를 구축했을까요?
개인적인 이유(가족 등)로 인해 컴퓨터 앞에서 일하는 시간을 보내기가 점점 어려워졌고, 저는 이미 근무 시간을 채우기 위해 밤늦게나 주말, 공휴일에 일해야 했습니다. 이것도 좌절스러웠는데, 제가 제 일을 사랑하기 때문에 좋아하는 활동과 단절된 느낌이 들었기 때문입니다. 저는 Claude Code, Codex의 원격 모드와 Happy 같은 몇 가지 다른 도구들을 사용해 보았지만, 이들 모두 항상 저를 컴퓨터로 되돌리게 만드는 무언가가 부족했습니다. 심지어 Termius를 통해 SSH로 연결하고 휴대폰에서 터미널을 조작하는 시간을 보내기도 했습니다… 정말 악몽이었습니다.
결국 저도 많은 사람들과 마찬가지로, 나만의 솔루션을 구축하기로 결정했습니다. 처음에는 '미니멀리스트'였고 (저는 Pi를 사용해 왔고 그것을 좋아했기 때문에), 결국 제 모든 필요를 충족시키는 것을 목표로 하는 도구가 되었습니다. 저는 이것을 준비하는 데 많은 시간을 들였고, 6월에 일주일간 휴가를 갔는데 맥북을 가져가지 않기로 결정했습니다. 오직 휴대폰으로만 일할 계획이었습니다. 그 결과가 너무 좋아서, 그때 이후로는 다시 컴퓨터 앞에서 일한 적이 없습니다.
저는 가족과 더 많은 시간을 보낼 수 있고, 동시에 그 어느 때보다 더 오래 일하고 있습니다.
이 글을 올리는 것이 이 도구가 성공하기를 바라서가 아닙니다. 이것이 알려지는 것에 제가 걸고 있는 것은 아무것도 없습니다. 저는 컴퓨터와 싸우는 상황 없이, 휴대폰으로도 계속 작업하면서 가족과 함께할 수 있도록 만들었습니다. 만약 다른 누군가가 같은 상황에 처해 있고 이것이 그들을 그곳으로 이끈다면, 그것만으로도 저에게 행복일 것입니다. 이것을 올린 전체 목적이 바로 그거입니다.
P.S.: 첫 번째 댓글의 영상
제출자 /u/MrMegsh
[링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기