ON-DEVICE · v0.1.0 · ANDROID 8.0+

Write one sentence. Get a working Android routine.

Rulomi parses a written instruction into a typed trigger and up to eight sequential actions, shows you exactly what it understood, then executes on real Android APIs — AlarmManager for schedules and a foreground monitor for charging and battery events. No account, no API key, no backend, and no internet permission in the manifest.

NO ACCOUNTNO NETWORK PERMISSIONDEBUG-SIGNED BUILD
Rulomi home screen showing the create-a-routine card and inspiration list
INSTRUCTIONS YOU CAN PASTE VERBATIM
Every weekday at 10 pm turn on do not disturb and set media volume to 20%
Every day at 3 pm notify me "Take a breath and stretch"
When battery drops below 20% notify me "Time to charge your phone"
When I plug in my phone set brightness to 40% and set media volume to 30%
When I unplug my phone turn off do not disturb
Every weekend at 09:30 notify me "Make time for yourself"

Use an explicit am/pm time or HH:mm. Separate actions with and, and then, then, or a semicolon. Conjunctions inside quoted notification text are preserved. Percentages must be in range.

THE FLOW

Describe, review, enable — nothing runs before you approve it

Every required permission is checked before any action executes. An instruction that is only partly understood produces an explanation and cannot be enabled.

Describe step with the instruction typed into the prompt field
STEP 01 · DESCRIBE
Type up to 2,000 characters, or start from one of four presets. The planner runs locally and returns either a plan or a revision message.
Review and enable step showing the interpreted trigger and actions
STEP 02 · REVIEW & ENABLE
See the parsed WHEN and the numbered THEN list, rename the routine, grant the specific access Android requires — or save it paused.
Home screen with enabled routine and successful run counters
STEP 03 · RUN & AUDIT
Edit, pause, delete, or Run now with a confirmation. Activity records successful, blocked, and partially completed runs, including how many actions succeeded.
SUPPORTED CAPABILITIES

Six triggers, four action types, eight actions per routine

TRIGGERS
Daily timeevery day at HH:mm
Weekday timeMon–Fri
Weekend timeSat–Sun
Charging startson entry
Charger disconnectson entry
Battery drops below1–100%
ACTIONS
Local notificationquoted text
Media volume0–100%
Screen brightness0–100%
Enable Do Not Disturbpriority interruptions
Disable Rulomi's DNDown rule only
Sequential chainingup to 8 actions
NOT IMPLEMENTED IN 0.1.0
LocationWi-Fi / BluetoothIncoming messagesApp activityAccessibility UI workflowsArbitrary scriptsNested conditionsDelays between actionsCloud AI planning

Unsupported conditions are rejected outright, including extra conditions appended to an otherwise recognised instruction. This is not Tasker or MacroDroid parity.

PRIVACY

The manifest does not request internet access

Not a policy promise — a build property. There is no backend to send prompts to, no account to create, and no provider key to supply. The planner is a parser compiled into the APK. Read the full privacy policy.

Prompts, routines, and history stay in private app storage
The most recent 100 run records are retained. Uninstalling or clearing app storage removes them.
Cloud backup and device transfer are excluded
Data extraction rules opt out of auto-backup, so routines do not travel to a new phone.
Permissions are requested per routine, not up front
Notifications, DND access, and system-settings write are only asked for by the routines that need them. Exact alarm scheduling is optional.
ANDROID BEHAVIOUR

What the platform actually guarantees, and what it doesn't

Rulomi does not promise uninterrupted execution on every device. These are the real constraints.

SCHEDULING
AlarmManager, device time zone
Exact scheduling is optional special access; without it Android can delay delivery. Schedules restore after reboot, package update, clock or time-zone change, and app resume.
EVENT MONITORING
specialUse foreground service
Charging and battery triggers run a persistent notification with a Pause monitoring action, which pauses event routines while scheduled ones stay enabled. No wake locks, no aggressive polling.
EDGE SEMANTICS
Fires on entry, rearms on exit
Enabling a routine captures the current battery state, so it will not run merely because the condition is already true.
INTERRUPTIONS
Force-stop halts automation
Execution resumes when the app is opened again. OEM battery management and foreground-service restrictions can also interrupt monitoring.
FAILURE MODE
Stops, records, does not roll back
Permissions are checked before any action executes. A runtime failure stops remaining actions and records how many succeeded; actions already executed are not reversed.
SIDE EFFECTS
Brightness, volume, and DND scope
Brightness changes disable adaptive brightness. Volume affects the media stream, not the ringtone. On Android 15+ DND maps to an app-owned automatic rule that cannot override yours or another app's.
INSTALL

Two ways in

Sideload the debug APK
Android 8.0 (API 26) or newer. The build is debug-signed, so Android will ask you to allow installs from your browser or file manager. Verify against SHA256SUMS.txt before installing.
rulomi-debug.apk · v0.1.0
SHA-256 · 392361174fa73bcfa7c148c90ad509e5a7afdd5e496c5b8f782aad66e358f2e4
SHA256SUMS.txt · 17.1 MB
Play Store distribution needs release signing, the privacy policy, and store review of the specialUse foreground-service declaration. Until then, this debug build is the only distribution.
Build it yourself
JDK 21, Android SDK platform 36, build tools 35.0.0, and the included Gradle 8.13 wrapper. Dependencies are pinned. Set ANDROID_HOME or an untracked local.properties.
.\gradlew.bat :core:test :app:assembleDebug :app:lintDebug
Output: app/build/outputs/apk/debug/app-debug.apk
EARLY TESTERS WANTED
Device coverage is the gap, not the code
Foreground-service behaviour varies sharply between OEMs. If you can run a routine for a week on a non-Pixel device and report whether monitoring survived, that is the single most useful thing you can send.
Report: device and Android version, whether battery monitoring stopped, and what Activity recorded.
Send a test report
Reports go to info@craftedpxl.com. No tracking, no form, no account.

Questions worth answering before you install

Is there an LLM in here?
No. A deterministic parser recognises a fixed set of English phrases. It does not generalise, and it does not guess. The typed Automation model keeps planning separate from execution, so a future AI planner could produce the same object — but it would still have to pass the same validation and review flow.
Can a routine undo what another one did?
Only if you write one. Pausing or deleting a routine prevents future execution; it does not restore prior device settings. Create a second routine for the reversal — for example, unplugging turns Do Not Disturb back off.
Why is there a permanent notification?
Android requires a visible foreground service to observe charging and battery changes. It carries a Pause monitoring action. If you only use time-based routines, you will not see it.
What happens if an action fails midway?
Remaining actions stop and Activity records a partial run with the count that succeeded. Nothing is rolled back. Permissions are verified before the first action, so a missing grant blocks the whole routine rather than half-applying it.
Will my routines move to a new phone?
No. Auto-backup and device transfer are deliberately excluded, which is the trade-off for keeping everything in private app storage with no cloud service behind it.
My 10 pm routine fired at 10:04. Why?
Exact alarm scheduling is optional special access. Without it Android batches the alarm and may delay it. Grant precise timing in Settings, or accept a few minutes of drift.