Skip to content

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.

Your machineSource + SDKs
Build + dev server
RamusAndroid emulator
Connected through adb
See the app through its browser link
Local tools, remote device. Your source, SDKs, build process, and development server stay on your machine. An adb tunnel connects them to the Ramus emulator; a browser link lets you see and control the app.

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

FrameworkAfter an edit
Expo / React NativeFast Refresh applies supported changes through Metro. Native changes require a rebuild.
FlutterRun npx ramus-cli dev reload for hot reload, or add --full for a restart.
Gradle / ComposeRun 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 status and its log output before starting another build.
  • Wrong directory or framework: pass --app-dir and --shape explicitly.
  • App installs but does not open: pass --package <applicationId> to dev if package detection failed.
  • Finished developing: npx ramus-cli dev stop stops the dev loop but keeps the session. Use npx ramus-cli session end when 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.