OpenMinis: 기기 안의 리눅스 셸과 시스템 권한을 그대로 쓰는 모바일 AI 에이전트 앱

OpenMinis 소개

데스크톱에서는 코딩 에이전트가 셸을 잡고 파일을 고치고 스크립트를 돌리는 일이 당연해졌는데, 휴대폰에서는 사정이 다릅니다. 모바일 AI 앱 대부분은 대화창과 몇 가지 내장 기능에 갇혀 있어, 사용자가 실제로 원하는 "사진 속 식단을 계산해서 건강 앱에 기록해 줘" 같은 요청 앞에서 멈춥니다. 앱 샌드박스 밖으로 나갈 방법이 없고, 임의의 스크립트를 실행할 런타임도 없기 때문입니다.

OpenMinis(앱 이름은 Minis)는 그 빈자리를 기기 안에 진짜 컴퓨터를 넣는 방식으로 채웁니다. 앱 내부에서 격리된 Alpine Linux 환경이 돌아가기 때문에 에이전트가 패키지를 설치하고 스크립트를 실행하고 실제 파일을 다룰 수 있습니다. 여기에 건강, 캘린더, 미리 알림, 연락처, HomeKit, 블루투스, 클립보드, 미디어, 알람 같은 기기 기능이 에이전트가 호출할 수 있는 도구로 노출되고, 브라우저 자동화까지 붙어 웹에서 대신 작업하는 것도 가능합니다.

한 가지 짚어 둘 점은 모델의 위치입니다. 이름의 "on-device" 는 모델이 기기에서 추론된다는 뜻이 아니라 에이전트 런타임과 샌드박스가 기기 안에서 돈다는 뜻입니다. 모델 자체는 Claude, GPT, Gemini 등을 사용자가 가진 API 키나 계정 로그인으로 연결하는 BYOK(Bring Your Own Key) 방식입니다. 앱은 iOS가 Swift·SwiftUI, Android가 Kotlin·Compose로 각각 네이티브 구현되어 있습니다.

OpenMinis와 기존 모바일 AI 비서의 차이

기존 모바일 비서와 갈리는 지점은 세 가지입니다. 첫째, 실행 환경이 있습니다. 대화형 앱이 정해진 기능만 호출하는 것과 달리 Minis는 리눅스 셸을 통해 임의의 명령을 실행할 수 있어, 할 수 있는 일의 범위가 앱 개발자가 미리 정한 목록에 묶이지 않습니다.

둘째, 기기 통합의 깊이가 다릅니다. 헬스킷과 캘린더, 미리 알림 같은 시스템 기능이 에이전트의 도구로 직접 연결되어 있어, 읽어 오는 것뿐 아니라 결과를 다시 시스템에 써 넣는 왕복이 성립합니다. 프로젝트가 소개하는 사용 사례가 이 성격을 잘 보여 줍니다. 식사 사진에서 음식을 식별해 칼로리와 영양소를 추정하고 Apple Health에 기록하거나, 단축어로 Minis를 깨워 타임라인을 요약한 뒤 음성으로 합성해 알람으로 재생하거나, 텔레그램 그룹의 메시지에서 버그와 할 일을 뽑아 중복을 정리하고 미리 알림에 넣는 식입니다.

셋째, 모델을 사용자가 고릅니다. 앱 제작사가 계약한 모델을 쓰는 대신 자신의 API 키로 원하는 제공자를 붙이므로, 모델 선택과 비용이 사용자 쪽에 남습니다.

OpenMinis의 주요 화면

설정 화면을 보면 이 앱이 무엇을 다루는지가 비교적 분명하게 드러납니다. LLM 제공자 관리와 모델 그룹, 토큰 사용량이 한 묶음으로 있고, 에이전트 런타임 아래에는 스킬, 소울(Soul), 메모리, 환경 변수가 각각 항목으로 놓여 있습니다. 외부 폴더 마운트 화면에서는 기기의 폴더를 샌드박스 경로에 연결해 리눅스 셸에서 그대로 읽고 쓸 수 있고, 권한 화면에서는 헬스킷, 캘린더, 미리 알림, 사진, 위치 같은 항목을 개별로 허용하거나 차단할 수 있습니다.

OpenMinis의 스킬 시스템

Minis에서 스킬은 SKILL.md 파일을 담은 폴더입니다. 지시문이 본체이고 필요하면 스크립트, 참고 자료, 에셋을 함께 넣습니다. 메타데이터만 상시 컨텍스트에 올라가 어떤 요청에 발동할지 판단하는 데 쓰이고, 본문과 번들 자원은 스킬이 실제로 사용될 때 비로소 로드됩니다.

호환성 측면이 눈여겨볼 만합니다. Minis는 자체 도구 체계를 갖고 있지만 전용 스킬을 요구하지는 않아서, Claude나 Codex, OpenClaw, Hermes Agent용으로 만들어진 스킬이 대체로 그대로 동작합니다. Minis의 도구에 맞춰 손본 스킬은 리눅스 셸과 기기 통합, 네이티브 오프로드에 직접 닿을 수 있어 더 잘 돌아갈 뿐입니다. Minis에 맞춘 스킬 모음은 MinisSkills 저장소에, 실제 사용 사례와 워크플로 모음은 AwesomeMinis 저장소에 정리되어 있습니다.

작업 단위를 나누는 장치로는 워크스페이스가 있어서 서로 다른 맥락을 분리해 두고 minis://workspace/ 형식으로 지정할 수 있습니다. 무겁거나 플랫폼에 종속적인 작업은 샌드박스 대신 네이티브 코드로 넘기는 오프로드 경로도 마련되어 있습니다.

OpenMinis는 누구에게 유용한가

휴대폰에서 자동화를 직접 짜 보고 싶은 사용자, 그리고 자신의 API 키로 모델을 붙여 쓰는 데 거부감이 없는 사용자에게 맞습니다. 기존에 Claude나 Codex용 스킬을 써 온 사람이라면 자산을 그대로 옮길 수 있다는 점도 이점입니다. 반대로 설치 즉시 아무 설정 없이 동작하는 비서를 기대한다면 맞지 않습니다. 제공자 API 키를 직접 준비해야 하고 권한도 항목별로 열어 줘야 하므로 초기 설정에 손이 갑니다.

배포 상태도 감안할 부분입니다. iOS는 App Store와 TestFlight로 배포되지만 App Store 빌드는 심사 때문에 늦어질 수 있어 수정 사항은 TestFlight에 먼저 올라오며, Android는 현재 릴리즈 페이지의 APK를 직접 내려받는 방식으로 프리뷰 단계에 있습니다. 또한 이 저장소는 비공개 개발 트리의 미러라서 풀 리퀘스트를 받지 않으며, 의견은 이슈로 전달하도록 안내하고 있습니다.

OpenMinis 설치와 소스 빌드

iOS는 App Store에서 내려받고, Android는 저장소의 릴리즈 페이지에서 APK를 받습니다. 최신 수정 사항을 먼저 받고 싶다면 TestFlight 베타에 참여하는 경로가 있습니다.

소스에서 빌드하는 경우 절차가 조금 깁니다. 앱이 리눅스 샌드박스를 내장하는 구조라 네이티브 의존성(iOS의 iSH, Android의 PRoot, FFmpeg, LAME)과 Alpine 루트파일시스템을 바이너리로 커밋해 두지 않고 소스에서 직접 빌드하기 때문입니다.

git clone --recurse-submodules https://github.com/OpenMinis/OpenMinis.git
cd OpenMinis

# iOS  — order matters: FFmpeg links against LAME
./deps/build_lame.sh && ./deps/build_ffmpeg.sh
./deps/build_ish.sh && ./deps/prepare_alpine_rootfs.sh
open src/ios/Minis.xcodeproj

# Android — needs NDK r28+
./deps/build_proot.sh && ./scripts/prepare_android_sandbox.sh
cd src/android && ./gradlew :app:assembleDebug

플랫폼별 툴체인 요구 사항과 빌드 시점 커스터마이징 템플릿, 자주 부딪히는 실패 사례는 BUILDING.md에 정리되어 있습니다. 저장소 구성은 src/ios/ 가 iOS 앱과 공유·위젯·파일 프로바이더 확장, src/android/ 가 Android 앱과 JNI 네이티브 코드, docs/specs/ 가 아키텍처와 인터페이스 명세를 담는 식으로 나뉘어 있습니다.

OpenMinis의 라이선스

OpenMinis는 GNU General Public License v3.0으로 공개되어 있습니다. 앱이 GPL 계열 구성 요소인 iSH(GPLv3)와 PRoot(GPLv2)를 링크하기 때문에 결합 저작물 전체가 GPLv3으로 배포된다고 밝히고 있습니다. GPLv3은 파생 저작물을 배포할 때 소스 코드를 같은 조건으로 공개해야 하므로, 이 코드를 가져다 자체 제품에 넣을 계획이라면 라이선스 조건을 먼저 확인해야 합니다. 번들된 서드파티 라이선스 목록은 THIRD_PARTY_LICENSES.md에 버전과 함께 정리되어 있습니다.

:house: OpenMinis 공식 홈페이지

:github: OpenMinis 프로젝트 GitHub 저장소

:wrapped_gift: OpenMinis 설치하기

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 도구를 직접 설치해 사용해보셨다면, :pytorch:파이토치 한국 사용자 모임:south_korea: 회원들을 위해 경험이나 팁을 댓글로 남겨주세요! :folded_hands: