{"id":"20d4313b-9bde-4607-8993-9d9ca7671b0b","entityType":"agent","slug":"clawhub-multilogincom-multilogin","name":"multilogin","canonicalUrl":"https://www.xpersona.co/agent/clawhub-multilogincom-multilogin","canonicalPath":"/agent/clawhub-multilogincom-multilogin","generatedAt":"2026-10-10T06:43:05.116Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":null},"description":"Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings. Skill: multilogin Owner: multilogincom Summary: Use when you need to manage Multilogin through xcli, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings. Tags: automation:1.0.0, browser:1.0.0, headless:1.0.0, latest:1.0.2 Version history: v1.0.2 | 2026-09-21T12:40:51.943Z | user - Expanded skill description to include management of Androi","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.1K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17fq0aht9bmyh3p5vw2s1p5r5884h9k:multilogin","sourceUrl":"https://clawhub.ai/multilogincom/multilogin","homepage":"https://clawhub.ai/multilogincom/skills/multilogin","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/multilogincom/multilogin","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/multilogincom/skills/multilogin","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB ac"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":null},"stars":null,"forks":null,"downloads":2101,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"2.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T19:00:03.456Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T19:00:03.487Z","lastCrawledAt":"2026-10-09T19:00:03.456Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T19:00:03.456Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-09-21T12:40:51.943Z","changelog":"- Expanded skill description to include management of Android cloud phones, apps, workspaces, proxies, files, ADB, and account settings. - Updated documentation to clarify support for mobile workflows and broader Multilogin features. - Removed the skill-card.md file for simplification and consistency. - No changes to binaries, installation steps, or critical CLI instructions.","fileCount":3,"zipByteSize":10581},{"version":"1.0.1","createdAt":"2026-08-11T14:11:23.315Z","changelog":"- Removed the skill-card.md file. - No functionality changes; only documentation cleanup.","fileCount":3,"zipByteSize":10586},{"version":"1.0.0","createdAt":"2026-02-20T08:32:30.181Z","changelog":"Initial release of the Multilogin skill for managing Multilogin X browser profiles via the xcli CLI. - Provides commands to launch, list, start, and stop browser profiles, and check launcher status. - Supports quick, disposable profiles and saved profiles. - Includes detailed platform-specific installation instructions for Linux, macOS, and Windows. - Documents critical requirement to start mlx-launcher before running any xcli commands (except login). - Covers both headless (VPS/Docker) and desktop (GUI) usage modes with step-by-step setup guides. - Explains OpenClaw Node integration for delegating GUI browser tasks to paired Mac nodes.","fileCount":3,"zipByteSize":6195}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17fq0aht9bmyh3p5vw2s1p5r5884h9k:multilogin","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T06:43:05.115Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-multilogincom-multilogin/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":null},"readme":"Skill: multilogin\n\nOwner: multilogincom\n\nSummary: Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings.\n\nTags: automation:1.0.0, browser:1.0.0, headless:1.0.0, latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-09-21T12:40:51.943Z | user\n\n- Expanded skill description to include management of Android cloud phones, apps, workspaces, proxies, files, ADB, and account settings.\n- Updated documentation to clarify support for mobile workflows and broader Multilogin features.\n- Removed the skill-card.md file for simplification and consistency.\n- No changes to binaries, installation steps, or critical CLI instructions.\n\nv1.0.1 | 2026-08-11T14:11:23.315Z | user\n\n- Removed the skill-card.md file.\n- No functionality changes; only documentation cleanup.\n\nv1.0.0 | 2026-02-20T08:32:30.181Z | user\n\nInitial release of the Multilogin skill for managing Multilogin X browser profiles via the xcli CLI.\n\n- Provides commands to launch, list, start, and stop browser profiles, and check launcher status.\n- Supports quick, disposable profiles and saved profiles.\n- Includes detailed platform-specific installation instructions for Linux, macOS, and Windows.\n- Documents critical requirement to start mlx-launcher before running any xcli commands (except login).\n- Covers both headless (VPS/Docker) and desktop (GUI) usage modes with step-by-step setup guides.\n- Explains OpenClaw Node integration for delegating GUI browser tasks to paired Mac nodes.\n\nArchive index:\n\nArchive v1.0.2: 3 files, 10581 bytes\n\nFiles: skill-card.md (2384b), SKILL.md (54391b), _meta.json (129b)\n\nFile v1.0.2:SKILL.md\n\n---                                                                                                            \nname: multilogin                                                                                               \ndescription: Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings.\nmetadata: { \"openclaw\": { \"emoji\": \"🌐\", \"requires\": { \"bins\": [\"xcli\", \"mlx-launcher\"] } } }                   \n---                                                                                                            \n                                                                                                               \n# Multilogin\n\nMultilogin is a cloud phone platform for social media marketers. This skill connects OpenClaw with the Multilogin CLI (`xcli`), allowing people and AI agents to manage social profiles using AI prompts.\n\nUse Android cloud phones for mobile app workflows and browser profiles for web workflows. The skill supports creating, listing, starting, stopping, and organizing profiles, as well as managing apps, files, proxies, scripts, tags, workspaces, ADB access, and account settings.\n\n## CRITICAL: Launcher must run FIRST\n\nThe `mlx-launcher` process MUST be running before ANY `xcli` command (except `login`) will work.\nIf you skip this, you WILL get \"connection refused\" or \"launcher not active\" errors.\n\n---\n\n## Installation\n\n### Version resolution\n\nBoth binaries have a `/latest` endpoint that returns the current version string:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest       → e.g. \"0.0.72\"\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest   → e.g. \"1.75.0\"\n\nDownload URLs follow the pattern:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/{VERSION}/xcli_{PLATFORM}\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/{VERSION}/launcher-{PLATFORM}\n\n**Platform suffixes:**\n\n| Platform | xcli | mlx-launcher |\n|----------|------|--------------|\n| Linux x64 | `xcli_linux_amd64` | `launcher-linux_amd64.bin` |\n| macOS x64 | `xcli_darwin_amd64` | `launcher-darwin_amd64.bin` |\n| macOS ARM | `xcli_darwin_arm64` | `launcher-darwin_arm64.bin` |\n| Windows | `xcli_windows_amd64.exe` | `launcher-windows_amd64.exe` |\n\n### Install on Linux (VPS / Docker)\n\n```bash\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_linux_amd64\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-linux_amd64.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on macOS\n\n# Detect architecture\nARCH=$(uname -m)\nif [ \"$ARCH\" = \"arm64\" ]; then\n  SUFFIX=\"darwin_arm64\"\nelse\n  SUFFIX=\"darwin_amd64\"\nfi\n\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_${SUFFIX}\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-${SUFFIX}.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# macOS may quarantine downloaded binaries — remove the flag\nxattr -d com.apple.quarantine /usr/local/bin/xcli 2>/dev/null\nxattr -d com.apple.quarantine /usr/local/bin/mlx-launcher 2>/dev/null\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on Windows\n\n# Resolve latest versions\n$CLI_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\").Content.Trim()\n$LAUNCHER_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\").Content.Trim()\nWrite-Host \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\nInvoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_windows_amd64.exe\" -OutFile\n\"$env:USERPROFILE\\xcli.exe\"\nInvoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-windows_amd64.exe\"\n-OutFile \"$env:USERPROFILE\\mlx-launcher.exe\"\n\n# Add to PATH (current session)\n$env:PATH += \";$env:USERPROFILE\"\n\n---\nEnvironment Detection\n\nDetect your environment before running commands:\n\n# Am I in Docker?\nif [ -f /.dockerenv ]; then\n  echo \"DOCKER\"\nelse\n  echo \"BARE METAL\"\nfi\n\nBoth environments use the same xcli and mlx-launcher binaries — they must be in PATH.\n\n---\nHeadless (VPS / Docker) — Step by Step\n\nThis is the primary mode. No display, no GUI. Profiles run headless.\n\nStep 1: Start the launcher\n\nmlx-launcher -port 45000 &\nsleep 5\n\nVerify:\n\nxcli launcher-info\n\nYou MUST see a version number before proceeding. If error — wait and retry.\n\nStep 2: Login\n\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n\nAsk the user for credentials if not provided. Tokens last ~24h, stored in ~/.config/xcli/.\n\nStep 3: Launch quick profiles\n\nQuick profiles are disposable — deleted automatically when stopped.\n\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n\nLaunch 2 quick profiles:\n\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n\nEach returns a profile ID and a port for Puppeteer/Selenium automation.\n\nHeadless constraints\n\n- Always use --headless — no display server available.\n- Always use --os-type linux — must match the host OS.\n- Always use --browser-type mimic — stealthfox is NOT available on Linux.\n- Do NOT use profile-create for disposable sessions — use profile-quick.\n- Do NOT run xcli commands in background with & (only mlx-launcher).\n\n---\nDesktop (macOS / Windows / Linux with GUI)\n\nWhen running on a machine with a display (e.g. a Mac node), profiles can open visible browser windows.\n\nStep 1: Start the launcher\n\nmlx-launcher -port 45000 &\nsleep 5\nxcli launcher-info\n\nStep 2: Login\n\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n\nStep 3: Launch profiles (with GUI)\n\nOn macOS:\n\nxcli profile-quick --browser-type mimic --os-type macos --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type macos --automation puppeteer\n\nOn Windows:\n\nxcli profile-quick --browser-type mimic --os-type windows --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type windows --automation puppeteer\n\nNote: No --headless flag — browser windows will be visible.\n\nDesktop constraints\n\n- --os-type must match the actual OS (macos, windows, or linux).\n- Both mimic (Chromium) and stealthfox (Firefox) are available on macOS and Windows.\n- On Linux with GUI, only mimic is available.\n\n---\nGUI via OpenClaw Node (VPS + Mac hybrid)\n\nThe most elegant setup: VPS runs 24/7 headless, Mac node handles GUI tasks on demand.\n\nArchitecture\n\nVPS (OpenClaw main agent, 24/7, headless)\n  ↕ paired via gateway\nMac (OpenClaw Node, paired device)\n  → runs Multilogin with visible browser windows\n  → VPS delegates GUI tasks here\n\nWhen to use the Node\n\nUse the VPS for:\n- Headless quick profiles (automation, scraping, batch tasks)\n- All non-GUI work\n\nDelegate to the Mac node when:\n- User wants to SEE the browser (visual inspection, manual interaction)\n- A task requires a real display (CAPTCHAs, visual verification)\n- stealthfox is needed (not available on Linux)\n- Debugging a profile visually\n\nHow to delegate to the Node\n\nFrom the VPS main agent, use sessions_spawn to send a task to the Mac node:\n\n{\n  \"tool\": \"sessions_spawn\",\n  \"agentId\": \"node-mac\",\n  \"message\": \"Start the Multilogin launcher and launch 2 quick profiles with GUI. Use: mlx-launcher -port 45000\n & sleep 5 && xcli login --username 'USER' --password 'PASS' && xcli profile-quick --browser-type mimic\n--os-type macos --automation puppeteer && xcli profile-quick --browser-type stealthfox --os-type macos\n--automation puppeteer\"\n}\n\nThe node will:\n1. Start the launcher locally on the Mac\n2. Login with the provided credentials\n3. Launch profiles with visible browser windows\n4. Report back the profile IDs and ports\n\nSetup requirements for the Node\n\nThe Mac node needs:\n- xcli and mlx-launcher binaries for macOS in PATH (see Install on macOS above)\n- Network access to Multilogin API (signin.multilogin.com)\n- OpenClaw Node running and paired to the VPS gateway\n\n---\n## Cloud Phones (Mobile Profiles)\n\nMultilogin **cloud phones** are Android mobile profiles, driven with the\n`mobile-profiles-*` / `mobile-phone-*` command family. They use the same\nauthenticated `xcli` session as browser profiles — the launcher must be running\nand you must be logged in. A cloud phone runs **server-side**, so starting one\n**spends mobile-minutes** (metered for as long as it runs, even headless).\n\n> **Billing:** always check remaining minutes with `mobile-profiles-limit`\n> before starting, and always `mobile-profiles-phone-stop` when finished.\n> Disabling ADB is **not** the same as stopping the phone.\n\n### Prerequisites\n\n- Launcher running and logged in — exactly as for browser profiles\n  (`mlx-launcher -port 45000 &`, then `xcli login …`).\n- For ADB control: `adb` installed and in `PATH` (`adb version`).\n- A mobile profile — create one below, or list existing ones with\n  `mobile-profiles-phone-list`.\n\n### Plan limits (preflight)\n\n```bash\nxcli mobile-profiles-limit      # total plan limit, current usage, remaining minutes\n```\n\nDo not start phones when the remaining minutes is 0.\n\n### Create a cloud phone\n\nLook up device / location options, then create. **A proxy is required.**\n\n```bash\nxcli mobile-profiles-phone-brand-list --android-version 14   # brands/models for an Android version\nxcli mobile-profiles-states --country \"USA\"                  # region options\nxcli mobile-profiles-cities --state \"California\"\n\n# One Android 14 phone with a proxy\nxcli mobile-profiles-create \\\n  --mobile-type \"Android 14\" \\\n  --profile-name \"my-phone\" \\\n  --proxy \"socks5://user:pass@host:1080\"\n\n# Three phones in a folder, tagged, on Wi-Fi networking\nxcli mobile-profiles-create --mobile-type \"Android 14\" --profile-name \"bulk\" \\\n  --proxy \"socks5://user:pass@host:1080\" --quantity 3 \\\n  --folder-id \"<folder-uuid>\" --tags \"team-a,automation\" --net-type 0\n```\n\n- `--proxy` is **required**; `--net-type` `0` = Wi-Fi, `1` = Mobile (default `1`).\n- `--quantity` creates N phones, each with its own serial number and device identity.\n- Validate a proxy first if unsure:\n  `xcli mobile-profiles-proxy-check --proxy-type socks5 --server host --port 1080 [--username u --password p]`.\n\n### List / inspect\n\n```bash\nxcli mobile-profiles-phone-list                                    # paginated (default 50/page)\nxcli mobile-profiles-phone-list --ids \"<id1>,<id2>\"\nxcli mobile-profiles-phone-list --folder-id \"<uuid>\" --serial-name \"my\" --page 1 --page-size 50\n```\n\n### Start / stop lifecycle\n\n```bash\nxcli mobile-profiles-phone-start --ids \"<id>\"     # start headless — SPENDS minutes\nxcli mobile-profiles-statuses    --ids \"<id>\"     # poll until Started\nxcli mobile-profiles-phone-stop  --ids \"<id>\"     # ALWAYS stop when done\n```\n\n**Status codes** (`mobile-profiles-statuses`): `0` Started · `1` Starting (wait,\nre-poll) · `2` Shut down · `3` Expired.\n\n> `mobile-phone-launch` / `mobile-phone-shutdown` are the launcher-backed\n> start/stop variants. For headless automation prefer\n> `mobile-profiles-phone-start` / `mobile-profiles-phone-stop`.\n\n### Control a phone over ADB\n\nOnce a phone is **Started**, enable ADB, read the connection details, and attach\nyour local `adb`:\n\n```bash\nxcli mobile-profiles-adb-set  --ids \"<id>\" --enable    # enable ADB (up to 50 ids)\nxcli mobile-profiles-adb-info --ids \"<id>\"             # -> per-profile {ip, port, pwd, status}\n```\n\n`mobile-profiles-adb-info` reports a per-profile `status`:\n\n- `active` — `ip`/`port`/`pwd` populated, ready to connect\n- `disabled` — phone stopped or ADB not enabled (start the phone / re-enable ADB)\n- `error` — unsupported or unknown\n\nConnect and drive. The `glogin` session **expires after ~30–60s** — re-`glogin`\nimmediately before each action rather than once at the start:\n\n```bash\nadb connect <ip>:<port>\nadb -s <ip>:<port> shell glogin <pwd>                 # expect \"glogin success\"\nadb -s <ip>:<port> shell screencap -p /sdcard/s.png   # capture\nadb -s <ip>:<port> shell uiautomator dump             # inspect (tap by node bounds)\nadb -s <ip>:<port> shell input tap <x> <y>            # act\nadb -s <ip>:<port> shell input text \"hello\"\n```\n\nDisable ADB when finished (separate from stopping the phone):\n\n```bash\nxcli mobile-profiles-adb-set --ids \"<id>\" --disable\nadb disconnect <ip>:<port>\n```\n\n- The `pwd` is a short-lived `glogin` code, **not** an API token — never log or persist it.\n- Up to 50 ids per `adb-set` / `adb-info` call; non-running phones are skipped and reported.\n\n### Install apps\n\n```bash\nxcli mobile-profiles-app-list --key \"TikTok\"           # find the app + version IDs\nxcli mobile-profiles-group                             # workspace group ID (auto-created)\nxcli mobile-profiles-app-install --id \"<app-id>\" --version_id \"<version-id>\" \\\n  [--install_group_ids \"<group-id>\"]                   # omit to use the workspace default group\n```\n\n### Files (shared mobile drive)\n\n```bash\nxcli mobile-profiles-files-upload --file \"/path/to/app.apk\"     # jpg/png/gif/mp4/apk/xapk/xml…\nxcli mobile-profiles-files-list --page 1 --page-size 20 [--file-type 1]   # 1=image, 2=video/app\nxcli mobile-profiles-files-delete --ids \"<file-id>\"\nxcli mobile-profiles-files-tag-assign   --material-id \"<file-id>\" --tags \"<tag-id>\"\nxcli mobile-profiles-files-tag-unassign --material-id \"<file-id>\" --tags \"<tag-id>\"\n```\n\n### Tags\n\n```bash\nxcli mobile-profiles-tag-assign   --profile-id \"<id>\" --tags \"<tag-id-1>,<tag-id-2>\"   # max 10\nxcli mobile-profiles-tag-unassign --profile-id \"<id>\" --tags \"<tag-id-1>\"\n```\n\nTag IDs come from `tag-list`; the tags must already exist in the workspace.\n\n### Manage (update / delete / transfer / import-export)\n\n```bash\nxcli mobile-profiles-update --id \"<id>\" --name \"new-name\" [--folder-id <uuid>] [--remark \"…\"] \\\n  [--proxy-server host --proxy-port 1080 --proxy-protocol 1] [--tags \"a,b\"]\nxcli mobile-profiles-delete   --ids \"<id1>,<id2>\"                 # PERMANENT — no trash recovery\nxcli mobile-profiles-transfer --ids \"<id>\" --target-email \"colleague@example.com\"\n\n# Bulk import: download template -> fill -> validate (returns validation_id) -> confirm\nxcli mobile-profiles-phone-import-template -o template.xlsx\nxcli mobile-profiles-phone-import-validate --file profiles.xlsx\nxcli mobile-profiles-phone-export --ids \"<id1>,<id2>\" -o export.xlsx\n```\n\n### Constraints\n\n- Starting a phone spends mobile-minutes — always `mobile-profiles-phone-stop`\n  when done. Disabling ADB does **not** stop the phone or its billing.\n- `--proxy` is required at create time.\n- `mobile-profiles-delete` is permanent; deleted phones cannot be restored.\n- The ADB `pwd` is a transient `glogin` code — re-`glogin` before every action;\n  a stale session fails silently mid-run.\n\n### Troubleshooting (cloud phones)\n\n| Problem | Cause | Fix |\n|---------|-------|-----|\n| `mobile-profiles-adb-info` returns `status: disabled` | Phone not started, or ADB not enabled | Start the phone (`mobile-profiles-phone-start`), then `mobile-profiles-adb-set … --enable`; poll info until `active` |\n| `adb connect` works but shell commands are unauthorized / do nothing | `glogin` session expired (~30–60s) | Re-run `adb -s <ip>:<port> shell glogin <pwd>` right before the action |\n| `glogin` does not print `glogin success` | Wrong/expired `pwd`, or ADB disabled | Re-fetch with `mobile-profiles-adb-info` and reconnect |\n| `mobile-profiles-create` rejected | Missing/invalid `--proxy`, or unknown `--mobile-type` | Provide a valid proxy string; check the Android version with `mobile-profiles-phone-brand-list` |\n| Phone won't start / minutes not decreasing | Plan limit reached or phone expired (status `3`) | Check `mobile-profiles-limit`; recreate expired phones |\n\n---\n\nFull CLI Command Reference\n\nGeneral\n\n┌───────────────┬────────────────────────────────────────────────────┐\n│    Command    │                    Description                     │\n├───────────────┼────────────────────────────────────────────────────┤\n│ login         │ Log in to your account                             │\n├───────────────┼────────────────────────────────────────────────────┤\n│ launcher-info │ Get info about the running launcher (app or agent) │\n├───────────────┼────────────────────────────────────────────────────┤\n│ help          │ Help for all commands                              │\n└───────────────┴────────────────────────────────────────────────────┘\n\nFolders\n\n┌───────────────┬────────────────────────────────────────┐\n│    Command    │              Description               │\n├───────────────┼────────────────────────────────────────┤\n│ create-folder │ Create a folder with a given name      │\n├───────────────┼────────────────────────────────────────┤\n│ list-folder   │ View all available folders             │\n├───────────────┼────────────────────────────────────────┤\n│ remove-folder │ Remove a folder by ID (or list of IDs) │\n├───────────────┼────────────────────────────────────────┤\n│ update-folder │ Update folder details using its ID     │\n└───────────────┴────────────────────────────────────────┘\n\nWorkspaces\n\n┌──────────────────┬─────────────────────────────────┐\n│     Command      │           Description           │\n├──────────────────┼─────────────────────────────────┤\n│ list-workspace   │ Display available workspaces    │\n├──────────────────┼─────────────────────────────────┤\n│ switch-workspace │ Switch to a different workspace │\n└──────────────────┴─────────────────────────────────┘\n\nProxies\n\n┌─────────────────┬───────────────────────────────────────────┐\n│     Command     │                Description                │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-countries │ List available countries in proxy service │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-regions   │ Get regions by country code               │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-cities    │ Get cities by region code                 │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-get       │ Get a proxy URL based on parameters       │\n└─────────────────┴───────────────────────────────────────────┘\n\nProfiles\n\n┌───────────────────────┬──────────────────────────────────────────────┐\n│        Command        │                 Description                  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-quick         │ Launch a disposable quick profile (v4 API)   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-create        │ Create a new persistent profile              │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-template      │ Create a new template for a browser profile  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-start         │ Start a profile by ID                        │\n├───────────────────────┼────────────────────────────────���─────────────┤\n│ profile-stop          │ Stop a profile by ID                         │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-list          │ List profiles in a given folder              │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-stat          │ Statistics about currently launched profiles │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-status        │ Status of given profile(s)                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-update        │ Update an existing profile                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-clone         │ Duplicate a profile                          │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-move          │ Move profile to a different folder           │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-remove        │ Remove profiles by IDs                       │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-restore       │ Restore a deleted profile from trash         │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-export        │ Export a profile into a file                 │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-export-status │ Show profile export status                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-import        │ Import a profile from a file                 │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-import-status │ Show profile import status                   │\n├───────────────────────┼─────────���────────────────────────────────────┤\n│ profile-cookie-import │ Import cookies to a profile                  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-cookie-export │ Export cookies from a profile                │\n└───────────────────────┴──────────────────────────────────────────────┘\n\nMobile profiles (cloud phones)\n\n┌───────────────────────────────────────┬──────────────────────────────────────────────────┐\n│ Command                               │ Description                                      │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-limit                 │ Plan limit, current usage, and remaining minutes │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-group                 │ Get/create the workspace mobile profile group    │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-states                │ List states/regions by country code              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-cities                │ List cities by state                             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-proxy-check           │ Test a proxy and return geo details              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-brand-list      │ List phone brands/models by Android version      │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-list            │ List cloud phones (paginated, filterable)        │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-create                │ Create cloud phone(s)                            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-update                │ Update a cloud phone                             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-delete                │ Permanently delete cloud phones by ID            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-statuses              │ Runtime status of cloud phones (0/1/2/3)         │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-start           │ Start cloud phone(s) headless (spends minutes)   │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-stop            │ Stop cloud phone(s)                              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-phone-launch                   │ Start cloud phone(s) via launcher                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-phone-shutdown                 │ Stop cloud phone(s) via launcher                 │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-adb-set               │ Enable/disable ADB (--enable/--disable, max 50)  │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-adb-info              │ Get ADB connection info (ip/port/pwd/status)     │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-app-list              │ List installable apps (system + uploaded)        │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-app-install           │ Batch-install an app version to a group          │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-tag-assign            │ Assign tags to a cloud phone (max 10)            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-tag-unassign          │ Remove tags from a cloud phone                   │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-list            │ List files on the shared mobile drive            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-upload          │ Upload a file to the mobile drive                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-delete          │ Delete files from the mobile drive               │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-tag-assign      │ Assign tags to a mobile-drive file               │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-tag-unassign    │ Remove tags from a mobile-drive file             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-transfer              │ Transfer phone ownership to another user         │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-import-template │ Download the bulk-import Excel template          │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-import-validate │ Validate a bulk-import Excel file                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-export          │ Export cloud phones to Excel                     │\n└───────────────────────────────────────┴──────────────────────────────────────────────────┘\n\nScripts\n\n┌──────────────┬────────────────────────────────────────────────┐\n│   Command    │                  Description                   │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-list  │ List available scripts in Script Runner folder │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-start │ Run a script in a Multilogin profile           │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-stop  │ Stop a running script                          │\n├──────────────┼────────────────────────────────────────────────┤\n│ cookie-robot │ Start Cookie Robot on profile(s)               │\n└──────────────┴────────────────────────────────────────────────┘\n\nObjects (extensions, files, etc.)\n\n┌─────────────────────────┬───────────────────────────────────────────┐\n│         Command         │                Description                │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-types            │ List object types                         │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-list             │ List objects                              │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-meta             │ Fetch object metadata                     │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-create           │ Create an object (requires running agent) │\n├───────────────────���─────┼───────────────────────────────────────────┤\n│ object-download         │ Download object to local storage          │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-delete           │ Delete an object                          │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-restore          │ Restore object from trash                 │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-stats            │ Display object usage statistics           │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-convert          │ Convert storage type (local ↔ cloud)      │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ enable-object           │ Enable object for profiles                │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ disable-object          │ Disable object for profiles               │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-extension-create │ Create an extension object from a URL     │\n└─────────────────────────┴───────────────────────────────────────────┘\n\nTags\n\n┌──────────────┬─────────────────────────────────────────┐\n│   Command    │               Description               │\n├──────────────┼─────────────────────────────────────────┤\n│ create-tag   │ Create one or more tags                 │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-list     │ List tags (with optional search filter) │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-remove   │ Remove tags by IDs                      │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-assign   │ Assign tags to a profile                │\n├──────────────���─────────────────────────────────────────┤\n│ tag-unassign │ Unassign tags from a profile            │\n└──────────────┴─────────────────────────────────────────┘\n\n2FA\n\n┌───────────────────────────┬──────────────────────────────────┐\n│          Command          │           Description            │\n├───────────────────────────┼──────────────────────────────────┤\n│ enable-2fa                │ Enable two-factor authentication │\n├───────────────────────────┼──────────────────────────────────┤\n│ view-backup-codes         │ View backup codes                │\n├───────────────────────────┼──────────────────────────────────┤\n│ disable-2fa-for-user      │ Disable 2FA for user             │\n├───────────────────────────┼──────────────────────────────────┤\n│ disable-2fa-for-workspace │ Disable 2FA for workspace        │\n├───────────────────────────┼──────────────────────────────────┤\n│ enable-2fa-for-workspace  │ Enable 2FA for workspace         │\n└───────────────────────────┴──────────────────────────────────┘\n\nBilling\n\n┌───────────────┬─────────────────────────┐\n│    Command    │       Description       │\n├───────────────┼─────────────────────────┤\n│ referral-code │ Get referral code       │\n├───────────────┼─────────────────────────┤\n│ multipoints   │ Get multipoints balance │\n└───────────────┴─────────────────────────┘\n\n---\nQuick reference flags\n\n┌────────────────┬────────────────────────────────┬──────────────────────────────┐\n│      Flag      │             Values             │            Notes             │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --browser-type │ mimic, stealthfox              │ Linux: only mimic            │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --os-type      │ linux, macos, windows, android │ Must match host              │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --automation   │ puppeteer, selenium            │                              │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --headless     │ (no value)                     │ Required on headless servers │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --proxy-string │ \"host:port:user:pass\"          │ Optional proxy               │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --proxy-type   │ http, https, socks5            │ Required if using proxy      │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --core-version │ e.g. 144.4                     │ Specific browser version     │\n└────────────────┴────────────────────────────────┴──────────────────────────────┘\n\n---\nTroubleshooting\n\nProblem: connection refused / launcher not active\nCause: Launcher not running\nFix: mlx-launcher -port 45000 & then sleep 5\n────────────────────────────────────────\nProblem: browser version not found\nCause: Wrong os-type/browser-type combo\nFix: Use --browser-type mimic --os-type linux on Linux\n────────────────────────────────────────\nProblem: context deadline exceeded\nCause: Launcher downloading cores (first run)\nFix: Wait 30-60s, retry. Cores are cached after first download\n────────────────────────────────────────\nProblem: token contains invalid segments\nCause: Not logged in\nFix: xcli login\n────────────────────────────────────────\nProblem: UNAUTHORIZED_REQUEST\nCause: Token expired (>24h)\nFix: xcli login again\n─────────────────────────────────────���──\nProblem: Need GUI but on VPS\nCause: No display server\nFix: Delegate to Mac node via sessions_spawn\n────────────────────────────────────────\nProblem: macOS: \"unidentified developer\"\nCause: Gatekeeper quarantine\nFix: Run xattr -d com.apple.quarantine <binary>\n────────────────────────────────────────\nProblem: ```\nCause:\nFix:\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn72nqp0cwcsapep986ztma1c181h99j\",\n  \"slug\": \"multilogin\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1789994451943\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nUse when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[multilogincom](https://clawhub.ai/user/multilogincom)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, operators, and social media workflow teams use this skill to control Multilogin browser profiles and Android cloud phones through the `xcli` and `mlx-launcher` command-line tools.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can give an agent authority over Multilogin profiles, cloud phones, files, proxies, ADB sessions, account settings, and potentially billed mobile minutes.\n\nMitigation: Install only when the Multilogin CLI distribution is trusted, review proposed commands before execution, and require explicit confirmation before deletes, transfers, ADB actions, file operations, 2FA changes, or actions that spend mobile minutes.\n\nRisk: The skill includes workflows that may handle account passwords or delegated node access.\n\nMitigation: Avoid sending passwords in chat or spawned node messages; prefer a pre-authenticated local `xcli` session or another secret-safe login method.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/multilogincom/skills/multilogin)\n- [xcli latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest)\n- [mlx-launcher latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and CLI command references]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires `xcli` and `mlx-launcher`; may involve credentials, profile operations, cloud phone minutes, files, proxies, ADB sessions, and account settings.]\n\n## Skill Version(s):\n\n1.0.2 (source: release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.1: 3 files, 10586 bytes\n\nFiles: skill-card.md (2690b), SKILL.md (53995b), _meta.json (129b)\n\nFile v1.0.1:SKILL.md\n\n---                                                                                                            \nname: multilogin                                                                                               \ndescription: Use when you need to manage Multilogin X browser profiles — launch quick disposable profiles,     \nlist/start/stop saved profiles, or check launcher status using the xcli CLI tool.                              \nmetadata: { \"openclaw\": { \"emoji\": \"🌐\", \"requires\": { \"bins\": [\"xcli\", \"mlx-launcher\"] } } }                   \n---                                                                                                            \n                                                                                                               \n# Multilogin X\n\nManage anti-detect browser profiles via the `xcli` CLI.\n\n## CRITICAL: Launcher must run FIRST\n\nThe `mlx-launcher` process MUST be running before ANY `xcli` command (except `login`) will work.\nIf you skip this, you WILL get \"connection refused\" or \"launcher not active\" errors.\n\n---\n\n## Installation\n\n### Version resolution\n\nBoth binaries have a `/latest` endpoint that returns the current version string:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest       → e.g. \"0.0.72\"\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest   → e.g. \"1.75.0\"\n\nDownload URLs follow the pattern:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/{VERSION}/xcli_{PLATFORM}\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/{VERSION}/launcher-{PLATFORM}\n\n**Platform suffixes:**\n\n| Platform | xcli | mlx-launcher |\n|----------|------|--------------|\n| Linux x64 | `xcli_linux_amd64` | `launcher-linux_amd64.bin` |\n| macOS x64 | `xcli_darwin_amd64` | `launcher-darwin_amd64.bin` |\n| macOS ARM | `xcli_darwin_arm64` | `launcher-darwin_arm64.bin` |\n| Windows | `xcli_windows_amd64.exe` | `launcher-windows_amd64.exe` |\n\n### Install on Linux (VPS / Docker)\n\n```bash\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_linux_amd64\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-linux_amd64.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on macOS\n\n# Detect architecture\nARCH=$(uname -m)\nif [ \"$ARCH\" = \"arm64\" ]; then\n  SUFFIX=\"darwin_arm64\"\nelse\n  SUFFIX=\"darwin_amd64\"\nfi\n\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_${SUFFIX}\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-${SUFFIX}.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# macOS may quarantine downloaded binaries — remove the flag\nxattr -d com.apple.quarantine /usr/local/bin/xcli 2>/dev/null\nxattr -d com.apple.quarantine /usr/local/bin/mlx-launcher 2>/dev/null\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on Windows\n\n# Resolve latest versions\n$CLI_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\").Content.Trim()\n$LAUNCHER_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\").Content.Trim()\nWrite-Host \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\nInvoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_windows_amd64.exe\" -OutFile\n\"$env:USERPROFILE\\xcli.exe\"\nInvoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-windows_amd64.exe\"\n-OutFile \"$env:USERPROFILE\\mlx-launcher.exe\"\n\n# Add to PATH (current session)\n$env:PATH += \";$env:USERPROFILE\"\n\n---\nEnvironment Detection\n\nDetect your environment before running commands:\n\n# Am I in Docker?\nif [ -f /.dockerenv ]; then\n  echo \"DOCKER\"\nelse\n  echo \"BARE METAL\"\nfi\n\nBoth environments use the same xcli and mlx-launcher binaries — they must be in PATH.\n\n---\nHeadless (VPS / Docker) — Step by Step\n\nThis is the primary mode. No display, no GUI. Profiles run headless.\n\nStep 1: Start the launcher\n\nmlx-launcher -port 45000 &\nsleep 5\n\nVerify:\n\nxcli launcher-info\n\nYou MUST see a version number before proceeding. If error — wait and retry.\n\nStep 2: Login\n\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n\nAsk the user for credentials if not provided. Tokens last ~24h, stored in ~/.config/xcli/.\n\nStep 3: Launch quick profiles\n\nQuick profiles are disposable — deleted automatically when stopped.\n\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n\nLaunch 2 quick profiles:\n\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n\nEach returns a profile ID and a port for Puppeteer/Selenium automation.\n\nHeadless constraints\n\n- Always use --headless — no display server available.\n- Always use --os-type linux — must match the host OS.\n- Always use --browser-type mimic — stealthfox is NOT available on Linux.\n- Do NOT use profile-create for disposable sessions — use profile-quick.\n- Do NOT run xcli commands in background with & (only mlx-launcher).\n\n---\nDesktop (macOS / Windows / Linux with GUI)\n\nWhen running on a machine with a display (e.g. a Mac node), profiles can open visible browser windows.\n\nStep 1: Start the launcher\n\nmlx-launcher -port 45000 &\nsleep 5\nxcli launcher-info\n\nStep 2: Login\n\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n\nStep 3: Launch profiles (with GUI)\n\nOn macOS:\n\nxcli profile-quick --browser-type mimic --os-type macos --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type macos --automation puppeteer\n\nOn Windows:\n\nxcli profile-quick --browser-type mimic --os-type windows --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type windows --automation puppeteer\n\nNote: No --headless flag — browser windows will be visible.\n\nDesktop constraints\n\n- --os-type must match the actual OS (macos, windows, or linux).\n- Both mimic (Chromium) and stealthfox (Firefox) are available on macOS and Windows.\n- On Linux with GUI, only mimic is available.\n\n---\nGUI via OpenClaw Node (VPS + Mac hybrid)\n\nThe most elegant setup: VPS runs 24/7 headless, Mac node handles GUI tasks on demand.\n\nArchitecture\n\nVPS (OpenClaw main agent, 24/7, headless)\n  ↕ paired via gateway\nMac (OpenClaw Node, paired device)\n  → runs Multilogin with visible browser windows\n  → VPS delegates GUI tasks here\n\nWhen to use the Node\n\nUse the VPS for:\n- Headless quick profiles (automation, scraping, batch tasks)\n- All non-GUI work\n\nDelegate to the Mac node when:\n- User wants to SEE the browser (visual inspection, manual interaction)\n- A task requires a real display (CAPTCHAs, visual verification)\n- stealthfox is needed (not available on Linux)\n- Debugging a profile visually\n\nHow to delegate to the Node\n\nFrom the VPS main agent, use sessions_spawn to send a task to the Mac node:\n\n{\n  \"tool\": \"sessions_spawn\",\n  \"agentId\": \"node-mac\",\n  \"message\": \"Start the Multilogin launcher and launch 2 quick profiles with GUI. Use: mlx-launcher -port 45000\n & sleep 5 && xcli login --username 'USER' --password 'PASS' && xcli profile-quick --browser-type mimic\n--os-type macos --automation puppeteer && xcli profile-quick --browser-type stealthfox --os-type macos\n--automation puppeteer\"\n}\n\nThe node will:\n1. Start the launcher locally on the Mac\n2. Login with the provided credentials\n3. Launch profiles with visible browser windows\n4. Report back the profile IDs and ports\n\nSetup requirements for the Node\n\nThe Mac node needs:\n- xcli and mlx-launcher binaries for macOS in PATH (see Install on macOS above)\n- Network access to Multilogin API (signin.multilogin.com)\n- OpenClaw Node running and paired to the VPS gateway\n\n---\n## Cloud Phones (Mobile Profiles)\n\nMultilogin **cloud phones** are Android mobile profiles, driven with the\n`mobile-profiles-*` / `mobile-phone-*` command family. They use the same\nauthenticated `xcli` session as browser profiles — the launcher must be running\nand you must be logged in. A cloud phone runs **server-side**, so starting one\n**spends mobile-minutes** (metered for as long as it runs, even headless).\n\n> **Billing:** always check remaining minutes with `mobile-profiles-limit`\n> before starting, and always `mobile-profiles-phone-stop` when finished.\n> Disabling ADB is **not** the same as stopping the phone.\n\n### Prerequisites\n\n- Launcher running and logged in — exactly as for browser profiles\n  (`mlx-launcher -port 45000 &`, then `xcli login …`).\n- For ADB control: `adb` installed and in `PATH` (`adb version`).\n- A mobile profile — create one below, or list existing ones with\n  `mobile-profiles-phone-list`.\n\n### Plan limits (preflight)\n\n```bash\nxcli mobile-profiles-limit      # total plan limit, current usage, remaining minutes\n```\n\nDo not start phones when the remaining minutes is 0.\n\n### Create a cloud phone\n\nLook up device / location options, then create. **A proxy is required.**\n\n```bash\nxcli mobile-profiles-phone-brand-list --android-version 14   # brands/models for an Android version\nxcli mobile-profiles-states --country \"USA\"                  # region options\nxcli mobile-profiles-cities --state \"California\"\n\n# One Android 14 phone with a proxy\nxcli mobile-profiles-create \\\n  --mobile-type \"Android 14\" \\\n  --profile-name \"my-phone\" \\\n  --proxy \"socks5://user:pass@host:1080\"\n\n# Three phones in a folder, tagged, on Wi-Fi networking\nxcli mobile-profiles-create --mobile-type \"Android 14\" --profile-name \"bulk\" \\\n  --proxy \"socks5://user:pass@host:1080\" --quantity 3 \\\n  --folder-id \"<folder-uuid>\" --tags \"team-a,automation\" --net-type 0\n```\n\n- `--proxy` is **required**; `--net-type` `0` = Wi-Fi, `1` = Mobile (default `1`).\n- `--quantity` creates N phones, each with its own serial number and device identity.\n- Validate a proxy first if unsure:\n  `xcli mobile-profiles-proxy-check --proxy-type socks5 --server host --port 1080 [--username u --password p]`.\n\n### List / inspect\n\n```bash\nxcli mobile-profiles-phone-list                                    # paginated (default 50/page)\nxcli mobile-profiles-phone-list --ids \"<id1>,<id2>\"\nxcli mobile-profiles-phone-list --folder-id \"<uuid>\" --serial-name \"my\" --page 1 --page-size 50\n```\n\n### Start / stop lifecycle\n\n```bash\nxcli mobile-profiles-phone-start --ids \"<id>\"     # start headless — SPENDS minutes\nxcli mobile-profiles-statuses    --ids \"<id>\"     # poll until Started\nxcli mobile-profiles-phone-stop  --ids \"<id>\"     # ALWAYS stop when done\n```\n\n**Status codes** (`mobile-profiles-statuses`): `0` Started · `1` Starting (wait,\nre-poll) · `2` Shut down · `3` Expired.\n\n> `mobile-phone-launch` / `mobile-phone-shutdown` are the launcher-backed\n> start/stop variants. For headless automation prefer\n> `mobile-profiles-phone-start` / `mobile-profiles-phone-stop`.\n\n### Control a phone over ADB\n\nOnce a phone is **Started**, enable ADB, read the connection details, and attach\nyour local `adb`:\n\n```bash\nxcli mobile-profiles-adb-set  --ids \"<id>\" --enable    # enable ADB (up to 50 ids)\nxcli mobile-profiles-adb-info --ids \"<id>\"             # -> per-profile {ip, port, pwd, status}\n```\n\n`mobile-profiles-adb-info` reports a per-profile `status`:\n\n- `active` — `ip`/`port`/`pwd` populated, ready to connect\n- `disabled` — phone stopped or ADB not enabled (start the phone / re-enable ADB)\n- `error` — unsupported or unknown\n\nConnect and drive. The `glogin` session **expires after ~30–60s** — re-`glogin`\nimmediately before each action rather than once at the start:\n\n```bash\nadb connect <ip>:<port>\nadb -s <ip>:<port> shell glogin <pwd>                 # expect \"glogin success\"\nadb -s <ip>:<port> shell screencap -p /sdcard/s.png   # capture\nadb -s <ip>:<port> shell uiautomator dump             # inspect (tap by node bounds)\nadb -s <ip>:<port> shell input tap <x> <y>            # act\nadb -s <ip>:<port> shell input text \"hello\"\n```\n\nDisable ADB when finished (separate from stopping the phone):\n\n```bash\nxcli mobile-profiles-adb-set --ids \"<id>\" --disable\nadb disconnect <ip>:<port>\n```\n\n- The `pwd` is a short-lived `glogin` code, **not** an API token — never log or persist it.\n- Up to 50 ids per `adb-set` / `adb-info` call; non-running phones are skipped and reported.\n\n### Install apps\n\n```bash\nxcli mobile-profiles-app-list --key \"TikTok\"           # find the app + version IDs\nxcli mobile-profiles-group                             # workspace group ID (auto-created)\nxcli mobile-profiles-app-install --id \"<app-id>\" --version_id \"<version-id>\" \\\n  [--install_group_ids \"<group-id>\"]                   # omit to use the workspace default group\n```\n\n### Files (shared mobile drive)\n\n```bash\nxcli mobile-profiles-files-upload --file \"/path/to/app.apk\"     # jpg/png/gif/mp4/apk/xapk/xml…\nxcli mobile-profiles-files-list --page 1 --page-size 20 [--file-type 1]   # 1=image, 2=video/app\nxcli mobile-profiles-files-delete --ids \"<file-id>\"\nxcli mobile-profiles-files-tag-assign   --material-id \"<file-id>\" --tags \"<tag-id>\"\nxcli mobile-profiles-files-tag-unassign --material-id \"<file-id>\" --tags \"<tag-id>\"\n```\n\n### Tags\n\n```bash\nxcli mobile-profiles-tag-assign   --profile-id \"<id>\" --tags \"<tag-id-1>,<tag-id-2>\"   # max 10\nxcli mobile-profiles-tag-unassign --profile-id \"<id>\" --tags \"<tag-id-1>\"\n```\n\nTag IDs come from `tag-list`; the tags must already exist in the workspace.\n\n### Manage (update / delete / transfer / import-export)\n\n```bash\nxcli mobile-profiles-update --id \"<id>\" --name \"new-name\" [--folder-id <uuid>] [--remark \"…\"] \\\n  [--proxy-server host --proxy-port 1080 --proxy-protocol 1] [--tags \"a,b\"]\nxcli mobile-profiles-delete   --ids \"<id1>,<id2>\"                 # PERMANENT — no trash recovery\nxcli mobile-profiles-transfer --ids \"<id>\" --target-email \"colleague@example.com\"\n\n# Bulk import: download template -> fill -> validate (returns validation_id) -> confirm\nxcli mobile-profiles-phone-import-template -o template.xlsx\nxcli mobile-profiles-phone-import-validate --file profiles.xlsx\nxcli mobile-profiles-phone-export --ids \"<id1>,<id2>\" -o export.xlsx\n```\n\n### Constraints\n\n- Starting a phone spends mobile-minutes — always `mobile-profiles-phone-stop`\n  when done. Disabling ADB does **not** stop the phone or its billing.\n- `--proxy` is required at create time.\n- `mobile-profiles-delete` is permanent; deleted phones cannot be restored.\n- The ADB `pwd` is a transient `glogin` code — re-`glogin` before every action;\n  a stale session fails silently mid-run.\n\n### Troubleshooting (cloud phones)\n\n| Problem | Cause | Fix |\n|---------|-------|-----|\n| `mobile-profiles-adb-info` returns `status: disabled` | Phone not started, or ADB not enabled | Start the phone (`mobile-profiles-phone-start`), then `mobile-profiles-adb-set … --enable`; poll info until `active` |\n| `adb connect` works but shell commands are unauthorized / do nothing | `glogin` session expired (~30–60s) | Re-run `adb -s <ip>:<port> shell glogin <pwd>` right before the action |\n| `glogin` does not print `glogin success` | Wrong/expired `pwd`, or ADB disabled | Re-fetch with `mobile-profiles-adb-info` and reconnect |\n| `mobile-profiles-create` rejected | Missing/invalid `--proxy`, or unknown `--mobile-type` | Provide a valid proxy string; check the Android version with `mobile-profiles-phone-brand-list` |\n| Phone won't start / minutes not decreasing | Plan limit reached or phone expired (status `3`) | Check `mobile-profiles-limit`; recreate expired phones |\n\n---\n\nFull CLI Command Reference\n\nGeneral\n\n┌───────────────┬────────────────────────────────────────────────────┐\n│    Command    │                    Description                     │\n├───────────────┼────────────────────────────────────────────────────┤\n│ login         │ Log in to your account                             │\n├───────────────┼────────────────────────────────────────────────────┤\n│ launcher-info │ Get info about the running launcher (app or agent) │\n├───────────────┼────────────────────────────────────────────────────┤\n│ help          │ Help for all commands                              │\n└───────────────┴────────────────────────────────────────────────────┘\n\nFolders\n\n┌───────────────┬────────────────────────────────────────┐\n│    Command    │              Description               │\n├───────────────┼────────────────────────────────────────┤\n│ create-folder │ Create a folder with a given name      │\n├───────────────┼────────────────────────────────────────┤\n│ list-folder   │ View all available folders             │\n├───────────────┼────────────────────────────────────────┤\n│ remove-folder │ Remove a folder by ID (or list of IDs) │\n├───────────────┼────────────────────────────────────────┤\n│ update-folder │ Update folder details using its ID     │\n└───────────────┴────────────────────────────────────────┘\n\nWorkspaces\n\n┌──────────────────┬─────────────────────────────────┐\n│     Command      │           Description           │\n├──────────────────┼─────────────────────────────────┤\n│ list-workspace   │ Display available workspaces    │\n├──────────────────┼─────────────────────────────────┤\n│ switch-workspace │ Switch to a different workspace │\n└──────────────────┴─────────────────────────────────┘\n\nProxies\n\n┌─────────────────┬───────────────────────────────────────────┐\n│     Command     │                Description                │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-countries │ List available countries in proxy service │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-regions   │ Get regions by country code               │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-cities    │ Get cities by region code                 │\n├─────────────────┼───────────────────────────────────────────┤\n│ proxy-get       │ Get a proxy URL based on parameters       │\n└─────────────────┴───────────────────────────────────────────┘\n\nProfiles\n\n┌───────────────────────┬──────────────────────────────────────────────┐\n│        Command        │                 Description                  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-quick         │ Launch a disposable quick profile (v4 API)   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-create        │ Create a new persistent profile              │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-template      │ Create a new template for a browser profile  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-start         │ Start a profile by ID                        │\n├───────────────────────┼────────────────────────────────���─────────────┤\n│ profile-stop          │ Stop a profile by ID                         │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-list          │ List profiles in a given folder              │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-stat          │ Statistics about currently launched profiles │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-status        │ Status of given profile(s)                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-update        │ Update an existing profile                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-clone         │ Duplicate a profile                          │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-move          │ Move profile to a different folder           │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-remove        │ Remove profiles by IDs                       │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-restore       │ Restore a deleted profile from trash         │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-export        │ Export a profile into a file                 │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-export-status │ Show profile export status                   │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-import        │ Import a profile from a file                 │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-import-status │ Show profile import status                   │\n├───────────────────────┼─────────���────────────────────────────────────┤\n│ profile-cookie-import │ Import cookies to a profile                  │\n├───────────────────────┼──────────────────────────────────────────────┤\n│ profile-cookie-export │ Export cookies from a profile                │\n└───────────────────────┴──────────────────────────────────────────────┘\n\nMobile profiles (cloud phones)\n\n┌───────────────────────────────────────┬──────────────────────────────────────────────────┐\n│ Command                               │ Description                                      │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-limit                 │ Plan limit, current usage, and remaining minutes │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-group                 │ Get/create the workspace mobile profile group    │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-states                │ List states/regions by country code              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-cities                │ List cities by state                             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-proxy-check           │ Test a proxy and return geo details              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-brand-list      │ List phone brands/models by Android version      │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-list            │ List cloud phones (paginated, filterable)        │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-create                │ Create cloud phone(s)                            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-update                │ Update a cloud phone                             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-delete                │ Permanently delete cloud phones by ID            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-statuses              │ Runtime status of cloud phones (0/1/2/3)         │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-start           │ Start cloud phone(s) headless (spends minutes)   │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-stop            │ Stop cloud phone(s)                              │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-phone-launch                   │ Start cloud phone(s) via launcher                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-phone-shutdown                 │ Stop cloud phone(s) via launcher                 │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-adb-set               │ Enable/disable ADB (--enable/--disable, max 50)  │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-adb-info              │ Get ADB connection info (ip/port/pwd/status)     │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-app-list              │ List installable apps (system + uploaded)        │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-app-install           │ Batch-install an app version to a group          │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-tag-assign            │ Assign tags to a cloud phone (max 10)            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-tag-unassign          │ Remove tags from a cloud phone                   │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-list            │ List files on the shared mobile drive            │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-upload          │ Upload a file to the mobile drive                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-delete          │ Delete files from the mobile drive               │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-tag-assign      │ Assign tags to a mobile-drive file               │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-files-tag-unassign    │ Remove tags from a mobile-drive file             │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-transfer              │ Transfer phone ownership to another user         │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-import-template │ Download the bulk-import Excel template          │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-import-validate │ Validate a bulk-import Excel file                │\n├───────────────────────────────────────┼──────────────────────────────────────────────────┤\n│ mobile-profiles-phone-export          │ Export cloud phones to Excel                     │\n└───────────────────────────────────────┴──────────────────────────────────────────────────┘\n\nScripts\n\n┌──────────────┬────────────────────────────────────────────────┐\n│   Command    │                  Description                   │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-list  │ List available scripts in Script Runner folder │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-start │ Run a script in a Multilogin profile           │\n├──────────────┼────────────────────────────────────────────────┤\n│ script-stop  │ Stop a running script                          │\n├──────────────┼────────────────────────────────────────────────┤\n│ cookie-robot │ Start Cookie Robot on profile(s)               │\n└──────────────┴────────────────────────────────────────────────┘\n\nObjects (extensions, files, etc.)\n\n┌─────────────────────────┬───────────────────────────────────────────┐\n│         Command         │                Description                │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-types            │ List object types                         │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-list             │ List objects                              │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-meta             │ Fetch object metadata                     │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-create           │ Create an object (requires running agent) │\n├───────────────────���─────┼───────────────────────────────────────────┤\n│ object-download         │ Download object to local storage          │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-delete           │ Delete an object                          │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-restore          │ Restore object from trash                 │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-stats            │ Display object usage statistics           │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-convert          │ Convert storage type (local ↔ cloud)      │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ enable-object           │ Enable object for profiles                │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ disable-object          │ Disable object for profiles               │\n├─────────────────────────┼───────────────────────────────────────────┤\n│ object-extension-create │ Create an extension object from a URL     │\n└─────────────────────────┴───────────────────────────────────────────┘\n\nTags\n\n┌──────────────┬─────────────────────────────────────────┐\n│   Command    │               Description               │\n├──────────────┼─────────────────────────────────────────┤\n│ create-tag   │ Create one or more tags                 │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-list     │ List tags (with optional search filter) │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-remove   │ Remove tags by IDs                      │\n├──────────────┼─────────────────────────────────────────┤\n│ tag-assign   │ Assign tags to a profile                │\n├──────────────���─────────────────────────────────────────┤\n│ tag-unassign │ Unassign tags from a profile            │\n└──────────────┴─────────────────────────────────────────┘\n\n2FA\n\n┌───────────────────────────┬──────────────────────────────────┐\n│          Command          │           Description            │\n├───────────────────────────┼──────────────────────────────────┤\n│ enable-2fa                │ Enable two-factor authentication │\n├───────────────────────────┼──────────────────────────────────┤\n│ view-backup-codes         │ View backup codes                │\n├───────────────────────────┼──────────────────────────────────┤\n│ disable-2fa-for-user      │ Disable 2FA for user             │\n├───────────────────────────┼──────────────────────────────────┤\n│ disable-2fa-for-workspace │ Disable 2FA for workspace        │\n├───────────────────────────┼──────────────────────────────────┤\n│ enable-2fa-for-workspace  │ Enable 2FA for workspace         │\n└───────────────────────────┴──────────────────────────────────┘\n\nBilling\n\n┌───────────────┬─────────────────────────┐\n│    Command    │       Description       │\n├───────────────┼─────────────────────────┤\n│ referral-code │ Get referral code       │\n├───────────────┼─────────────────────────┤\n│ multipoints   │ Get multipoints balance │\n└───────────────┴─────────────────────────┘\n\n---\nQuick reference flags\n\n┌────────────────┬────────────────────────────────┬──────────────────────────────┐\n│      Flag      │             Values             │            Notes             │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --browser-type │ mimic, stealthfox              │ Linux: only mimic            │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --os-type      │ linux, macos, windows, android │ Must match host              │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --automation   │ puppeteer, selenium            │                              │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --headless     │ (no value)                     │ Required on headless servers │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --proxy-string │ \"host:port:user:pass\"          │ Optional proxy               │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --proxy-type   │ http, https, socks5            │ Required if using proxy      │\n├────────────────┼────────────────────────────────┼──────────────────────────────┤\n│ --core-version │ e.g. 144.4                     │ Specific browser version     │\n└────────────────┴────────────────────────────────┴──────────────────────────────┘\n\n---\nTroubleshooting\n\nProblem: connection refused / launcher not active\nCause: Launcher not running\nFix: mlx-launcher -port 45000 & then sleep 5\n────────────────────────────────────────\nProblem: browser version not found\nCause: Wrong os-type/browser-type combo\nFix: Use --browser-type mimic --os-type linux on Linux\n────────────────────────────────────────\nProblem: context deadline exceeded\nCause: Launcher downloading cores (first run)\nFix: Wait 30-60s, retry. Cores are cached after first download\n────────────────────────────────────────\nProblem: token contains invalid segments\nCause: Not logged in\nFix: xcli login\n────────────────────────────────────────\nProblem: UNAUTHORIZED_REQUEST\nCause: Token expired (>24h)\nFix: xcli login again\n─────────────────────────────────────���──\nProblem: Need GUI but on VPS\nCause: No display server\nFix: Delegate to Mac node via sessions_spawn\n────────────────────────────────────────\nProblem: macOS: \"unidentified developer\"\nCause: Gatekeeper quarantine\nFix: Run xattr -d com.apple.quarantine <binary>\n────────────────────────────────────────\nProblem: ```\nCause:\nFix:\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn72nqp0cwcsapep986ztma1c181h99j\",\n  \"slug\": \"multilogin\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1786457483315\n}\n\nFile v1.0.1:skill-card.md\n\n## Description:\n\nHelps agents manage Multilogin X browser profiles with the xcli CLI, including disposable profile launch, saved profile lifecycle actions, and launcher status checks.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[multilogincom](https://clawhub.ai/user/multilogincom)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and automation operators use this skill to install and run Multilogin X CLI tooling, launch headless or desktop browser profiles, manage cloud-phone profiles, and troubleshoot launcher/profile operations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow downloads mutable native binaries from latest-version endpoints.\n\nMitigation: Use pinned and verified binary versions from a trusted Multilogin source, and review generated install commands before execution.\n\nRisk: Account passwords, proxy credentials, and delegated node messages may expose secrets if pasted directly into commands.\n\nMitigation: Avoid placing secrets in shell history or remote-node messages; use explicit credential handling and rotate exposed credentials.\n\nRisk: Cloud-phone starts can consume metered mobile minutes and ADB access can expose active remote-device control.\n\nMitigation: Check plan limits before starting phones, require confirmation before enabling ADB, stop phones when finished, and disable ADB/disconnect sessions after use.\n\nRisk: Profile deletes, transfers, 2FA changes, and remote-node delegation can affect account state or access.\n\nMitigation: Require explicit user confirmation before destructive, billing-related, access-control, or delegated execution steps.\n\n## Reference(s):\n\n- [Multilogin X skill page](https://clawhub.ai/multilogincom/skills/multilogin)\n- [xcli latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest)\n- [mlx-launcher latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration]\n\n**Output Format:** [Markdown with inline shell commands and command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces operational CLI guidance for xcli, mlx-launcher, profile management, cloud-phone workflows, ADB access, and troubleshooting.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 3 files, 6195 bytes\n\nFiles: skill-card.md (2732b), SKILL.md (13698b), _meta.json (129b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: multilogin\ndescription: Use when you need to manage Multilogin X browser profiles — launch quick disposable profiles, list/start/stop saved profiles, or check launcher status using the xcli CLI tool.\nmetadata: { \"openclaw\": { \"emoji\": \"🌐\", \"requires\": { \"bins\": [\"xcli\", \"mlx-launcher\"] } } }\n---\n\n# Multilogin X\n\nManage anti-detect browser profiles via the `xcli` CLI.\n\n## CRITICAL: Launcher must run FIRST\n\nThe `mlx-launcher` process MUST be running before ANY `xcli` command (except `login`) will work.\nIf you skip this, you WILL get \"connection refused\" or \"launcher not active\" errors.\n\n---\n\n## Installation\n\n### Version resolution\n\nBoth binaries have a `/latest` endpoint that returns the current version string:\n\n```\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest       → e.g. \"0.0.72\"\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest   → e.g. \"1.75.0\"\n```\n\nDownload URLs follow the pattern:\n\n```\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/{VERSION}/xcli_{PLATFORM}\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/{VERSION}/launcher-{PLATFORM}\n```\n\n**Platform suffixes:**\n\n| Platform | xcli | mlx-launcher |\n|----------|------|--------------|\n| Linux x64 | `xcli_linux_amd64` | `launcher-linux_amd64.bin` |\n| macOS x64 | `xcli_darwin_amd64` | `launcher-darwin_amd64.bin` |\n| macOS ARM | `xcli_darwin_arm64` | `launcher-darwin_arm64.bin` |\n| Windows | `xcli_windows_amd64.exe` | `launcher-windows_amd64.exe` |\n\n### Install on Linux (VPS / Docker)\n\n```bash\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_linux_amd64\"\ncurl -L -o /usr/local/bin/mlx-launcher \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-linux_amd64.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# Verify\nxcli --help\nmlx-launcher --help\n```\n\n### Install on macOS\n\n```bash\n# Detect architecture\nARCH=$(uname -m)\nif [ \"$ARCH\" = \"arm64\" ]; then\n  SUFFIX=\"darwin_arm64\"\nelse\n  SUFFIX=\"darwin_amd64\"\nfi\n\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_${SUFFIX}\"\ncurl -L -o /usr/local/bin/mlx-launcher \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-${SUFFIX}.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# macOS may quarantine downloaded binaries — remove the flag\nxattr -d com.apple.quarantine /usr/local/bin/xcli 2>/dev/null\nxattr -d com.apple.quarantine /usr/local/bin/mlx-launcher 2>/dev/null\n\n# Verify\nxcli --help\nmlx-launcher --help\n```\n\n### Install on Windows\n\n```powershell\n# Resolve latest versions\n$CLI_VER = (Invoke-WebRequest -Uri \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\").Content.Trim()\n$LAUNCHER_VER = (Invoke-WebRequest -Uri \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\").Content.Trim()\nWrite-Host \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\nInvoke-WebRequest -Uri \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_windows_amd64.exe\" -OutFile \"$env:USERPROFILE\\xcli.exe\"\nInvoke-WebRequest -Uri \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-windows_amd64.exe\" -OutFile \"$env:USERPROFILE\\mlx-launcher.exe\"\n\n# Add to PATH (current session)\n$env:PATH += \";$env:USERPROFILE\"\n```\n\n---\n\n## Environment Detection\n\nDetect your environment before running commands:\n\n```bash\n# Am I in Docker?\nif [ -f /.dockerenv ]; then\n  echo \"DOCKER\"\nelse\n  echo \"BARE METAL\"\nfi\n```\n\nBoth environments use the same `xcli` and `mlx-launcher` binaries — they must be in PATH.\n\n---\n\n## Headless (VPS / Docker) — Step by Step\n\nThis is the primary mode. No display, no GUI. Profiles run headless.\n\n### Step 1: Start the launcher\n\n```bash\nmlx-launcher -port 45000 &\nsleep 5\n```\n\nVerify:\n\n```bash\nxcli launcher-info\n```\n\nYou MUST see a version number before proceeding. If error — wait and retry.\n\n### Step 2: Login\n\n```bash\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n```\n\nAsk the user for credentials if not provided. Tokens last ~24h, stored in `~/.config/xcli/`.\n\n### Step 3: Launch quick profiles\n\nQuick profiles are disposable — deleted automatically when stopped.\n\n```bash\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n```\n\nLaunch 2 quick profiles:\n\n```bash\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\nxcli profile-quick --browser-type mimic --os-type linux --automation puppeteer --headless\n```\n\nEach returns a profile ID and a port for Puppeteer/Selenium automation.\n\n### Headless constraints\n\n- **Always** use `--headless` — no display server available.\n- **Always** use `--os-type linux` — must match the host OS.\n- **Always** use `--browser-type mimic` — `stealthfox` is NOT available on Linux.\n- **Do NOT** use `profile-create` for disposable sessions — use `profile-quick`.\n- **Do NOT** run `xcli` commands in background with `&` (only `mlx-launcher`).\n\n---\n\n## Desktop (macOS / Windows / Linux with GUI)\n\nWhen running on a machine with a display (e.g. a Mac node), profiles can open visible browser windows.\n\n### Step 1: Start the launcher\n\n```bash\nmlx-launcher -port 45000 &\nsleep 5\nxcli launcher-info\n```\n\n### Step 2: Login\n\n```bash\nxcli login --username 'USER@EMAIL' --password 'PASSWORD'\n```\n\n### Step 3: Launch profiles (with GUI)\n\nOn macOS:\n\n```bash\nxcli profile-quick --browser-type mimic --os-type macos --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type macos --automation puppeteer\n```\n\nOn Windows:\n\n```bash\nxcli profile-quick --browser-type mimic --os-type windows --automation puppeteer\nxcli profile-quick --browser-type stealthfox --os-type windows --automation puppeteer\n```\n\nNote: No `--headless` flag — browser windows will be visible.\n\n### Desktop constraints\n\n- `--os-type` must match the actual OS (`macos`, `windows`, or `linux`).\n- Both `mimic` (Chromium) and `stealthfox` (Firefox) are available on macOS and Windows.\n- On Linux with GUI, only `mimic` is available.\n\n---\n\n## GUI via OpenClaw Node (VPS + Mac hybrid)\n\nThe most elegant setup: VPS runs 24/7 headless, Mac node handles GUI tasks on demand.\n\n### Architecture\n\n```\nVPS (OpenClaw main agent, 24/7, headless)\n  ↕ paired via gateway\nMac (OpenClaw Node, paired device)\n  → runs Multilogin with visible browser windows\n  → VPS delegates GUI tasks here\n```\n\n### When to use the Node\n\nUse the VPS for:\n- Headless quick profiles (automation, scraping, batch tasks)\n- All non-GUI work\n\nDelegate to the Mac node when:\n- User wants to SEE the browser (visual inspection, manual interaction)\n- A task requires a real display (CAPTCHAs, visual verification)\n- `stealthfox` is needed (not available on Linux)\n- Debugging a profile visually\n\n### How to delegate to the Node\n\nFrom the VPS main agent, use `sessions_spawn` to send a task to the Mac node:\n\n```json\n{\n  \"tool\": \"sessions_spawn\",\n  \"agentId\": \"node-mac\",\n  \"message\": \"Start the Multilogin launcher and launch 2 quick profiles with GUI. Use: mlx-launcher -port 45000 & sleep 5 && xcli login --username 'USER' --password 'PASS' && xcli profile-quick --browser-type mimic --os-type macos --automation puppeteer && xcli profile-quick --browser-type stealthfox --os-type macos --automation puppeteer\"\n}\n```\n\nThe node will:\n1. Start the launcher locally on the Mac\n2. Login with the provided credentials\n3. Launch profiles with visible browser windows\n4. Report back the profile IDs and ports\n\n### Setup requirements for the Node\n\nThe Mac node needs:\n- `xcli` and `mlx-launcher` binaries for macOS in PATH (see Install on macOS above)\n- Network access to Multilogin API (signin.multilogin.com)\n- OpenClaw Node running and paired to the VPS gateway\n\n---\n\n## Full CLI Command Reference\n\n### General\n\n| Command | Description |\n|---------|-------------|\n| `login` | Log in to your account |\n| `launcher-info` | Get info about the running launcher (app or agent) |\n| `help` | Help for all commands |\n\n### Folders\n\n| Command | Description |\n|---------|-------------|\n| `create-folder` | Create a folder with a given name |\n| `list-folder` | View all available folders |\n| `remove-folder` | Remove a folder by ID (or list of IDs) |\n| `update-folder` | Update folder details using its ID |\n\n### Workspaces\n\n| Command | Description |\n|---------|-------------|\n| `list-workspace` | Display available workspaces |\n| `switch-workspace` | Switch to a different workspace |\n\n### Proxies\n\n| Command | Description |\n|---------|-------------|\n| `proxy-countries` | List available countries in proxy service |\n| `proxy-regions` | Get regions by country code |\n| `proxy-cities` | Get cities by region code |\n| `proxy-get` | Get a proxy URL based on parameters |\n\n### Profiles\n\n| Command | Description |\n|---------|-------------|\n| `profile-quick` | Launch a disposable quick profile (v4 API) |\n| `profile-create` | Create a new persistent profile |\n| `profile-template` | Create a new template for a browser profile |\n| `profile-start` | Start a profile by ID |\n| `profile-stop` | Stop a profile by ID |\n| `profile-list` | List profiles in a given folder |\n| `profile-stat` | Statistics about currently launched profiles |\n| `profile-status` | Status of given profile(s) |\n| `profile-update` | Update an existing profile |\n| `profile-clone` | Duplicate a profile |\n| `profile-move` | Move profile to a different folder |\n| `profile-remove` | Remove profiles by IDs |\n| `profile-restore` | Restore a deleted profile from trash |\n| `profile-export` | Export a profile into a file |\n| `profile-export-status` | Show profile export status |\n| `profile-import` | Import a profile from a file |\n| `profile-import-status` | Show profile import status |\n| `profile-cookie-import` | Import cookies to a profile |\n| `profile-cookie-export` | Export cookies from a profile |\n\n### Scripts\n\n| Command | Description |\n|---------|-------------|\n| `script-list` | List available scripts in Script Runner folder |\n| `script-start` | Run a script in a Multilogin profile |\n| `script-stop` | Stop a running script |\n| `cookie-robot` | Start Cookie Robot on profile(s) |\n\n### Objects (extensions, files, etc.)\n\n| Command | Description |\n|---------|-------------|\n| `object-types` | List object types |\n| `object-list` | List objects |\n| `object-meta` | Fetch object metadata |\n| `object-create` | Create an object (requires running agent) |\n| `object-download` | Download object to local storage |\n| `object-delete` | Delete an object |\n| `object-restore` | Restore object from trash |\n| `object-stats` | Display object usage statistics |\n| `object-convert` | Convert storage type (local ↔ cloud) |\n| `enable-object` | Enable object for profiles |\n| `disable-object` | Disable object for profiles |\n| `object-extension-create` | Create an extension object from a URL |\n\n### Tags\n\n| Command | Description |\n|---------|-------------|\n| `create-tag` | Create one or more tags |\n| `tag-list` | List tags (with optional search filter) |\n| `tag-remove` | Remove tags by IDs |\n| `tag-assign` | Assign tags to a profile |\n| `tag-unassign` | Unassign tags from a profile |\n\n### 2FA\n\n| Command | Description |\n|---------|-------------|\n| `enable-2fa` | Enable two-factor authentication |\n| `view-backup-codes` | View backup codes |\n| `disable-2fa-for-user` | Disable 2FA for user |\n| `disable-2fa-for-workspace` | Disable 2FA for workspace |\n| `enable-2fa-for-workspace` | Enable 2FA for workspace |\n\n### Billing\n\n| Command | Description |\n|---------|-------------|\n| `referral-code` | Get referral code |\n| `multipoints` | Get multipoints balance |\n\n---\n\n## Quick reference flags\n\n| Flag | Values | Notes |\n|------|--------|-------|\n| `--browser-type` | `mimic`, `stealthfox` | Linux: only `mimic` |\n| `--os-type` | `linux`, `macos`, `windows`, `android` | Must match host |\n| `--automation` | `puppeteer`, `selenium` | |\n| `--headless` | (no value) | Required on headless servers |\n| `--proxy-string` | `\"host:port:user:pass\"` | Optional proxy |\n| `--proxy-type` | `http`, `https`, `socks5` | Required if using proxy |\n| `--core-version` | e.g. `144.4` | Specific browser version |\n\n---\n\n## Troubleshooting\n\n| Problem | Cause | Fix |\n|---------|-------|-----|\n| `connection refused` / `launcher not active` | Launcher not running | `mlx-launcher -port 45000 &` then `sleep 5` |\n| `browser version not found` | Wrong os-type/browser-type combo | Use `--browser-type mimic --os-type linux` on Linux |\n| `context deadline exceeded` | Launcher downloading cores (first run) | Wait 30-60s, retry. Cores are cached after first download |\n| `token contains invalid segments` | Not logged in | `xcli login` |\n| `UNAUTHORIZED_REQUEST` | Token expired (>24h) | `xcli login` again |\n| Need GUI but on VPS | No display server | Delegate to Mac node via `sessions_spawn` |\n| macOS: \"unidentified developer\" | Gatekeeper quarantine | Run `xattr -d com.apple.quarantine <binary>` |\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72nqp0cwcsapep986ztma1c181h99j\",\n  \"slug\": \"multilogin\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1771576350181\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nHelps agents manage Multilogin X browser profiles, including launching quick disposable profiles, listing, starting, and stopping saved profiles, and checking launcher status with the xcli CLI tool. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[MultiloginCom](https://clawhub.ai/user/MultiloginCom) <br>\n\n### License/Terms of Use: <br>\n\n\n## Use Case: <br>\nDevelopers, operators, and automation agents use this skill to install Multilogin X command-line tools, start the launcher, authenticate, and manage headless or desktop browser profiles for automation workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles Multilogin account credentials and browser profiles. <br>\nMitigation: Use a dedicated low-privilege account, avoid putting passwords in prompts or command lines, and clear or revoke local xcli tokens on shared machines. <br>\nRisk: The skill installs and runs external Multilogin binaries. <br>\nMitigation: Install only from trusted Multilogin sources and verify downloaded binaries where possible before allowing an agent to run them. <br>\nRisk: Credential passing across delegated node sessions can expose secrets. <br>\nMitigation: Do not send credentials through sessions_spawn messages; provide credentials through a secure local channel on the target machine. <br>\nRisk: A running launcher can keep browser automation available after the task is complete. <br>\nMitigation: Stop the launcher when finished and review active profiles before leaving shared or unattended systems. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Multilogin X Skill](https://clawhub.ai/MultiloginCom/multiloginx) <br>\n- [Multilogin X CLI Latest Version Endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest) <br>\n- [Multilogin X Launcher Latest Version Endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions] <br>\n**Output Format:** [Markdown with inline shell and PowerShell code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires xcli and mlx-launcher; commands may depend on local OS, launcher state, credentials, and active Multilogin profile state.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: multilogin Owner: multilogincom Summary: Use when you need to manage Multilogin through xcli, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings. Tags: automation:1.0.0, browser:1.0.0, headless:1.0.0, latest:1.0.2 Version history: v1.0.2 | 2026-09-21T12:40:51.943Z | user - Expanded skill description to include management of Androi","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -L -o /usr/local/bin/xcli"},{"language":"bash","snippet":"curl -L -o /usr/local/bin/mlx-launcher"},{"language":"bash","snippet":"curl -L -o /usr/local/bin/xcli"},{"language":"bash","snippet":"curl -L -o /usr/local/bin/mlx-launcher"},{"language":"bash","snippet":"# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_linux_amd64\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-linux_amd64.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on macOS\n\n# Detect architecture\nARCH=$(uname -m)\nif [ \"$ARCH\" = \"arm64\" ]; then\n  SUFFIX=\"darwin_arm64\"\nelse\n  SUFFIX=\"darwin_amd64\"\nfi\n\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_${SUFFIX}\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-${SUFFIX}.bin\"\n\n# Make executable\nchmod +x /usr/local/bin/xcli /usr/local/bin/mlx-launcher\n\n# macOS may quarantine downloaded binaries — remove the flag\nxattr -d com.apple.quarantine /usr/local/bin/xcli 2>/dev/null\nxattr -d com.apple.quarantine /usr/local/bin/mlx-launcher 2>/dev/null\n\n# Verify\nxcli --help\nmlx-launcher --help\n\nInstall on Windows\n\n# Resolve latest versions\n$CLI_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\").Content.Trim()\n$LAUNCHER_VER = (Invoke-WebRequest -Uri\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\").Content.Trim()\nWri"},{"language":"text","snippet":"Do not start phones when the remaining minutes is 0.\n\n### Create a cloud phone\n\nLook up device / location options, then create. **A proxy is required.**"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---                                                                                                            \nname: multilogin                                                                                               \ndescription: Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings.\nmetadata: { \"openclaw\": { \"emoji\": \"🌐\", \"requires\": { \"bins\": [\"xcli\", \"mlx-launcher\"] } } }                   \n---                                                                                                            \n                                                                                                               \n# Multilogin\n\nMultilogin is a cloud phone platform for social media marketers. This skill connects OpenClaw with the Multilogin CLI (`xcli`), allowing people and AI agents to manage social profiles using AI prompts.\n\nUse Android cloud phones for mobile app workflows and browser profiles for web workflows. The skill supports creating, listing, starting, stopping, and organizing profiles, as well as managing apps, files, proxies, scripts, tags, workspaces, ADB access, and account settings.\n\n## CRITICAL: Launcher must run FIRST\n\nThe `mlx-launcher` process MUST be running before ANY `xcli` command (except `login`) will work.\nIf you skip this, you WILL get \"connection refused\" or \"launcher not active\" errors.\n\n---\n\n## Installation\n\n### Version resolution\n\nBoth binaries have a `/latest` endpoint that returns the current version string:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest       → e.g. \"0.0.72\"\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest   → e.g. \"1.75.0\"\n\nDownload URLs follow the pattern:\n\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/{VERSION}/xcli_{PLATFORM}\nhttps://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/{VERSION}/launcher-{PLATFORM}\n\n**Platform suffixes:**\n\n| Platform | xcli | mlx-launcher |\n|----------|------|--------------|\n| Linux x64 | `xcli_linux_amd64` | `launcher-linux_amd64.bin` |\n| macOS x64 | `xcli_darwin_amd64` | `launcher-darwin_amd64.bin` |\n| macOS ARM | `xcli_darwin_arm64` | `launcher-darwin_arm64.bin` |\n| Windows | `xcli_windows_amd64.exe` | `launcher-windows_amd64.exe` |\n\n### Install on Linux (VPS / Docker)\n\n```bash\n# Resolve latest versions\nCLI_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest\")\nLAUNCHER_VER=$(curl -sL \"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest\")\necho \"Installing xcli $CLI_VER, launcher $LAUNCHER_VER\"\n\n# Download binaries\ncurl -L -o /usr/local/bin/xcli\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/${CLI_VER}/xcli_linux_amd64\"\ncurl -L -o /usr/local/bin/mlx-launcher\n\"https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/${LAUNCHER_VER}/launcher-linux_amd64.bin\"\n\n# Make executable\nchmod "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72nqp0cwcsapep986ztma1c181h99j\",\n  \"slug\": \"multilogin\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1789994451943\n}"},{"path":"skill-card.md","content":"## Description:\n\nUse when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[multilogincom](https://clawhub.ai/user/multilogincom)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, operators, and social media workflow teams use this skill to control Multilogin browser profiles and Android cloud phones through the `xcli` and `mlx-launcher` command-line tools.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can give an agent authority over Multilogin profiles, cloud phones, files, proxies, ADB sessions, account settings, and potentially billed mobile minutes.\n\nMitigation: Install only when the Multilogin CLI distribution is trusted, review proposed commands before execution, and require explicit confirmation before deletes, transfers, ADB actions, file operations, 2FA changes, or actions that spend mobile minutes.\n\nRisk: The skill includes workflows that may handle account passwords or delegated node access.\n\nMitigation: Avoid sending passwords in chat or spawned node messages; prefer a pre-authenticated local `xcli` session or another secret-safe login method.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/multilogincom/skills/multilogin)\n- [xcli latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/cli-mlx/latest)\n- [mlx-launcher latest version endpoint](https://ml000x-dev-dists.s3.eu-north-1.amazonaws.com/launcher-mlx/latest)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and CLI command references]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires `xcli` and `mlx-launcher`; may involve credentials, profile operations, cloud phone minutes, files, proxies, ADB sessions, and account settings.]\n\n## Skill Version(s):\n\n1.0.2 (source: release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when you need to manage Multilogin through `xcli`, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings. Skill: multilogin Owner: multilogincom Summary: Use when you need to manage Multilogin through xcli, including Android cloud phones, browser profiles, workspaces, proxies, scripts, tags, files, apps, ADB access, and account settings. Tags: automation:1.0.0, browser:1.0.0, headless:1.0.0, latest:1.0.2 Version history: v1.0.2 | 2026-09-21T12:40:51.943Z | user - Expanded skill description to include management of Androi","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1164,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T19:00:03.487Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:43:05.116Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}