
Shelly v5.3.8: Android 상의 AI 개발 환경을 Codex-first로 재구축하다
요약
Shelly v5.3.8 업데이트를 통해 Android 기반 AI 코딩 환경을 Codex 중심으로 재구축했습니다. CLI 역할은 Codex로 일원화하고, Gemini와 Groq 등은 AI Pane의 프로바이더로 분리하여 UX 안정성을 높였습니다.
핵심 포인트
- CLI 통합을 Codex로 일원화하여 개발 효율성 증대
- Gemini, Groq 등을 AI Pane 프로바이더로 분리 운영
- Android 네이티브 PTY 구현으로 Termux 없이 Linux CLI 동작
- 폴더블 기기에 최적화된 멀티 페인 IDE 설계
이 기사에서 다룰 내용
이전 기사에서는 Shelly 상에서 Claude Code / Codex / Gemini CLI를 구동하기 위한 초기 설정에 대해 작성했습니다.
하지만 그 이후의 실제 기기 운용을 바탕으로 방침을 변경했습니다.
Shelly v5.3.8에서는 터미널에서 직접 구동하는 CLI 통합을 Codex로 일원화했습니다.
Gemini / Groq / Cerebras / Perplexity / local LLM은 AI Pane 측의 provider로 취급합니다. 즉, "여러 AI를 그만둔" 것이 아니라, CLI와 AI Pane의 역할을 분리했다는 변경입니다.
이 기사에서는 그 이유와 v5.3.8에서 구현한 업데이트 사항에 대해 작성합니다.
GitHub: https://github.com/RYOITABASHI/Shelly
Shelly란 (지난 내용 복습)
Shelly는 AI 코딩 에이전트를 Android 상에서 네이티브로 실행하기 위해 개발한 AI 통합형 터미널 IDE입니다.

폴더블 단말기에서의 터미널과 AI Pane 분할 표시
기술 스택:
Expo 54 / React Native 0.81 / TypeScript (UI)
JNI forkpty를 통한 네이티브 PTY (Termux 불필요, IPC 경계 제로)
bash / Node.js / Python 3 / git / curl / ssh / sqlite3 / rg / jq / tmux / vim을 APK에 동봉하여 최초 실행 시 전개
Bundle ID: dev.shelly.terminal
특징:
Termux 불필요·root 불필요로 Linux 계열 CLI 동작
터미널 / AI 채팅 / Browser / Markdown / Preview의 멀티 페인 (Multi-pane) 동시 표시
AI 채팅이 터미널 출력을 자동으로 읽어 들여, 에러에 대해 「Run」 버튼으로 수정 명령을 실행
폴더블 단말기를 IDE로 사용하는 것을 전제로 한 설계 (페인 분할 전제)
지난번과 무엇이 달라졌는가
이전 기사에서는 Shelly를 "Android 상에서 Claude Code / Codex / Gemini CLI를 네이티브로 실행하는 IDE"로 소개했습니다.
하지만 현재의 Shelly는 방침을 조금 변경했습니다.
터미널 CLI: Codex에 집중
AI Pane: Gemini / Groq / Cerebras / Perplexity / local LLM을 provider로서 구분하여 사용
Background agents: provider API를 경유
앱 업데이트: GitHub Releases의 manifest를 통한 앱 내 업데이트
Codex runtime: APK 동봉 버전 + 검증이 포함된 runtime update
한마디로 말하면, CLI를 늘리는 방향에서 Codex를 확실하게 운용하는 방향으로 선회한 릴리스입니다.
왜 Claude Code / Gemini CLI의 직접 통합을 제외했는가
Claude Code나 Gemini CLI를 부정하는 것은 아닙니다.
이유는 보다 실무적인 것입니다.
Android 앱 내에서 대화형 CLI를 "안정적으로 운용"하려면, 단순히 바이너리를 두는 것만으로는 불충분합니다.
로그인 동선
OAuth / device auth / browser handoff
PTY 상에서의 표시 제어
Ctrl+C 및 포커스 제어
업데이트
장애 발생 시의 reset / repair
credential의 저장 위치
실패 시의 진단 로그
이 모든 것이 UX에 직결됩니다.
특히 Claude Code / Gemini CLI는 Shelly 단독으로 완결되는 로그인 동선을 만들기 어려워, 이전 기사에서는 credential transplant (별도 환경에서 로그인하여 credential 파일을 이식하는 방법)를 안내했습니다.
하지만 실제로 운용해 보면, 이 방법은 사용자 경험 측면에서 상당히 무겁습니다. 별도 환경 준비 → 로그인 → 파일 쓰기 → /sdcard/Download를 경유하여 전송 → 임포트 → 중계 파일 삭제, 라는 절차는 초기 설정으로서 현실적이지 않습니다.
반면 Codex는 Shelly 측에서 디바이스 인증 (device auth)을 처리하기 용이하며, Android 상에서도 로그인, 실행, 업데이트, 복구까지 비교적 깔끔하게 통합할 수 있습니다. bash 프롬프트에서 codex-login --open을 실행하는 것만으로, 별도의 환경 없이 인증이 완료됩니다.
따라서 v5.3.8에서는 터미널 CLI를 Codex에 집중시켰습니다.
여러 AI를 그만둔 것은 아닙니다
CLI를 Codex로 좁혔을 뿐, AI 프로바이더 (AI provider)를 Codex로만 한정한 것은 아닙니다.
Shelly에는 AI Pane이 있으며, 여기서는 프로바이더를 전환하며 이용할 수 있습니다.
Gemini API
Groq
Cerebras
Perplexity
local OpenAI-compatible server
터미널에서 직접 조작하는 CLI는 Codex, AI Pane에서는 여러 프로바이더를 구분하여 사용하는 구성입니다.
이러한 분리를 통해 터미널 측의 안정성과 AI 측의 유연성을 양립하기 쉬워졌습니다.
Codex runtime을 앱 내에서 업데이트할 수 있도록 개선
v5.3.8의 큰 변경점 중 하나는 Codex runtime의 업데이트 경로입니다.
Shelly에서는 Codex runtime을 APK에 동봉하고 있지만, 그것만으로는 업데이트할 때마다 APK를 재배포해야 합니다.
그래서 Codex runtime updater를 구현했습니다.
codex-runtime-latest/codex-runtime.json을 취득
runtime tarball을 다운로드
SHA-256을 검증
codex_tui --version과 codex_exec --version으로 스모크 테스트 (smoke test)
문제가 없으면 ~/.shelly-runtime/codex/current에 반영
실패 시에는 Reset을 통해 APK 동봉 버전으로 롤백 (rollback)
"항상 upstream의 latest를 그대로 사용"하는 것이 아니라, Shelly 측에서 검증한 runtime만을 사용하는 설계입니다.
APK 업데이트 UI도 재설계
기존의 Shelly에서는 업데이트 화면에 GitHub Actions의 run이나 artifact가 그대로 표시되었습니다.
개발자에게는 편리하지만, 일반 사용자에게는 이해하기 어려운 UI였습니다.
v5.3.8에서는 업데이트 UI를 심플하게 재설계했습니다.
최신입니다
업데이트가 있습니다
다운로드 중
설치 준비 완료
에러
내부적으로는 GitHub Releases의 android-latest/latest.json을 참조하여 versionCode를 비교하고, APK를 /sdcard/Download/shelly-update-<versionCode>/에 다운로드한 후, SHA-256을 검증하여 Android의 Package Installer에 전달합니다.
GitHub Actions artifact가 아닌 public release asset을 사용함으로써, GitHub CLI 인증도 불필요해졌습니다.
Cross-pane intelligence를 실기(real device) 친화적으로 개선
Shelly의 특징은 터미널과 AI Pane이 동일 화면 내에서 연동된다는 점에 있습니다.
AI Pane은 터미널의 내용을 읽어 들여,
"이 에러 고쳐줘"
와 같은 지시에 대해 문맥을 고려한 수정안을 제시할 수 있습니다.
v5.3.8에서는 이 부분도 개선했습니다.
대상으로 하는 terminal pane의 명확화
제어 문자 및 불필요한 로그 제거
local LLM에 전달하는 컨텍스트 (context) 양의 최적화
에러 추출 정밀도 향상
수정 명령어를 그대로 실행할 수 있는 동선 유지
local LLM과 API provider 어느 쪽에서도 동일한 UI로 다룰 수 있도록 하고 있습니다.
실기에서 발생한 문제 해결
이번 업데이트는 신기능보다 실기 운용의 안정성 개선이 중심입니다.
Android new architecture의 복구
기동 시 ANR 회피
포커스 / 위젯 업데이트의 안정화
background agent의 기동 타이밍 조정
다운로드 진행 로그 추가
일본어 / 영어 UI 정리
versionCode 다운그레이드 사고 방지
release asset 공개 순서 수정
특히 Android 상에서의 빌드(Build)·설치(Install)·실행 확인(Startup verification) 과정에서는 메모리 부족이나 Package Installer의 불분명한 에러에 빈번하게 직면하게 됩니다.
이번 수정에서는 이러한 "원인을 파악하기 어려운 실패"를 줄이는 것에 중점을 두었습니다.
요약
Shelly v5.3.8은 이전 글과 비교했을 때 방침을 전환한 릴리스입니다.
이전에는 "Android에서 Claude Code / Codex / Gemini CLI를 모두 구동하는 것"을 목표로 했습니다.
현재는 다음과 같은 방침으로 정리되어 있습니다.
- CLI는 Codex에 집중
- 여러 AI는 AI Pane의 provider(제공자)로서 활용
- Codex runtime은 검증을 거쳐 앱 내 업데이트(In-app update)
- APK도 앱 내에서 업데이트 가능
- 장애 발생 시 Reset으로 복구 가능
Android 상에서 AI 개발 환경을 구축할 경우, 기능의 수보다 로그인·업데이트·복구·진단의 설계가 중요해집니다.
v5.3.8은 그 전제에 맞춰 Shelly를 재설계한 릴리스입니다.
버그 보고(Bug report) / 기능 요청(Feature request)은 GitHub의 issue로 부탁드립니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기