How aibeto/chiriscene works
ChiRi is an Android root daemon for CPU monitoring and adaptive scheduling, with a browser-based configuration and status UI. The principal workflow is: kernel events and device state are monitored, foreground and frame conditions are detected, then the daemon selects a scheduling policy and applies CPU-frequency or thread adjustments. Its CLG governor and FAS frame-aware engine are distinct control paths; FAS is described as not enabled in the README. The UI also exposes app, battery, log, advanced, and lab views. Wiring details are based on the README and sampled excerpts; unsampled subsystem connections are omitted where uncertain.
Main entry points: monitor/mod.rs Monitor Coordinator · main.rs eBPF Probes · chiri/mod.rs Event Loop · scheduler.rs Mode Scheduler
Components 23
Daemon Runtime
- ChiRi Daemon
src/main.rs - Event Loop
src/chiri/mod.rs - Runtime Config
src/chiri/config.rs
Monitoring
- Monitor Coordinator
src/monitor/mod.rs - CPU Load Monitor
src/monitor/cpu_monitor.rs - Frame Monitor
src/monitor/fps_monitor.rs - App And Screen Detection
src/monitor/app_detect.rs - System Telemetry
src/monitor/telemetry.rs - eBPF Probes
yumi-ebpf/src/main.rs
Scheduling Control
- Mode Scheduler
src/chiri/scheduler.rs - CLG Governor
src/chiri/governor.rs - FAS Manager
src/chiri/fas_manager.rs - FAS Controller
src/scheduler/fas/controller.rs - Frame Policy
src/scheduler/fas/frame_pipeline.rs - Frequency Policies
src/scheduler/fas/policy_controller.rs
Web Interface
- Web UI
webui/src/App.svelte - Management Views
webui/src/views/OverviewView.svelte - App Data
webui/src/data/apps.ts - Kernel Shell Bridge
webui/src/kernel/shell.ts
Android System
- Android Services
- Linux Kernel
- CPU Frequency Controls
Other components
- Device Owner
Connections 25
- Device Owner → Web UI: manages
- ChiRi Daemon → Monitor Coordinator: starts
- ChiRi Daemon → Event Loop: starts
- Monitor Coordinator → eBPF Probes: loads probes
- eBPF Probes → CPU Load Monitor: reports load
- eBPF Probes → Frame Monitor: reports frames
- Android Services → App And Screen Detection: provides state
- Monitor Coordinator → App And Screen Detection: starts detection
- Monitor Coordinator → System Telemetry: starts collection
- Monitor Coordinator → Event Loop: sends events
- Event Loop → Mode Scheduler: selects modes
- Runtime Config → Event Loop: configures
- Mode Scheduler → CLG Governor: controls CLG
- Mode Scheduler → FAS Manager: controls FAS
- FAS Manager → FAS Controller: manages instance
- FAS Controller → Frame Policy: processes frames
- FAS Controller → Frequency Policies: sets frequencies
- Frequency Policies → CPU Frequency Controls: writes limits
- CLG Governor → Linux Kernel: adapts frequencies
- Linux Kernel → eBPF Probes: emits events
- Web UI → Management Views: routes views
- Management Views → App Data: uses app data
- App Data → Kernel Shell Bridge: queries packages
- Kernel Shell Bridge → Android Services: runs shell
- Web UI → ChiRi Daemon: reads status