Some MCP servers need an OAuth sign-in. When you start that sign-in from the phone (Extensions > MCP servers), the daemon returns an authorization link and the app opens that page in the phone's browser. The sign-in completes only if the daemon's OAuth callback address is reachable from that browser. That address normally points to the PC (a loopback address of the daemon), so a browser on the phone usually cannot reach it. If the page ends in an error or never finishes, sign in to that server from the desktop instead.
While a sign-in is pending, the app keeps it across the short trip to the browser, even when Android drops the app's connection to the daemon meanwhile, and shows a Signing in panel when you come back. You can cancel a pending sign-in there. The app does not use Factory's own OAuth for itself; see tos.md.
- The daemon must be running and reachable. The phone cannot start it; the PC must be on and the
daemon supervised (
Start-DroidDaemon). - The PC helper is for Windows PowerShell 5.1 or 7. On other systems start
droid daemonand Tailscale Serve by hand (setup.md). - Sessions with no messages are not listed by the daemon until the first message. More than 100 sessions modified in the same second cannot be paged completely (daemon API limit).
- Archived sessions cannot be resumed until you unarchive them.
- Terminals belong to the connection that created them. After a reconnect the app lists them again
and shows the saved output; the PC shell is
cmd.exe. - Worktree sessions are created by the daemon under
~/.factory/worktreesand the app never removes them. Folder trust, once granted, cannot be withdrawn from the app. - Mission sessions can use many credits. The app asks for confirmation before it creates one. Mission Control shows the state of a Mission; it does not replace the desktop for long runs. Missions have not been exercised with real runs.
- File search in a session's workspace shows at most 50 results.
- Release builds connect over
wss://only, so a plainws://daemon works only in a debug build (security.md). - Android 15 limits how long the foreground service may run. It pauses and restarts the next time you open the app. Stay connected costs some battery.
- Android may pause the app in the background. Turn on Stay connected and exempt the app from battery optimisation (notifications.md); some vendors add their own restrictions (troubleshooting.md).
- Camera apps such as Samsung Camera and Google Lens usually show a
droidmobile://QR code as plain text only, with no button that opens the app. Use the in-app Scan QR code or copy the text and tap Paste from clipboard (pairing.md). - The in-app QR scanner is the Google Code Scanner and needs Google Play services. Without it, use Scan from image, Paste from clipboard or manual entry.
- The app is tied to the Firebase project whose
google-services.jsonwas present at build time. A different Firebase project needs its own build. - Language support: English and Romanian.
- The bridge speaks plain HTTP; the phone only registers with an
https://address, so you must provide TLS (notifications.md). - The bridge keeps device tokens in a JSON file and suits one person or a small team, not a public service.
- The Docker image has only been checked statically; the build and run are untested on the development PC.
- Push shows a fixed text ("Open the app to see what needs your attention"), in English only. It never contains prompt or file content by design.
- A late approvals push replaces the local approvals notification and its Approve button.
- Queued push removal retries at app start and when the device comes back online.
- Droid reads hooks at start: sessions that were running before
Install-DroidHooksneed a restart to send push.
- No iOS app, no relay or cloud account, and no way to use Factory features that need Factory's own sign-in.
- No analytics or crash reporting. When something breaks, use Settings > About & diagnostics to export a redacted log and look at it yourself.