{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"AI Agent Usage","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"ai-agent-usage","__idx":0},"children":["AI Agent Usage"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page explains how to use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ml-cli"]}," with AI coding assistants such as Codex, Claude Code, Cursor, Gemini CLI, and others."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"copy-to-agent","__idx":1},"children":["Copy to Agent"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Copy the prompt below and paste it into your AI assistant to set up MoreLogin CLI automatically:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Set up MoreLogin CLI for me, then use it whenever I ask you to operate MoreLogin.\n\nOfficial docs:\nhttps://guide.morelogin.com/cli\n\nGoal:\n- Install or update `ml-cli`.\n- Verify MoreLogin Desktop local API access.\n- Read the built-in agent package and guide.\n- After setup, ask what MoreLogin task I want to automate first.\n\nFirst detect my OS and CPU architecture, then run the matching install command.\n\nWindows x64 PowerShell:\n\n```powershell\n$dir = \"$env:USERPROFILE\\.morelogin\\bin\"\nNew-Item -ItemType Directory -Force -Path $dir | Out-Null\nInvoke-WebRequest -Uri \"https://releases.morelogin.com/prod/MoreLogin_AirDrop_window_x64_cli/2.6.3/MoreLogin_AirDrop_window_x64_cli_2.6.3.0.exe\" -OutFile \"$dir\\ml-cli.exe\"\n$userPath = [Environment]::GetEnvironmentVariable(\"Path\", \"User\")\nif ($userPath -notlike \"*$dir*\") { [Environment]::SetEnvironmentVariable(\"Path\", \"$userPath;$dir\", \"User\") }\n& \"$dir\\ml-cli.exe\" --version\n```\n\nmacOS Intel x64:\n\n```bash\nmkdir -p \"$HOME/.local/bin\"\ncurl -L \"https://releases.morelogin.com/prod/MoreLogin_AirDrop_darwin_x64_cli/2.6.3/MoreLogin_AirDrop_darwin_x64_cli_2.6.3.0\" -o \"$HOME/.local/bin/ml-cli\"\nchmod +x \"$HOME/.local/bin/ml-cli\"\nexport PATH=\"$HOME/.local/bin:$PATH\"\nml-cli --version\n```\n\nmacOS Apple Silicon arm64:\n\n```bash\nmkdir -p \"$HOME/.local/bin\"\ncurl -L \"https://releases.morelogin.com/prod/MoreLogin_AirDrop_darwin_arm64_cli/2.6.3/MoreLogin_AirDrop_darwin_arm64_cli_2.6.3.0\" -o \"$HOME/.local/bin/ml-cli\"\nchmod +x \"$HOME/.local/bin/ml-cli\"\nexport PATH=\"$HOME/.local/bin:$PATH\"\nml-cli --version\n```\n\nLinux x64:\n\n```bash\nmkdir -p \"$HOME/.local/bin\"\ncurl -L \"https://releases.morelogin.com/prod/MoreLogin_AirDrop_linux_x64_cli/2.6.3/MoreLogin_AirDrop_linux_x64_cli_2.6.3.0\" -o \"$HOME/.local/bin/ml-cli\"\nchmod +x \"$HOME/.local/bin/ml-cli\"\nexport PATH=\"$HOME/.local/bin:$PATH\"\nml-cli --version\n```\n\nAfter installation, run:\n\n```bash\nml-cli --help\nml-cli doctor --output-json\nml-cli agent-bootstrap\nml-cli agent-package\nml-cli agent-guide\n```\n\nFor long-term use, install persistent rules for my AI agent:\n\n```bash\nml-cli agent-list\nml-cli agent-init --agent <agent> --scope user --dry-run\nml-cli agent-init --agent <agent> --scope user --write\n```\n\nUse the correct `<agent>` value for my AI client. Supported values are listed by `ml-cli agent-list`, including `codex`, `claude-code`, `cursor`, `gemini`, `qwen-code`, `opencode`, `openclaw`, `trae`, `hermes`, `qclaw`, `easyclaw`, and `workbuddy`.\n\nUse `ml-cli` for MoreLogin browser profiles, environment lists, cloud phones, proxies, groups, tags, schedules, and local API status.\n\nDo not guess IDs, payload fields, or command formats. If unsure, inspect help first:\n\n```bash\nml-cli env --help\nml-cli cloudphone --help\nml-cli proxy --help\nml-cli schedule --help\n```\n\nOperation timing:\n- `env start` / `env open` takes 3-5 seconds; use `--timeout 30`.\n- `cloudphone power-on` / `cloudphone open` takes 30-90 seconds; always use `--timeout 120`.\n- All other commands complete within the default `--timeout 15`.\n\nNatural language routing rules:\n- \"How many browser profiles are on the first page?\" -> run `ml-cli env list --page-no 1 --page-size 20`, then count `data.dataList`.\n- \"Open P-1\" -> run `ml-cli --timeout 30 env open --name P-1`.\n- \"Find browser profiles by group, tag, name, or remark containing Amazon\" -> run `ml-cli env find --keyword Amazon`.\n- \"Open the profile whose group, tag, name, or remark contains Amazon\" -> run `ml-cli --timeout 30 env open --keyword Amazon`.\n- \"Open cloud phone CP-204 and show the window\" -> run `ml-cli --timeout 120 cloudphone open --keyword CP-204 --headless false`.\n- \"Close cloud phone CP-204\" -> run `ml-cli --timeout 30 cloudphone close --keyword CP-204`.\n- \"Create a new browser profile\" -> run `ml-cli env create-quick`.\n- \"Delete browser profile P-1\" -> find it first with `ml-cli env find --name P-1`, confirm with the user, then run `ml-cli env delete --env-ids <id>`.\n- \"Create a proxy\" -> run `ml-cli proxy create --proxy-ip <ip> --proxy-port <port> --proxy-provider 0`.\n- \"Show all tags\" -> run `ml-cli tag list`.\n- \"Create a group called test\" -> run `ml-cli group create --group-name test`.\n- \"Set proxy for profile P-1\" -> find the profile first, then run `ml-cli env set-proxy --env-ids <id> --proxy-ip <ip> --proxy-port <port> --proxy-type 0 --proxy-provider 0`.\n\nCandidate selection rule:\n- `env open`, `cloudphone open`, and `cloudphone close` may operate only when exactly one candidate matches.\n- If zero or multiple candidates match, show the candidates and ask me which one to operate.\n\nLocal access rule:\nMoreLogin CLI connects to `127.0.0.1:<port>`, usually `127.0.0.1:40000`. Started browser profiles may expose `127.0.0.1:<debugPort>`.\nIf Codex, Claude Code, Cursor, or another AI client reports `connect EPERM 127.0.0.1:40000`, `connect EPERM 127.0.0.1:<debugPort>`, `connection refused`, `request timeout`, or `Could not detect MoreLogin port`, treat it as local sandbox/permission first. Request local access approval or elevated execution and rerun the same command. Do not repeatedly start the same profile after an EPERM error; check status first.\n\nWhen a command fails, show the original MoreLogin response. Do not redact proxy passwords, phone numbers, device identifiers, or other fields unless I explicitly ask you to. For scripts, add `--fail-on-business-error` when a non-zero top-level JSON `code` should fail the command.\n\nFuture updates:\n- To update `ml-cli`, run `ml-cli self-update`. Or rerun this setup prompt and overwrite the existing binary with the newest official download.\n- To update persistent agent rules, rerun `ml-cli agent-init --agent <agent> --scope <scope> --write`.\n- Restart the AI agent if it only loads memory/rules files on startup.\n\nAfter verification, tell me:\n- install path\n- `ml-cli --version`\n- `ml-cli doctor --output-json` result\n- available top-level commands\n\nThen ask me what MoreLogin task I want to automate first.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also generate the same prompt from an installed CLI:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"ml-cli install-prompt\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"agent-guide-command","__idx":2},"children":["Agent Guide Command"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After installation, agents should read the built-in guide:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"ml-cli agent-guide\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The guide tells the agent:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["when to use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ml-cli"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to discover command formats"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to map natural language to commands"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["when to ask for confirmation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to handle local sandbox errors such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect EPERM 127.0.0.1:40000"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"doctor-command","__idx":3},"children":["Doctor Command"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["doctor"]}," to verify local API connectivity:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"ml-cli doctor\nml-cli doctor --output-json\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["doctor"]}," checks port discovery and calls the MoreLogin local status endpoint."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"browser-profile-convenience-commands","__idx":4},"children":["Browser Profile Convenience Commands"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these commands when users refer to profiles by name:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"ml-cli env find --name P-1\nml-cli env find --keyword Amazon\nml-cli env open --name P-1\nml-cli env open --keyword \"team-a\"\nml-cli env open --name P-1 --exact\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["env find --keyword"]}," searches environment name, group name, tag name, and remark through the MoreLogin Local API."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["env open"]}," starts the profile only when exactly one candidate matches. If multiple profiles match, it prints the candidates and exits without starting anything."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cloud-phone-convenience-commands","__idx":5},"children":["Cloud Phone Convenience Commands"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these commands when users refer to cloud phones by name:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"ml-cli cloudphone find --name CP-1\nml-cli cloudphone find --keyword \"android-test\"\nml-cli --timeout 120 cloudphone open --name CP-1\nml-cli --timeout 120 cloudphone open --keyword \"android-test\"\nml-cli --timeout 120 cloudphone open --name CP-1 --headless false\nml-cli --timeout 30 cloudphone close --name CP-1\nml-cli --timeout 30 cloudphone close --keyword \"android-test\"\nml-cli --timeout 120 cloudphone open --name CP-1 --exact\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cloudphone find --keyword"]}," searches cloud phone name, group name, tag name, and remark through the MoreLogin Local API."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cloudphone open"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cloudphone close"]}," operate only when exactly one candidate matches. If multiple cloud phones match, they print the candidates and exit without changing state."," ","For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--headless"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," displays the Cloud Phone window, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," does not display it. The API default is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"natural-language-examples","__idx":6},"children":["Natural Language Examples"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After setup, you can ask:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"How many browser profiles are on the first page in MoreLogin?\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Show me the first page of MoreLogin browser profiles, including profile name, ID, and status.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Open the P-1 profile.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Check whether the P-1 profile is already running.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Close the P-1 profile.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Find browser profiles whose names contain Amazon.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Find browser profiles where the environment name, group name, tag name, or remark contains Amazon.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Open the browser environment whose group or tag contains Amazon. If there is more than one, show candidates first.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Start the first browser profile and tell me the debug port.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Show me all MoreLogin groups.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Show me all MoreLogin tags.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Show me the first page of proxy records.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Show me the cloud phone list.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Open the CP-1 cloud phone.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Find cloud phones whose group, tag, or remark contains Android.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Open the cloud phone whose name, group, tag, or remark contains CP-204 and display the window.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Close the CP-1 cloud phone.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Read ml-cli help and summarize the common browser profile commands.\n","lang":"text"},"children":[]}]},"headings":[{"value":"AI Agent Usage","id":"ai-agent-usage","depth":1},{"value":"Copy to Agent","id":"copy-to-agent","depth":2},{"value":"Agent Guide Command","id":"agent-guide-command","depth":2},{"value":"Doctor Command","id":"doctor-command","depth":2},{"value":"Browser Profile Convenience Commands","id":"browser-profile-convenience-commands","depth":2},{"value":"Cloud Phone Convenience Commands","id":"cloud-phone-convenience-commands","depth":2},{"value":"Natural Language Examples","id":"natural-language-examples","depth":2}],"frontmatter":{"seo":{"title":"AI Agent Usage"}},"lastModified":"2026-07-06T01:44:59.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/cli/agent","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}