Field SOP
Field SOP

Put an agent on your phone: two routes, one red line

A hands-on SOP for putting a phone AI agent onto real hardware, offering two routes side by side. The first section decides whether it is worth doing at all: it fits a spare handset used to test whether a phone can genuinely run errands, and it does not fit a daily driver, an unattended long task, or anything involving payment, password changes, sending messages or account settings. Route A is OmniBot's on-device app form: install the APK from Releases, then configure AI capability, provider and scene models in settings, where Memory embedding strictly needs an embedding model and other scenes are best served by multimodal or vision models; the Alpine environment initializes on startup; sending a skills repository link to the assistant installs skills; scheduled tasks run subagent flows while alarms only remind; an optional Remote Codex bridge lets the phone scan a code to borrow a computer's Codex; and an optional WebUI takes an address and token from the in-app local service, defaulting to port 8899 with no trailing path. Development requires Flutter 3.47.2+, JDK 17+, Node.js 20.19+ or 22.12+ and pnpm 10.28.0. Route B is OpenGUI's framework form reached through DeepSeek Harness: the hard prerequisites are an Android 11 (API 30) or newer device or emulator plus USB debugging and accessibility permission; the shortest path is pasting the official install prompt to Codex, after which the installer verifies SHA-256, installs only the OpenGUI plugin and preserves unrelated plugins and settings; version discipline supports DSH 0.1.0-rc.7, 0.1.0-rc.8, 0.1.1-rc.1 and 0.1.1-rc.2 with new installs defaulting to 0.1.1-rc.2, does not support 0.1.2-alpha.4, and refuses a downgrade from a 0.1.1 RC to a 0.1.0 RC. Once a real device is connected, a single prompt verifies the setup. The safety section covers a spare device, least privilege, a hard rule of per-action human confirmation, trusted LAN only, tokens that never leave the machine, retained logs for audit, and short tasks before long ones, backed by a pre-flight checklist and a seven-row pitfall table. Licence boundaries get their own section: OmniBot requires a commercial licence for commercial use since AGPL v3 covers only non-commercial and personal, educational or research use, while OpenGUI is BSL 1.1 for non-production use only. The article also notes it does not overlap with the site's desktop computer-use build SOP, and invents no pricing or limits absent from the official docs, writing instead that the vendor governs.

Published September 23, 20269 min read
<!-- android-gui-agent-sop | sop | Put an agent on your phone: two routes, one red line -->

Treating a phone agent as a toy is easy; using one safely is not. A desktop agent that slips may delete a file; a phone agent that slips may send a WeChat message or tap a payment confirmation for you. This piece gives a decision framework, two routes, a pitfall table, and one red line.

Route A: OmniBot is an on-device app: install one APK and it runs inside the phone. Route B: OpenGUI is a framework reached through DeepSeek Harness. Compare with the site's Mobile GUI Agent Five-Way Comparison. This covers only installing and starting a phone-side agent, so it does not overlap with the site's Desktop Computer Use Build SOP, whose action space is the browser and local apps.

Decide First: Should You Run This on a Real Phone

One test decides it: if this device goes wrong, can you afford the loss?

A phone GUI agent holds far more authority than a desktop agent: it needs screenshots to "see" and cross-app tap injection to "operate", carried in OpenGUI through the Android AccessibilityService. One misjudgment exposes every logged-in account on that phone.

Fits a first run:

  • You want to verify whether a phone agent can do real work, and you have a spare phone.
  • Your work is repetitive with clear rules: bulk form filling, cross-app information gathering, regression testing, social media drafts.

Avoid on a real phone:

  • Your primary phone. Exposing every account and message to a button-tapping program is a bad trade.
  • Unattended long tasks. OpenGUI's README says that for long-running tasks, "reliability still needs more real-world testing."
  • Payment, password changes, messaging, or account settings. Every route must keep a human confirmation step; OpenGUI lists "human confirmation before publishing, messaging, or account changes" as recommended, not optional.

Two Routes Compared

DimensionRoute A: OmniBotRoute B: OpenGUI
FormOn-device app (Android Kotlin + Flutter)Framework plus a DeepSeek Harness plugin
InstallAn APK from the Releases pageOne prompt handed to Codex
PrerequisitesAn Android phone plus an OpenAI-compatible LLM credentialAndroid 11 (API 30) or newer, USB debugging, AccessibilityService
Computer neededNo, it runs on the phoneYes (macOS plugin; manual package on Linux or Windows)
Entry pointsSkills repository, scheduled tasks, built-in terminalPlan Supervisor, Executor Graph, models split by role
Remote dispatchRemote Codex bridge (borrows your computer's Codex)Feishu / Telegram / Discord / REST standby dispatch
LicenseAGPL v3 (non-commercial only) plus a commercial licenseBSL 1.1 (non-production use only)

Take A to validate one thing on a phone; take B for an orchestration backend, which splits planning, execution, summarization, and retry into layers.

Route A, Steps 1 to 3: Install, Configure, Add Skills

Step 1: Install the APK. Download it from the Releases page (the README cites omnimind-ai/OpenOmniBot/releases). No minimum Android version is stated; treat the Release notes as authoritative.

bash
git clone https://github.com/omnimind-ai/OpenOmniBot.git
cd OpenOmniBot
cd ui && flutter pub get
bash
cd ..
./gradlew :app:installDevelopStandardDebug -Ptarget=lib/main_standard.dart

Build requirements per the README: Flutter SDK 3.47.2+, JDK 17+, Node.js 20.19+ or 22.12+, and pnpm 10.28.0 for WebUI.

Step 2: Configure the app (Settings, left sidebar). Order matters:

  1. Configure AI capabilities.
  2. Configure the AI provider (OpenAI-compatible: base URL, key, model name).
  3. Open scenario model settings and assign a model per scenario.
  4. The step people skip: Memory embedding requires an embedding model; without one, memory does not work. Other scenarios should use multimodal or vision models, since a phone agent must "see" the interface.
  5. The Alpine environment usually initializes on startup; it is what lets a Linux toolchain run on a phone.

Step 3: Add skills. Send the skills repository link to the in-app assistant and let it install; the README recommends https://github.com/OpenMinis/MinisSkills. Then toggle skills in the skill repository.

Route A, Steps 4 to 6: Run Tasks and Two Optional Extensions

Step 4: Run a task. Scheduled tasks execute subagent flows; alarms are reminder-only. A subagent given a full task behaves like a full agent, and the app ships a Workspace, browser, and terminal.

Step 5 (optional): Remote Codex bridge. To let the phone use Codex on your computer, run this where the Codex CLI is installed and logged in:

bash
npx @thuocean/codex-bridge

Choose the LAN address and token mode in the terminal UI, then scan the QR code from the app's Codex settings. This exposes your computer's execution capability to the phone: trusted LAN only, never a public binding.

Step 6 (optional): WebUI and local service. Open Settings > Local Service, enable it, and copy the address and Token. The default port is 8899; use the address the app shows.

bash
cd webchat
pnpm install --frozen-lockfile
VITE_WEBCHAT_PROXY_TARGET=http://192.168.1.20:8899 pnpm dev

Two README pitfalls: do not append /webchat to the address, and use the port the app displays, not the sample from the docs.

Route B, Step 7: Wire OpenGUI into DSH (Get the Version Right)

Prerequisites, from the README's "Current Limitations": an Android 11 (API 30) or newer device or emulator; USB debugging plus the AccessibilityService permission; and for the DSH plugin route, macOS with Node.js 22.19+ or 24+.

Paste the README's installer prompt into Codex verbatim:

text
Install and run the OpenGUI installer Skill from https://github.com/Core-Mate/OpenGUI/tree/main/deepseek-harness-plugin/skills/opengui-coremate-install for my DSH web profile. Install the latest stable release. Proceed autonomously, and only pause when I need to authorize or select a phone, add or select a DSH workspace, or provide fallback visual-model credentials.

The installer downloads the release package and checksum, verifies SHA-256, installs only the OpenGUI plugin, starts and opens DSH as needed, and preserves unrelated DSH plugins and settings. It reports whether it reloaded a managed DSH or whether you must quit an existing process and rerun. On Linux or Windows, use the manual package install in the plugin README.

Version discipline is where people trip:

ItemDetail
Supported versionsDSH 0.1.0-rc.7 / 0.1.0-rc.8 / 0.1.1-rc.1 / 0.1.1-rc.2
Default for new installs0.1.1-rc.2
Explicitly unsupportedDSH 0.1.2-alpha.4
Pinning a version--dsh-version VERSION
DowngradeNot supported from 0.1.1 RC down to 0.1.0 RC

DSH 0.1.0 RCs cannot read the credential store written by 0.1.1 RCs, so the installer refuses that downgrade before changing any files and recommends a separate DSH home. Existing installs, workspaces, model settings, and phone authorizations are preserved, so do not delete files to "try a downgrade."

Route B, Steps 8 to 9: Connect a Phone, Split Models by Role, Standby Dispatch

Step 8: Connect a real phone and run the first task. Select a DSH workspace, connect an authorized Android phone, then send:

text
@OpenGUI Open Settings and report the Android version

This read-only task proves the chain works; open write actions only after it passes.

Source-behavior note (the README says this is not a release claim): currently each DSH session admits only one OpenGUI task, non-conflicting phone sets can use separate tabs, and the managed browser is globally serial. Do not design around parallelism.

Step 9: Split models by role -- the cost lever.

  • High-performance profile: the latest Claude Opus family across planning, supervision, review, and vision. Best quality, highest cost.
  • Cost-saving mixed profile: Qwen 3.6 Plus for text-side roles (Planner, Supervisor), Doubao Pro for VLM execution.

Because planning and VLM execution can sit with different providers, "expensive model plans, cheap model executes" is a first-class option. The README says the mixed profile usually cuts cost to roughly one tenth to one fifteenth of an all-Opus setup. For GUI execution the recommended order is Doubao VLM, Qwen VLM, OpenAI vision models, then Grok vision models (still experimental). Pricing and policy vary by version and region; whichever provider you pick, the model must support both image input and tool calling. Related movement: Alibaba Qwen Intelligence Launch Hotspot.

Step 10 (optional): Standby dispatch. The backend ships Feishu / Telegram / Discord / REST API entry points and a standby dispatch path: keep the phone on a persistent standby connection to dispatch work remotely, with structured results returned to the backend.

Safety: One Red Line, Five Rules

One red line: publishing, sending messages, changing passwords, changing account settings, and any payment action must be confirmed by a human, every single time. Not "authorize once and let go" -- a checkpoint every time. Breaking it wipes out the value of every step above.

Five rules:

  • Use a spare phone, not your primary one, and isolate accounts where you can.
  • Grant only necessary permissions. Avoid accessibility if you can; before granting it, think through what it can see.
  • LAN and allowlists: run the bridge and local service only on a trusted LAN. Tokens stay put -- not in chats, not in screenshots, not in repositories.
  • Logs and audit: keep an operation record. OpenGUI's Summarizer produces structured results usable as an audit basis.
  • Short tasks before long tasks: start with read-only actions, then open up write actions gradually.

Pre-Launch Checklist and Pitfall Table

  • The device is a spare phone, with accounts isolated as far as practical
  • Only necessary permissions are granted; accessibility is not granted casually
  • Payment / messaging / password / account-setting actions require per-action human confirmation
  • The bridge and local service run only on a trusted LAN, and tokens have not leaked
  • Operation logging is on and traceable
  • A read-only short task validated the chain before write actions opened up
  • The tool's license matches your use case

Pitfall quick reference, with mitigations:

PitfallSymptomMitigation
Wrong DSH versionInstalled an unsupported build such as 0.1.2-alpha.4Pick from the supported list; pin with --dsh-version
Credential store downgradeGoing back from 0.1.1 RC to 0.1.0 RC errors outDo not downgrade; use a separate DSH home
Incomplete permissionsThe phone connects but actions do not executeConfirm USB debugging and AccessibilityService
Only a plain LLM configuredIt chats but "cannot see" the interfacePhone agents need a vision / VLM model
Forgot the embedding modelOmniBot's memory is unavailableMemory embedding is mandatory
Bridge on the public internetYour computer's execution capability is exposedTrusted LAN only; choose the token mode carefully
Long task out of controlAfter hours, behavior drifts and results stop reproducingShort first, long later; confirm at checkpoints; keep logs

The first three rows apply to Route B, the middle two to Route A, the last two to both.

License Boundaries: Read It Before Company Workflows

OmniBot uses segmented dual licensing. The open-source side is GNU AGPL v3, free only for non-commercial use or personal, educational, or research purposes, and the license text prohibits use by any organization, putting organizations outside the free scope even for research. Commercial use requires a commercial license signed with the maintainer in advance; so does avoiding AGPL v3's source-disclosure obligation. Do not compress this into "an AGPL open source project" or "free for commercial use." For repository data, see the site's OmniBot Open-Source On-Device Agent.

OpenGUI is BSL 1.1 (Business Source License). The source is visible; you may copy, modify, distribute, and use it for non-production purposes; production use, commercial use, hosted services, and integration into commercial products require a separate commercial license from the maintainer. It is public source, but not OSI-approved open source until the Change Date.

Read the license before wiring either tool into a company workflow. For personal validation on a spare phone both routes work; once company business or commercial benefit is involved, check the license text first.

FAQ

Q1: I only have my primary phone. Can I still run this? Technically yes, but not advisable: a phone agent holds accessibility plus cross-app operation, so one misjudgment covers every account on the device. If you insist, start with read-only short tasks plus per-action confirmation.

Q2: I configured a model, so why can the agent still not "see" the interface? You likely configured a plain text LLM. A phone GUI agent's input is screenshots, so it needs a vision-capable (multimodal / VLM) model.

Q3: Is Memory embedding really mandatory? Yes. The OmniBot README states that Memory embedding needs an embedding model; without it the memory feature is unavailable.

Q4: Can I downgrade DSH to the older version I am used to? No, not from 0.1.1 RC down to 0.1.0 RC: 0.1.0 RCs cannot read the credential store written by 0.1.1 RCs, so the installer refuses before changing any files and recommends a separate DSH home. Pin a supported version with --dsh-version instead.

Q5: Can it run a phone task and a browser task at the same time? Not under the current source: the README states that each DSH session admits only one OpenGUI task and that the managed browser is globally serial, adding that "this source behavior is not a release claim."

Sources

  • OmniBot repository README and Releases (omnimind-ai/OpenOmniBot): installation, configuration, Skills, scheduled tasks, Remote Codex bridge, WebUI service; collected 2026-09-23.
  • OpenGUI repository README and Releases (Core-Mate/OpenGUI): DSH plugin install, supported versions and downgrade policy, first-task example, model profiles, standby dispatch, limitations, license; collected 2026-09-23.
  • DeepSeek Harness plugin docs (deepseek-harness-plugin/README.md, docs/): installer behavior, manual package paths, use cases; collected 2026-09-23.
  • Licenses follow each repo's root LICENSE: OmniBot is segmented dual licensing (AGPL v3 plus commercial); OpenGUI is BSL 1.1.
  • AI Cake: Mobile GUI Agent Five-Way Comparison, OmniBot Open-Source On-Device Agent, and Desktop Computer Use Build SOP.
  • Pricing or quota not stated officially is deliberately omitted; the official sources are authoritative.

This article is AI-assisted and human-edited. Last updated: 2026-09-23

FAQ

I only have my primary phone. Can I still run this?
Technically yes, but not advisable: a phone agent holds accessibility plus cross-app operation, so one misjudgment covers every account on the device. If you insist, start with read-only short tasks plus per-action confirmation.
I configured a model, so why can the agent still not "see" the interface?
You likely configured a plain text LLM. A phone GUI agent's input is screenshots, so it needs a **vision-capable (multimodal / VLM) model**.
Is `Memory embedding` really mandatory?
Yes. The OmniBot README states that `Memory embedding` needs an embedding model; without it the memory feature is unavailable.
Can I downgrade DSH to the older version I am used to?
No, not from `0.1.1` RC down to `0.1.0` RC: `0.1.0` RCs cannot read the credential store written by `0.1.1` RCs, so the installer refuses **before changing any files** and recommends a **separate DSH home**. Pin a supported version with `--dsh-version` instead.
Can it run a phone task and a browser task at the same time?
Not under the current source: the README states that each DSH session admits only one OpenGUI task and that the managed browser is **globally serial**, adding that "this source behavior is not a release claim." **Sources** - OmniBot repository README and Releases (`omnimind-ai/OpenOmniBot`): installation, configuration, Skills, scheduled tasks, Remote Codex bridge, WebUI service; collected 2026-09-23. - OpenGUI repository README and Releases (`Core-Mate/OpenGUI`): DSH plugin install, supported versions and downgrade policy, first-task example, model profiles, standby dispatch, limitations, license; collected 2026-09-23. - DeepSeek Harness plugin docs (`deepseek-harness-plugin/README.md`, `docs/`): installer behavior, manual package paths, use cases; collected 2026-09-23. - Licenses follow each repo's root `LICENSE`: OmniBot is segmented dual licensing (AGPL v3 plus commercial); OpenGUI is BSL 1.1. - AI Cake: Mobile GUI Agent Five-Way Comparison, OmniBot Open-Source On-Device Agent, and Desktop Computer Use Build SOP. - Pricing or quota not stated officially is deliberately omitted; the official sources are authoritative.

Related

Field SOP

Hands-on SOP: One npx Line to Run DeepSeek Harness - Install, Four Modes, Trajectory Replay, and Your First Plugin

A DeepSeek Harness quickstart SOP: environment prep -> one-line launch via npx @deepseek-ai/dsh web (127.0.0.1:3080) -> mode-selection mnemonic (work in Standard / orchestrate in Code / test models in Minimal / write plugins in Creator) -> trajectory replay & fork for debugging -> your first dsh-plugin. 5 pitfalls: no production on v0.1 / audit plugins first / budget tokens (peak-hour price hike) / two network chokepoints / spartan UI is by design. Per the official repo.

Aug 15, 20267 min read
Hardcore Reviews

Five ways to put AI on a phone, three licence traps

This review compares one front only: what forms an AI agent takes on a phone, not which vendor's model scores highest. Framing is fixed at the top: everything is a representative comparison assembled from official pages, repository READMEs and public reporting rather than independent benchmarking in a common environment, and exact numbers follow each vendor's live interfaces. It also states its division of labor against three existing articles on the site, the desktop computer-use agent comparison, the agent harness comparison covering the scaffolding that wraps a model as a different layer, and the phone-harness open-source piece, and limits itself to the phone side. The five contenders are Alibaba's Qwen Intelligence, a B2B stack for OEMs; Apple Intelligence with Siri AI, a system-level self-contained loop; OmniBot, an Android-native on-device open-source agent; OpenGUI, an Android phone GUI agent framework; and MobileGym, a browser-hosted phone simulation and evaluation platform. MobileGym is called out as a different layer, an evaluation and simulation base rather than an assistant, and is not compared as a peer assistant. Three licence red lines get their own section: OmniBot's segmented dual licence of AGPL v3 plus commercial that bars use by any organization; OpenGUI's Business Source License 1.1, source-visible but not OSI open source, with an Additional Use Grant of None limiting it to non-production use and commercial licensing needed for production, converting to Apache 2.0 on the 2030-04-29 change date; and MobileGym's split licence with Apache-2.0 code but CC BY-NC 4.0 non-commercial data. All three report NOASSERTION or inaccurate licence fields through the GitHub API, so the conclusions come from the LICENSE files. Cost is explicitly declared not directly comparable: Qwen at about 2.41 dollars per thousand tasks by vendor statement, Apple not billed separately but limited to expensive models with an unpriced paid tier, and the open-source options free as software but requiring your own models and devices with possible paid commercial licensing, never converted into a single ranked figure. Apple's framing is layered by source: public launch information spanning the September 14, 2026 release with iOS 27, English-only beta, five more languages in October, 16 languages including Simplified and Traditional Chinese, mainland China outside the launch, initial unavailability in the EU on iOS, iPadOS and watchOS but availability on macOS and visionOS, and daily usage limits on server-backed features with neither quotas nor paid-tier pricing published; the vendor table's description of Apple marked as source-side framing; and the report on the China-market Qwen backbone marked as media framing and distinguished from Qwen Intelligence.

Sep 23, 202610 min read
Field SOP

No app switching: JianYing Hub from storyboard to final cut

A hands-on SOP for JianYing Hub that starts with a fitness check, giving three cases where it fits (you need a full asset-to-final-cut chain, you want batches of the same storyboard for A/B tests, or you dislike repeated export and import across apps) and four where it does not (you only lack one generated shot, you need fine multi-cam editing, your assets and data must stay local, or your budget must be precisely predictable), and noting that if data-on-premises or avoiding ecosystem lock-in is the priority you should look at an open-source route instead. It then walks the official 14-step onboarding path all the way to multi-track refinement: confirm the entry and asset source (keeping the same JianYing account so Jimeng and Xiaoyunque assets import in one click), generate key assets and a storyboard script, wire assets to script, let asset management auto-complete characters, props and scenes, batch-generate storyboard prompts (with two copy-ready prompt templates, one for product ads and one for talking-head video), pick models such as Seedance 2.5 to generate each storyboard clip, preview the assembled cut, use "More Editing" to jump straight into JianYing's multi-track timeline, apply local edits, AI extend, and AI post-editing (upscaling, frame interpolation, color grading, removal, vocal separation), call Skills through the JianYing Assistant in text, and import ByteDance assets back in. It adds three batch-production methods (deriving multiple versions from one product for A/B, a talking-head batch pipeline, and size and platform adaptation), a line-by-line pre-launch checklist and a six-row pitfall table covering script drift, local edits breaking consistency, audio-video desync after AI extend, human review of proper nouns in subtitle fixes, version and font mismatches after import, and rigid pacing from over-reliance on auto-assembly. Pricing, free quota, concurrency, credits, regional availability and duration or resolution limits are all unpublished and stated as following the official app, and JianYing Hub is noted as a closed-source commercial product that is neither open source nor free.

Sep 22, 20268 min read