Local development
Edit code on your machine and run it on a Ramus emulator. The CLI connects the remote device to your local Android tools through an adb tunnel.
You need a signed-in API key, local Android platform-tools (adb), and your project's build tools. Trial keys cannot open tunnels. Set up your key using Agents and CLI.
Build + dev server
Connected through adb
Start the dev loop
From your app directory:
npx ramus-cli dev
Ramus detects Expo, React Native, Flutter, or Gradle, starts or reuses a session, and runs the framework's development process. The first build runs locally; allow it time to finish.
For a monorepo or an ambiguous project, specify the app directory and framework:
npx ramus-cli dev --app-dir apps/mobile --shape expo
Use npx ramus-cli dev status to check progress, recent logs, and the tunnel state. Run npx ramus-cli session share to get a browser link to the device.
Apply changes
| Framework | After an edit |
|---|---|
| Expo / React Native | Fast Refresh applies supported changes through Metro. Native changes require a rebuild. |
| Flutter | Run npx ramus-cli dev reload for hot reload, or add --full for a restart. |
| Gradle / Compose | Run npx ramus-cli dev reload to reinstall and relaunch the app. |
Use your project's normal SDK and dependency setup. Ramus supplies the emulator; the dev loop still builds with your local toolchain.
Use adb directly
For Android Studio or your own scripts, start a session and open the tunnel:
npx ramus-cli adb
The response includes a device serial such as 127.0.0.1:53124. Use the actual returned serial with adb -s <serial> to target this emulator, especially when other devices are connected. You can install an APK, inspect logcat, or use adb reverse to reach a local development server from the app.
Avoid adb root, adb unroot, adb reboot, and adb reverse --remove-all on the tunneled device; these can break the connection or end the session. After reinstalling an app, npx ramus-cli app launch brings it back to the foreground.
Stop or troubleshoot
- Build still running: check
dev statusand its log output before starting another build. - Wrong directory or framework: pass
--app-dirand--shapeexplicitly. - App installs but does not open: pass
--package <applicationId>todevif package detection failed. - Finished developing:
npx ramus-cli dev stopstops the dev loop but keeps the session. Usenpx ramus-cli session endwhen the device is no longer needed.
For a tunnel opened directly with adb, close it with npx ramus-cli adb --close. Sessions expire after 30 minutes without input, or 60 minutes while an adb tunnel is open.