v0.8.0 · ANDROID 8.0+

Write one sentence. Get a working Android routine.

Rulomi turns a written instruction into up to four typed triggers, up to four conditions, and up to eight sequential actions. It works on the device, or with the optional AI planner when the wording is beyond its parser, shows you exactly what it understood, then runs on real Android APIs.

  • AlarmManagerschedules
  • Foreground monitorcharging, battery, Wi-Fi, Bluetooth, headphones, motion, proximity, light, rotation
  • Usage accessan app opening or closing
  • Notification accessanother app's notifications
NO ACCOUNTNO API KEYOPTIONAL AI PLANNER
Rulomi home screen with the create-a-routine card, the enabled-routines and successful-runs counters, and a saved routine Rulomi home screen with the create-a-routine card, the enabled-routines and successful-runs counters, and a saved routine
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; the AI planner may offer the part it could place, which you review like any plan.

Describe step with an instruction typed into the prompt field, the Build my routine button, and three starting pointsDescribe step with an instruction typed into the prompt field, the Build my routine button, and three starting points
DESCRIBE

Say what should happen, in a sentence

Type up to 2,000 characters, or start from a preset. The on-device parser tries first; with your consent, wording it can't place goes to the optional AI planner. Either returns a plan or a message explaining what to revise.

Review and enable step showing the charging trigger, a between-times condition, three numbered actions, and what the phone is left set toReview and enable step showing the charging trigger, a between-times condition, three numbered actions, and what the phone is left set to
REVIEW & ENABLE

Check exactly what it understood

See the parsed WHEN, any ONLY IF, and the numbered THEN list, and what the routine leaves the phone set to. Rename it, grant the specific access Android requires, or save it paused.

Routine sheet with the trigger and actions, Run now, Why isn't it working?, a home screen shortcut switch, Edit prompt, and Delete routineRoutine sheet with the trigger and actions, Run now, Why isn't it working?, a home screen shortcut switch, Edit prompt, and Delete routine
RUN & AUDIT

Run it, change it, and see why it did or didn't

Edit, pause, delete, or Run now with a confirmation. With the AI planner on, you can also type a change such as “make it 10 pm” and apply it to the routine as it stands. Activity records successful, skipped, blocked, and partially completed runs, including how many actions succeeded, and each routine's Why isn't it working? checks what could stop it.

INSIDE THE APP

Every routine, every run, in plain view

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 open YouTube turn on auto-rotate and put it back when I leave
Every weekend at 09:30 notify me "Make time for yourself"
Every day at 11 pm set brightness to 10% only if charging and battery is above 50%
Every day at 9 pm put my phone on vibrate and set screen timeout to 30 seconds, restore everything after 2 hours
When WhatsApp notifies me, read it out
When I plug in my headphones set media volume to 40% if on Wi-Fi or my car is connected, and between 10 pm and 7 am
When it gets dark set brightness to 20% and put it back when it ends

Use an explicit am/pm time or HH:mm. Separate actions with and, and then, then, a comma, or a semicolon. Conjunctions inside quoted notification text are preserved. Conditions go at the end, after if, only if, while, or when, and combine with and; one group of them may be joined by or if a comma and and set it apart from the rest. Percentages must be in range. In a notification routine you pick the app on the review screen.

SUPPORTED CAPABILITIES

Twenty-nine triggers, eighteen conditions, and twenty-three actions, up to eight per routine

TRIGGERS
A time of dayevery day, weekdays, weekends, or named days
Every so oftenevery 15 minutes to 12 hours, in the hours and on the days you choose
Charging startson entry
Charger disconnectson entry
Battery drops belowa percentage
Wi-Fi connectsany network with internet
Wi-Fi disconnectson entry
Bluetooth device connectsany device, or one you pick
Bluetooth device disconnectsany device, or one you pick
Headphones plugged inwired or USB-C
Headphones unpluggedwired or USB-C
An app posts a notificationany app, or one you pick, optionally with given words
An app opensone you pick, screen on
You leave an appanother app or the home screen comes to the front
A shakethree sensitivities, screen on
Face downscreen on
Face upscreen on
Proximity sensor coveredscreen off too, where the sensor allows
Proximity sensor uncoveredscreen off too, where the sensor allows
The screen turns landscapefollows the screen, not the phone
The screen turns portraitfollows the screen
It gets darklight sensor, screen on
It gets very brightlight sensor, screen on
The screen turns onon entry
The screen turns offon entry
The phone starts upafter a restart
An event in your calendar startsany, or one with given words in its title
An event endsfrom the calendars you tick
Another app starts itTasker or MacroDroid, with the routine’s key
More than oneup to four joined by “or”, or none to run it only by hand
CONDITIONS
Chargingor not charging
Batteryabove, or below, a percentage
Wi-Fi connectedor not
Headphones plugged inor not
Bluetooth device connectedany, or one you pick
Between two clock timesovernight allowed
On chosen daysthe days you name
An app has a notification showingany app, or one you pick
Screen onor off
Phone unlockedor locked
Ringer modenormal, vibrate, or silent
Do Not Disturb onor off
Battery saver onor off
Something playingor nothing playing
Airplane mode onor off
The screen is landscapeor portrait
An app is openone you pick
In an eventor not busy, from your calendar
Combiningup to four, all must hold, one may join two to four with “or”, and “unless” turns one around
ACTIONS
Local notificationquoted text, with up to two buttons and {battery}, {time} or {date}
Spoken textthe phone's text-to-speech voice
Volumemedia, ring, notification, or alarm, 0–100%
Ringer modenormal, vibrate, or silent
Screen brightness0–100%
Screen timeout15 seconds to 2 hours
Flashlighton or off
Auto-rotateon or off
Enable Do Not Disturbpriority interruptions
Disable Do Not Disturbown rule on Android 15+
Waitup to 6 hours in total per routine
Dismiss notificationsone app's, never every app's
Run another routineone you pick, shown as started by this one
Pause a routineanother one, or this one as its last step
Enable a routineone you pick
Mediaplay, pause, next or previous track
Vibrateup to 10 seconds
Play a soundyour notification sound, ringtone or alarm
Open an appone you pick
Open a web pageby its address
Open a settings screenWi-Fi, Bluetooth, volume and eight more
Web requestyour message, to an https address you type
Send an intentfor Tasker or MacroDroid
Sequential chainingup to 8 actions
Restore after…puts the changed settings back
Put it back when it endswhen the app closes, charging stops, the link drops, or the light changes back
NOT IMPLEMENTED IN 0.8.0
LocationNaming a specific Wi-Fi networkReplying to messages or notificationsApp activity other than a notification or an app opening or closingAccessibility UI workflowsArbitrary scriptsNested conditions, or more than one “or” group in a routine's conditionsHinge angleStep counting and activity recognition

Conditions combine with “and”, and one of them may be a group of two to four joined by “or”, set apart from the rest with “, and”, as in “if charging or on Wi-Fi, and on weekdays”. A mix that reads two ways is refused rather than guessed, and so is a condition the trigger makes impossible, such as battery below 20% as the trigger with battery above 50% as the condition. A sensor reading can be a trigger and never a condition. Rulomi cannot reply to a notification or press its buttons, because that is the step where an app starts acting as you inside other apps, and it is left out deliberately. This is not Tasker or MacroDroid parity; see how they compare.

To see them working together, start from a recipe: Do Not Disturb at night, auto-rotate only for certain apps, car Bluetooth volume, or reading WhatsApp messages aloud. Each is one sentence you can paste; see all the recipes.

PRIVACY

Internet access exists for one optional feature

Routines, run history, and everything else you create stay in private app storage. The app sends something only if you allow the optional AI planner, which it asks the first time you build a routine: a description the on-device parser can't place, or a change you type for a saved routine together with that routine as it stands, along with a random install ID and the app version. It travels over HTTPS to our server, which keeps a keyed hash of the network address for two days to limit use, and then to Anthropic's API to be interpreted. You can switch it off in Settings at any time. The only other way your routines leave the phone is a backup file you export yourself. There's still no account and no API key to supply. Read the full privacy policy for the exact data flow.

Routines and history stay in private app storage
The most recent 100 run records are retained. Uninstalling or clearing app storage removes them, along with your routines.
Cloud backup and device transfer are excluded
Data extraction rules opt out of Android auto-backup and device transfer. The one way routines leave the phone is the export in Settings → Your routines, which writes them to a file you choose. That file is plain JSON and is not encrypted, and it holds each routine's description, the notification and spoken text you wrote, the words a notification routine looks for, and the name and address of any Bluetooth device and the label and package of any app a routine names. Run history is not in it.
Notifications are read on the phone and let go
With notification access, each notification's app, title, and text are compared with your enabled notification routines on the phone. None of it is sent to our server or to Anthropic or put in a backup file, and Activity records only which app triggered a run, never what the notification said. The one time a notification's words touch storage is a routine that waits, or speaks, before a step that uses them, which keeps the values its later steps need until that run ends or is cancelled.
Permissions are requested per routine, not up front
Notifications, notification access, usage access, DND access, Bluetooth, and system-settings write are only asked for by the routines that need them. The motion, proximity, and light sensors and the screen's rotation need no permission. 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, battery, Wi-Fi, Bluetooth, headphone, sensor, screen-rotation, and app triggers run a persistent notification with a Pause monitoring action, which pauses event and notification routines while scheduled ones stay enabled. The monitor takes no wake locks and does no aggressive polling. Headphone triggers watch the audio outputs, so a USB-C headset or adapter, or a USB audio device such as a dock or DAC, counts, not only the 3.5 mm jack.
RUN FROM ELSEWHERE
A tile, shortcuts, and other apps
A Quick Settings tile runs the routine you choose in Settings. Home-screen shortcuts, for up to four routines, open the routine's run confirmation. Another app can ask Rulomi to run a routine with the com.rulomi.action.RUN_ROUTINE intent, which also opens the confirmation, so nothing outside the tile runs a routine without your tap. Every entry point goes through the same permission and condition checks.
SENSORS
Motion and light only while the screen is on
Shake, face down, and face up read the accelerometer, which Android stops delivering once the screen is off and the phone suspends, and Rulomi will not hold a wake lock to keep it. A shake in your pocket does nothing, and turning the phone over with the screen off is noticed when the screen next comes on. Proximity is usually a wake-up sensor, which Rulomi checks at runtime, and where it is one a proximity routine keeps working with the screen off. Android also uses that sensor during calls, so a proximity routine fires when the phone goes to your ear. The light sensor follows the accelerometer's rule and is read only while the screen is on, and a phone lying face down reads as dark. Landscape and portrait come from the screen's own rotation rather than a sensor, so with auto-rotate off they fire only when an app turns the screen.
NOTIFICATIONS
A listener Android binds only with access
Notification routines use a NotificationListenerService that Android binds only while notification access is granted, and the monitor notification stays up beside it as the visible sign that Rulomi is listening. The listener ignores Rulomi's own notifications, work-profile and secondary-user notifications, ongoing notifications, group summaries, and media controls, and a routine fires at most once a minute. When Android unbinds the listener, Rulomi asks to be rebound on every resume and every monitor start.
EDGE SEMANTICS
Fires on entry, rearms on exit
Enabling a routine captures the current state, so it will not run merely because the condition is already true. A sensor state cannot be read without a listener, so the first reading after enabling records the state without firing. A Bluetooth link that drops and re-establishes while connecting settles for five seconds, so one handshake fires a routine once. A device with classic Bluetooth, as most headphones, cars, and speakers have, is connected by its classic link alone; earbuds that play audio over LE Audio alone aren't seen connecting yet.
WAITS AND RESTORE
Later steps run from an alarm
A wait hands the rest of the run to an AlarmManager alarm, so the steps after it run with the app closed, and permissions and conditions are checked again when it ends. Pausing, editing, or deleting the routine cancels the wait. Restore captures the settings when the run starts and puts them back through the same kind of alarm; it overwrites anything you changed by hand in the meantime, and it does not happen if that alarm is lost.
PUT IT BACK WHEN IT ENDS
The monitor watches for the end
A routine that starts when something begins can put the settings it changed back when that ends: the app leaves the front, charging stops, the battery is back above the level, the connection drops, the phone is no longer face down, the sensor is uncovered, the screen turns back to portrait, or the light changes back. The settings are captured when the run starts and kept in private storage, not in a backup. Run now never waits for an end, and pausing, changing, or deleting the routine puts them back straight away. If event monitoring was stopped, they go back when it next checks after restarting.
ROUTINE CHECKS
Read on the phone, sent nowhere
Every routine shows what it leaves the phone set to. Before one is saved, Rulomi warns when two of its steps set the same thing in the same moment, or when another enabled routine fires at the same moment and leaves the setting elsewhere, unless their conditions can never both hold; enabling it anyway takes a tick. A switch turned straight back with nothing between is refused, since nothing would change. Why isn't it working? checks access, event monitoring, the next alarm, battery management, and the last run, and offers the fix where there is one. It sends nothing and stores nothing new.
INTERRUPTIONS
Force-stop halts automation
Execution resumes when the app is opened again. OEM battery management and foreground-service restrictions can also interrupt monitoring. A scheduled run that arrives five minutes or more late says so in Activity, and one that never arrives is recorded as missed and rescheduled. Three late or missed runs in a row, or three monitor restarts by the system, put a card on Home that links to Android's battery-optimization list.
FAILURE MODE
Stops, records, does not roll back
Permissions are checked before any action executes, and then conditions; a run a condition stops is recorded as skipped. 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. Each volume action names its stream, and “volume” alone means media. A volume set while Do Not Disturb or the ringer mutes that stream is still stored, and applies once the stream is unmuted. Android treats silent and vibrate as Do Not Disturb states, so ringer mode and the ring and notification volumes need DND access. On Android 15+ DND maps to an app-owned automatic rule that cannot override yours or another app's; on older versions it changes the phone's DND itself.

Questions worth answering before you install

Is there an LLM in here?
Optionally. Rulomi first tries a deterministic on-device parser, which handles a fixed set of English phrases and does not generalise or guess. The first time you build a routine, it asks whether it may use the AI planner; if you agree, a description the parser can't place, or a change you type for a saved routine, is sent over HTTPS to our server and then to Anthropic's API to be interpreted. Decline, or switch it off in Settings, and the parser handles everything. Either way, the typed Automation model keeps planning separate from execution, so you review the same plan and grant permissions before anything runs.
Can a routine undo what it changed?
Yes, in two ways. End the description with “restore everything after 2 hours” and the volumes, brightness, ringer mode, Do Not Disturb, screen timeout, and auto-rotate the run changed go back to what they were when it started. For a routine that starts when something begins, such as an app opening, charging, or a connection, “put it back when I leave” or “put it back when I unplug” puts them back when that ends instead. Notifications, speech, and the flashlight cannot be put back, so the flashlight needs a wait and “turn off the flashlight”. Pausing or deleting a routine stops its future runs; settings waiting to be put back when something ends go back straight away, but a timed restore does not happen.
Why is there a permanent notification?
Android requires a visible foreground service to observe charging, battery, Wi-Fi, Bluetooth, headphone, motion, proximity, light, and screen-rotation changes, and which app is in front. Notification routines keep it up as well, so there is always a visible sign that Rulomi is listening and one control that stops it. Its Pause monitoring action pauses event and notification routines. 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?
Yes, if you export them. Settings → Your routines writes every routine to a file you choose, and importing that file on the new phone brings them back paused, so you review each one before enabling it. An app a notification routine names that is not installed on the new phone is called out on the routine's sheet. Run history stays behind. Android's cloud backup and device transfer remain excluded, so nothing moves unless you export it.
I sideloaded Rulomi from this site. How do I move to Google Play?
Uninstall the copy from this site first. It was signed with a debug key and the Play version is signed with a different key, so Android will not install one over the other. Uninstalling removes its routines and run history. A test build of 0.5.0 can export them first in Settings → Your routines, and the Play version imports the file. 0.4.3 has no export, so write down each routine's description before you uninstall and create them again in 0.5.0 after installing from Google Play.
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.