Check runs, read the error, restart a flow, fix an external parameter, clear a stuck data store — without opening a laptop.
Free · updates itself · your credentials never leave the device
Built around what you actually do when something breaks at 19:40 on a Friday.
Message processing logs filtered by status and time window. Opens on failures in the last 24 hours, because that is what you came for.
Search custom header properties across many pages of runs for an order or IDoc number. Results stream in as they are found, and you can stop any time.
Take a misbehaving flow out of service, or bring it back, with a confirmation that spells out exactly what will happen.
Change an endpoint, a credential name or a timeout, then redeploy — the app reminds you, because a saved value does nothing until you do.
See what is stuck, read a payload, delete one entry or the whole store. Stores holding overdue messages float to the top.
What security material is deployed, who deployed it, and which certificates expire in the next 30 days — sorted with the risky ones first.
Start a flow, stop a flow, save a parameter, delete an entry, delete a store. Everything else is strictly read-only, and each destructive action names exactly what it will affect before you confirm.
One service key is all it takes. No backend, no middleware, no account to create.
api) → Service Keys → Create. Copy the whole JSON.The app checks GitHub releases, downloads the new APK internally and hands it to Android to install — no browser and no file manager. Android shows its own confirmation, which no app can skip.
If a screen returns 403, the token is fine but the service key is missing one of these. Add it in the BTP cockpit and reconnect.
| Screen | Role collection |
|---|---|
| Runs, System Log, Data Stores | MonitoringDataRead |
| Integration Flows (view) | WorkspacePackagesRead |
| Start / stop a flow | WorkspaceArtifactsDeploy |
| Edit external parameters | WorkspaceArtifactsEdit |
| Delete data store entries | DataStoresConfigure |
| Credentials | CredentialsRead |
Short answer: on your phone, and nowhere else.
Client secrets are stored in the Android Keystore (AES-GCM with RSA-OAEP key wrapping) or the iOS Keychain — never in plain files.
Android backup is switched off for the app, so the credential store cannot be pulled off the device with adb backup.
The app talks to your SAP tenant and to the GitHub releases API. There is no analytics, no telemetry and no third service.
Tokens, secrets and passwords are stripped out of any error message before it reaches the screen.
The ones that come up most often.
The runtime URL, ending in /api/v1. In the service key that is the top-level url field — not the one inside the oauth block, which is the authentication host. The app picks the right one automatically when you paste the key.
It undeploys the runtime artifact. SAP Cloud Integration has no pause — the flow stops processing immediately, and starting it again is a fresh deploy from its package. The confirmation dialog says exactly this before you commit.
A changed parameter only reaches the running flow after a redeploy. The app shows a REDEPLOY button right after saving for that reason.
SAP cannot filter on custom header properties server-side, so each message has to be fetched individually. Narrow the time window and use the “Failed only” filter. Results appear as they are found and you can stop at any point.
No — and neither can any other tool. SAP never returns secret values through the API. The Credentials screen tells you what exists, who deployed it and when certificates expire.
Android always shows an install confirmation for an app that is not a managed device owner. That prompt cannot be removed — it is the OS protecting you. The first time you also grant “install unknown apps” once, and the app takes you straight to the right settings page.
The codebase is cross-platform and iOS is ready to compile. One difference is permanent: Apple does not allow an app to install its own updates, so on iOS new versions would arrive through the App Store or TestFlight instead.