본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 09:22

android-agent: ADB를 통한 실제 Android 기기 제어용 오픈소스 Python 프레임워크

요약

ADB를 활용하여 실제 Android 기기를 제어하고 자동화할 수 있는 오픈소스 Python 프레임워크입니다. LLM을 통해 UI 요소를 식별하고 워크플로를 생성하며, 멀티 디바이스 폰 팜 확장이 가능합니다.

핵심 포인트

  • ADB 기반의 50개 이상의 메서드로 실제 기기 제어
  • LLM 지원 Skill Creator를 통한 AI 기반 UI 자동화 코드 생성
  • 멀티 디바이스 작업 큐를 지원하는 폰 팜(Phone Farm) 확장성
  • Ollama를 활용한 로컬 LLM 환경 지원

당신의 Android에 유령을 소환하세요.

유령은 화면을 보고, 버튼을 탭하며, 결코 잠들지 않습니다.

ADB를 통해 실제 Android 폰을 제어하기 위한 오픈소스 Python 프레임워크입니다. 앱 설치가 필요 없으며, 흔적을 남기지 않습니다. 순수한 자동화(Automation)를 지향합니다.

모든 앱에 대한 기술 (skills) 을 정의하고, 대시보드나 API를 통해 실행하며, 폰 팜 (phone farm) 전체로 확장할 수 있습니다.

유령은 당신이 탭하는 것을 그대로 탭합니다

  • 50개 이상의 ADB 메서드 — 탭 (tap), 스와이프 (swipe), 타이핑 (type), 클립보드 (clipboard), 스텔스 변형 (stealth variants)
  • 실시간 휴대폰 화면 스트리밍 (MJPEG 및 WebRTC)
  • 스트리밍되는 화면에서의 대화형 터치-투-탭 (touch-to-tap)
  • 기기별 작업 큐 (job queues)를 갖춘 멀티 디바이스 폰 팜 (phone farm)

모든 앱을 위한 재사용 가능한 기술(skills)을 구축하세요

  • 앱별 YAML 기반 UI 요소 정의
  • 전제 조건 확인 기능이 포함된 Python 액션 클래스 (action classes)
  • 액션들을 체인처럼 연결하는 다단계 워크플로 (workflows)
  • TikTok 및 Play Store용 내장 기술 (skills)
    기술 허브 (Skill Hub) — 커뮤니티 레지스트리에서 기술을 찾아보고 검색하고 설치하세요
  • CLI에서 설치: android-agent skill install tiktok

유령에게 새로운 기술을 가르치세요

  • BFS 기반 자동 앱 탐색기 (auto app explorer) — 모든 화면과 전환을 발견합니다
  • LLM 지원 기술 생성기 (Skill Creator) — 실시간 기기 스트림을 보면서 AI와 채팅하세요
  • AI가 UI 요소를 식별하고 액션/워크플로 코드를 생성합니다

유령의 활동을 확장하세요

  • 기기별 작업 큐를 갖춘 멀티 디바이스 폰 팜 (phone farm)
  • 봇 러너 (Bot runner): 자동화 작업을 큐에 추가, 예약 및 모니터링
  • ADB 화면 녹화 기능을 포함한 기기별 통합 테스트

Python 3.10+
Android 폰 (USB 디버깅 활성화 필요: 설정 > 개발자 옵션 > USB 디버깅)
ADB 설치 및 PATH 설정 (adb devices 실행 시 휴대폰이 목록에 나타나야 함)
Node.js 18+ (프론트엔드 개발 서버용)

# 1. 저장소 클론 (Clone the repo)
git clone https://github.com/ghost-in-the-droid/android-agent.git
cd ghost-in-the-droid
...

.env.example.env로 복사하거나 (제공되는 경우), 프로젝트 루트에 .env 파일을 생성하세요. 서버는 Pydantic Settings를 통해 설정을 읽습니다. 선택적 변수에는 다음이 포함됩니다:

변수 (Variable)용도 (Purpose)
OPENAI_API_KEYLLM 기능 (Skill Creator, Agent Chat)
ANTHROPIC_API_KEY대체 LLM 제공업체
OPENROUTER_API_KEYOpenRouter LLM 제공업체
DEFAULT_DEVICEADB 시리얼 번호 (비어 있을 경우 자동 감지)

로컬 모델에는 API 키가 필요하지 않습니다: Phone Agent 탭에서 Ollama를 선택하세요 — Ollama를 통해 완전히 로컬 머신에서 실행됩니다. 설치하고, 모델을 pull한 뒤 시작하세요:

brew install ollama # 또는 curl -fsSL https://ollama.com/install.sh | sh
ollama serve &
ollama pull llama3.2:3b # 2GB, 빠름, 우수한 도구 사용 (tool-use) 능력
android-agent/
run.py # 엔트리 포인트 (Entry point): :5055 포트에서 Uvicorn 실행
gitd/
...

백엔드 (Backend) (run.py)는 기기 제어, 스킬 (skills), 봇 (bots), 스케줄링 (scheduling), 스트리밍 (streaming)을 담당하는 라우터(routers)와 함께 5055 포트에서 FastAPI 서버를 시작합니다. 프론트엔드 (Frontend) (frontend/)는 /api/*를 통해 백엔드와 통신하는 Vue 3 SPA입니다. 개발 중에는 Vite가 API 호출을 백엔드로 프록시 (proxy) 합니다. **스킬 (Skills)**은 특정 앱과 상호작용하는 방법을 정의합니다. 각 스킬은 elements.yaml (UI 요소), Python 액션 (원자적 작업, atomic operations), 그리고 워크플로 (workflows, 다단계 시퀀스)를 가집니다. **봇 (Bots)**은 bots/common/adb.pyDevice 클래스를 사용하여 휴대폰을 제어하는 장시간 실행되는 서브프로세스 (subprocess) 스크립트입니다. 백엔드가 이들을 생성하고 관리합니다. **데이터베이스 (Database)**는 SQLAlchemy 2.0 ORM 및 Alembic 마이그레이션 (migrations)을 사용하는 SQLite입니다.

백엔드는 FastAPI를 통해 대화형 API 문서를 자동으로 생성합니다:

Swagger UI: http://localhost:5055/docs
ReDoc: http://localhost:5055/redoc

API 도메인: phone, streaming, skills, creator, explorer, agent-chat, bot, scheduler, tests, tools, misc.

탭 (Tab)기능 (What It Does)
Phone Agent실시간 기기 스트림 (MJPEG/WebRTC), 화면 탭/스와이프, 다중 기기 보기
...

이 프로젝트는 Android 제어를 위한 35개의 도구(tools)를 포함한 MCP 서버를 제공합니다. MCP 호환 AI 클라이언트 (Claude Code, Claude Desktop, Cursor, VS Code Copilot, Windsurf)라면 무엇이든 이를 사용할 수 있습니다.

단 하나의 명령어로 — Claude Code, Codex, Cursor, VS Code Copilot, Windsurf와 함께 작동합니다:

claude mcp add android-agent -- uvx --from ghost-in-the-droid android-agent-mcp

그게 전부입니다. uvx

패키지를 설치하고, 격리된 환경 (isolated env)을 생성하며, MCP 서버를 실행합니다. 클론 (clone), 가상 환경 (venv), 수동 설정이 필요 없습니다.

다른 클라이언트 (Other clients) — 명령어는 동일하며, 등록 방식만 다릅니다:

# Codex (OpenAI)
codex mcp add android-agent -- uvx --from ghost-in-the-droid android-agent-mcp

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
"mcpServers": {
"android-agent": {
...

VS Code Copilot (.vscode/mcp.json):

{
"servers": {
"android-agent": {
...

Cursor (.cursor/mcp.json) / Windsurf (~/.codeium/windsurf/mcp_config.json):

{
"mcpServers": {
"android-agent": {
...

리포지토리를 클론하는 **기여자 (contributors)**를 위해: .mcp.json이 이미 준비되어 있습니다 — 첫 claude 실행 시 35개의 도구 (tools)를 바로 사용할 수 있습니다.

카테고리도구 (Tools)
화면 (Screen)screenshot , get_elements , get_screen_tree , get_screen_xml , screenshot_annotated , screenshot_cropped
...
# 퍼블릭 레지스트리 (public registry) 검색
android-agent skill search tiktok
# 스킬 (skill) 설치
...

스킬 레지스트리 (skill registry)는 이 리포지토리의 registry/에 위치합니다. 커뮤니티 스킬은 android-agent-skill 태그가 붙은 리포지토리로부터 매일 밤 자동으로 발견됩니다.

스킬을 만드는 두 가지 방법:

커뮤니티 스킬 (Community skill) (본인의 리포지토리):

  • skill.yaml, elements.yaml, 액션 (actions), 워크플로 (workflows)를 포함한 새 리포지토리 생성
  • 리포지토리에 android-agent-skill 토픽 태그 지정 - 허브에 자동으로 나타납니다 (매일 밤 스크래퍼 작동)

공식 스킬 (Official skill) (이 리포지토리에 PR 제출):

  • 먼저 커뮤니티 스킬로서 빌드 및 테스트 수행
  • registry/에 스킬을 추가하는 PR (Pull Request) 오픈
  • CI 검증, 메인테이너 리뷰를 거쳐 "Official" 배지 획득

각 스킬에는 다음이 필요합니다:

skill.yaml — 메타데이터 (이름, 버전, 앱 패키지, 액션, 워크플로)
elements.yaml — UI 요소 리소스 ID 및 설명
actions/precondition()execute()를 포함하여 Action을 확장하는 Python 클래스
workflows/

Workflow를 확장하는 Python 클래스

steps() 포함

전체 가이드는 CONTRIBUTING.md를 참조하세요.

계층 (Layer)기술 (Technology)
백엔드 (Backend)FastAPI, Uvicorn, Python 3.10+
...

테스트는 연결된 Android 휴대전화가 필요한 통합 테스트 (integration tests) 입니다:

# 특정 기기에서 모든 테스트 실행
DEVICE=<serial> python3 -m pytest tests/ -v --tb=short
# 단일 테스트 파일 실행
...

adb devices를 통해 기기 시리얼 (serial) 번호를 확인하세요.

이 프로젝트는 스키마 마이그레이션 (schema migrations)을 위해 Alembic을 사용합니다:

# 모델 편집 후 마이그레이션 생성
alembic revision --autogenerate -m "add new_field to my_table"
# 대기 중인 마이그레이션 적용
...

유령은 기술을 익힐수록 더 강력해집니다. 다음 사항은 CONTRIBUTING.md를 참조하세요:

  • 새로운 앱을 위한 기술 (skills) 추가 (가장 영향력이 큼)
  • 액션 (actions) 및 워크플로우 (workflows) 작성
  • 백엔드 아키텍처 (backend architecture) 및 코드 스타일 (code style)
  • PR 프로세스

MIT — 유령은 자유롭습니다. 유령은 오픈 소스 (open source) 입니다. 유령은 당신의 것입니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0