Model task flows · Track node state · Visualize progress · Propagate execution failures
Overview · Features · Architecture · Development · Roadmap
Cemnect is an early Android task-agent interface prototype. Its current focus is the execution-state layer: representing a task as connected nodes, tracking transitions through the graph, displaying live progress, and surfacing failures that block downstream work.
The repository is named osx01agent, while the Android project and package are currently branded Cemnect. The app source is located in the cemnect/ subdirectory.
- Kotlin domain models for tasks, flow nodes, edges, and executions.
- A
StateFlow-based graph state engine. - Node lifecycle states: pending, running, completed, failed, blocked, and skipped.
- Downstream failure propagation through graph edges.
- Execution controls for start, pause, resume, complete, cancel, and reset.
- Jetpack Compose home and task-execution screens.
- A live graph panel with reusable node cards.
- Compose Navigation and Material 3 theming.
- A simulated automation flow for demonstrating state changes.
The bundled demo moves through a representative Android automation sequence:
Start
└── Check Permission
└── Open App
└── Wait for Load
└── Find Element
└── Click Element
└── Verify Result
└── End
This sequence is simulated in the UI. The repository does not yet contain a production AccessibilityService or a real device-automation executor.
cemnect/
├── app/src/main/java/com/cemnect/android/
│ ├── domain/
│ │ ├── model/ # Task, execution, node, and edge models
│ │ └── engine/ # StateFlow-powered graph state engine
│ ├── navigation/ # Compose navigation graph
│ └── ui/
│ ├── components/ # Flow graph and node visualization
│ ├── screens/ # Home and execution screens
│ └── theme/ # Material 3 theme
├── app/build.gradle.kts
├── build.gradle.kts
└── settings.gradle.kts
The prototype follows a single-activity Compose architecture. Domain state is kept separate from rendering, allowing a future automation executor, persistence layer, and dependency-injection setup to feed the same UI model.
| Layer | Technology |
|---|---|
| Language | Kotlin, Java 17 target |
| UI | Jetpack Compose, Material 3 |
| State | Kotlin Coroutines and StateFlow |
| Navigation | Navigation Compose |
| Dependency injection | Hilt dependencies prepared |
| Minimum Android version | API 26 |
| Compile / target SDK | 35 |
- Android Studio with JDK 17
- Android SDK 35
- An emulator or device running Android 8.0 / API 26 or newer
git clone https://github.com/levomm/osx01agent.git
cd osx01agentOpen the cemnect directory as the Android Studio project.
The repository currently does not include a Gradle wrapper, and the manifest references launcher icon resources that are not present in the committed tree. A clean clone may therefore require Android Studio to provision Gradle and the missing launcher assets to be restored before the app builds successfully.
This limitation is documented rather than hidden: the codebase is an architecture prototype, not a packaged release.
Cemnect currently provides a functional domain/UI skeleton and simulated execution flow. It is not yet a complete autonomous Android agent.
Not implemented yet:
- real AccessibilityService integration;
- device action execution;
- persistent task storage with Room;
- production Hilt modules and injected state holders;
- automated unit and UI test coverage;
- release signing and distributable APK artifacts;
- screenshots captured from a verified build.
- Restore a reproducible Gradle wrapper and launcher resources.
- Add tests for graph transitions and downstream blocking.
- Move execution state into an injected ViewModel.
- Introduce Room-backed task and run history.
- Add a permission-aware AccessibilityService layer.
- Capture real UI screenshots from a verified build.
- Add explicit approval boundaries for sensitive device actions.
No license file is currently included. The source is publicly visible, but reuse, redistribution, and modification rights are not granted until a license is explicitly added.