SkillAgentSearch skills...

OpenRing

A Lightweight On-Device RPA Workflow Engine based on Android AccessibilityService Executes entirely on the phone, no PC backend required, no Root access needed

Install / Use

/learn @SunZhi-Will/OpenRing
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <a href="https://tally.so/r/your-openring-waitlist-id"> <img src="docs/assets/openring-cloud-dashboard-concept.svg" alt="OpenRing Cloud Dashboard Concept for Android RPA and Multiple Device Control" width="1200"> </a>

<br/><br/>

Join OpenRing Cloud Private Beta (Waitlist)

<br/><br/>

<img src="docs/assets/openring-logo.png" alt="OpenRing logo" width="128" height="128"> <h1>OpenRing</h1> <p><b>Android AccessibilityService RPA + Chat-Driven AI Agent (Gemini & optional on-device GGUF)</b></p> <p><i>Runs on the phone—no PC backend, no Root; cloud LLM is optional (BYOK)</i></p>

License: MIT Platform Language Build Android CI CodeQL PRs Welcome

<br/>

繁體中文 | English

</div> <br/>

📖 Introduction

OpenRing helps teams searching for Android RPA, multiple device control, and AI-powered mobile automation deploy reliable, phone-first workflows with no root and no custom backend.

OpenRing is a local Android automation agent that moves across apps with AccessibilityService–driven semantics: it reads structured UI trees, runs scripts and schedules, and—through Chat‑Driven OS—uses Gemini function calling (ReAct) or on-device GGUF models to plan, call tools, and complete tasks.

Everything critical runs on the phone — scripts, schedules, accessibility, skill sandboxes (QuickJS), and optional local LLM inference. A Gemini API key (BYOK) unlocks cloud reasoning, vision (describe_screen), and the full tool loop; without it, you can still use downloaded GGUF models for text chat with streaming replies.


✨ Key Features

  • 🚫 No Root Required: Built on Android's official AccessibilityService, no need to hack or root your phone.
  • 📱 Phone-First: No PC or ADB required; no OpenRing backend — scripts, data, and skills stay on device unless you call a cloud API yourself (e.g. Gemini).
  • 🤖 Chat-Driven Agent: ReAct loop with Gemini tools — get_view_tree, summarize_view_tree (compact UI), describe_screen (vision fallback when the tree is not enough), describe_ambient_audio (hearing: prefers device-internal playback capture via MediaProjection; microphone fallback), taps, input, memory, skills, and more.
  • 🦙 Optional On-Device LLM: Curated GGUF catalog (LocalModelCatalog) with in-app download; token streaming in chat; chat templates for Qwen / Phi / Gemma / TinyLlama-style models (LocalLlmChatPrompt).
  • 👁️ Semantic UI Parsing: View tree → JSON for scripts and automation; large trees can be compacted for LLM context (UiTreeCompact).
  • 🖱️ Human-Like Actions: Clicks, swipes, long press, Back, Home, app launch.
  • ⏰ Scheduling: WorkManager-based triggers for recurring scripts.
  • 🧩 Skill Plugins (QuickJS): call_skill runs sandboxed JS for deterministic helpers (see docs/skill-templates/).
  • 🛠️ Script Editor & Workflows: Create, edit, and run JSON workflows on device.

📈 Activity & Stars

<a href="https://www.star-history.com/?repos=SunZhi-Will%2FOpenRing&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=SunZhi-Will/OpenRing&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=SunZhi-Will/OpenRing&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/image?repos=SunZhi-Will/OpenRing&type=date&legend=top-left" /> </picture> </a>

🏗 Architecture & Tech Stack

OpenRing is built entirely in Kotlin and leverages modern Android development practices, including Jetpack Compose for the UI and Coroutines/Flow for asynchronous programming.

Core Components

| Module | Description | | ------------------------- | ------------------------------------------------------------------------------------------------------- | | View Tree Parser | Uses AccessibilityService to traverse the screen's UI node tree and converts it into structured JSON. | | Action Executor | Dispatches standard gestures (click, swipe, global actions) safely using the Accessibility API. | | Intent Router | Wakes up or navigates to target applications using Android Intents, Deep Links, or Package Names. | | Script Engine | Parses and executes predefined JSON/DSL scripts, integrating logic, variables, and conditions. | | Scheduler | Built on Android WorkManager for reliable, background execution of periodic or delayed tasks. | | Agent (ReAct + Tools) | ReActCoordinator + ToolDispatcher — Gemini function calling, tool results, optional UI compaction. | | Local LLM | LocalLlmEngine — GGUF load/inference via llama-kotlin-android, streaming generation for chat. |

Project Structure

OpenRing/
├── app/                  # The main Android Application module
│   └── src/main/
│       ├── core/         # AccessibilityService, Parser, Executor, IntentRouter, ScreenCapture, playback audio / MediaProjection
│       ├── agent/        # ReActCoordinator, ToolSchemas, ToolDispatcher, UiTreeCompact
│       ├── localmodel/   # GGUF catalog, downloader, LocalLlmEngine, chat prompts
│       ├── gemini/       # Gemini REST client & models
│       ├── data/         # Room, ChatRepository, MemoryRepository, ScriptStore
│       ├── domain/       # ScriptExecutor, Scheduler
│       ├── skills/       # QuickJS skill install & execution
│       └── ui/           # Jetpack Compose (Chat, Settings, Skills, Scripts, …)
├── docs/                 # Documentation
│   ├── product/          # PRD, Backlog, Project Plan
│   └── technical/        # Script format, CI/CD, AI agent, skills
└── gradle/               # Build configuration

For more detailed technical documentation, please refer to the files in the docs/ directory.


🚀 Getting Started

Ready to start contributing or build OpenRing yourself? Follow these steps:

1. Prerequisites

  • Android Studio Jellyfish or newer
  • Java Development Kit (JDK) 17+
  • Android SDK Platform 36 and Build-Tools 36.0.0
  • Android targetSdk 34 device/emulator for runtime validation

2. Clone the repo

git clone https://github.com/SunZhi-Will/OpenRing.git
cd OpenRing

3. Build & Run

You can open the project directly via Android Studio and click Run, or compile using the command line:

./gradlew assembleDebug

The debug APK is written to app/build/outputs/apk/debug/ (typically app-debug.apk).

4. Verification and test status

  • Current CI baseline is ./gradlew assembleDebug + security scans (CodeQL / dependency review).
  • The project currently has no committed app/src/test or app/src/androidTest suites.
  • For now, quality validation relies on successful build plus manual feature checks on device/emulator.
  • Lint tasks are temporarily disabled due to an AGP lint tool crash in some environments; see docs/technical/CI_CD.md.

Download prebuilt debug APK (CI)

Each successful run of Android CI uploads a debug APK as the workflow artifact openring-debug-apk (a ZIP containing the .apk file).

| Method | Link | | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Direct download (ZIP, no GitHub login) | Latest openring-debug-apk.zip via nightly.link — unzip locally, then install the .apk inside. | | GitHub Actions UI | Android CI workflow runs (branch main) → open a green run → Artifactsopenring-debug-apk (GitHub may require login to download). |

Attach APK/AAB to GitHub Releases (recommended)

Release page: SunZhi-Will/OpenRing Releases

When creating a New release, upload installable/distributable files directly in Assets so users can download them without browsing CI runs:

  • app-release.apk (installable)
  • app-release.aab (for Play Console)
  • SHA256SUMS.txt (integrity checks)
  • `CHANGEL
View on GitHub
GitHub Stars17
CategoryDevelopment
Updated2d ago
Forks0

Languages

Kotlin

Security Score

90/100

Audited on Apr 8, 2026

No findings