{"id":50849071,"url":"https://github.com/yakami129/multisoul","last_synced_at":"2026-06-14T12:03:27.580Z","repository":{"id":356289392,"uuid":"1223187306","full_name":"yakami129/multisoul","owner":"yakami129","description":"MultiSoul lets you control AI agents running on your own computer from your phone. You can watch messages and tool calls in real time, answer approval questions, and receive task completion notifications.","archived":false,"fork":false,"pushed_at":"2026-06-08T01:56:13.000Z","size":244771,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T03:21:22.084Z","etag":null,"topics":["claude-code","claude-mobile","codex","ios-app"],"latest_commit_sha":null,"homepage":"https://multisoul-site.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yakami129.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-28T04:54:57.000Z","updated_at":"2026-06-07T08:01:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f547d2c-5e14-4f5e-aeae-374516504eed","html_url":"https://github.com/yakami129/multisoul","commit_stats":null,"previous_names":["yakami129/multisoul"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/yakami129/multisoul","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakami129%2Fmultisoul","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakami129%2Fmultisoul/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakami129%2Fmultisoul/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakami129%2Fmultisoul/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yakami129","download_url":"https://codeload.github.com/yakami129/multisoul/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakami129%2Fmultisoul/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34320273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-mobile","codex","ios-app"],"created_at":"2026-06-14T12:03:26.826Z","updated_at":"2026-06-14T12:03:27.571Z","avatar_url":"https://github.com/yakami129.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eMultiSoul\u003c/h1\u003e\n  \u003cp align=\"center\"\u003eA mobile console for local AI agents.\u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"ARCHITECTURE.md\"\u003eArchitecture\u003c/a\u003e\n    ·\n    \u003ca href=\"docs/product-specs/\"\u003eProduct Specs\u003c/a\u003e\n    ·\n    \u003ca href=\"docs/runbooks/cli-release.md\"\u003eCLI Release\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/yakami129/multisoul/stargazers\"\u003e\n      \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/yakami129/multisoul?style=social\"\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    English | \u003ca href=\"README.zh-CN.md\"\u003e中文\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/multisoul-feature-intro-en-v2.png\" alt=\"MultiSoul product overview: playful command, serious work, with local agent control, activity tracking, and decision approval screens\" width=\"920\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/multisoul-feature-intro-en-v3.png\" alt=\"MultiSoul feature flow: connect the agent fleet, track the mission log, and review approval cards from a phone\" width=\"920\" /\u003e\n\u003c/p\u003e\n\n---\n\nMultiSoul lets you control AI agents running on your own computer from your phone. You can watch messages and tool calls in real time, answer approval questions, and receive task completion notifications.\n\nThere is no central MultiSoul backend. `msctl` runs locally, stores data locally, and exposes an HTTPS endpoint your phone connects to. The default setup uses a public relay tunnel—no VPN required.\n\n## What You Can Do\n\n- Control Claude Code, Codex, or Cursor Agent CLI from a phone\n- Watch agent messages, tool calls, tool results, and task status\n- Answer `AskUserQuestion` prompts in the mobile app\n- Keep an Inbox for pending questions and completed/failed tasks\n- Connect one phone to multiple computers\n- Run the service in the foreground or as a background daemon\n\n## How It Works\n\n```\nMobile App (React Native + Expo)\n        │ HTTPS / WSS + Bearer token\n        ▼\nmsctl serve (Rust, local machine)\n        ├── Relay (default): Cloudflare Tunnel → public HTTPS URL\n        ├── Tailscale / Funnel (optional): private or public Tailnet URL\n        ├── Runtime adapters: Claude Code / Codex / Cursor Agent CLI\n        ├── REST + WebSocket\n        └── SQLite: ~/.config/msctl/serve.db\n```\n\n## Requirements\n\n- Node.js 18+\n- One agent runtime installed on your computer:\n  - Claude Code: `claude`\n  - Codex CLI: `codex`\n  - Cursor Agent CLI: `agent`\n\n## Quick Start\n\n### 1. Install `msctl`\n\n```bash\nnpm install -g @yakami129/msctl\n```\n\n### 2. Start the service\n\n```bash\nmsctl daemon quickstart\n```\n\nAuto-generates a token, installs a background daemon, opens a public HTTPS relay tunnel, and prints a QR code. Scan it in the app (**Agents → + → Scan QR**), or tap **Paste connection string** and use the string printed beside the QR. First run may take several minutes while cloudflared downloads.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/multisoul-add-endpoint.png\" alt=\"MultiSoul Add Endpoint flow: tap plus on Agents, then scan QR or paste connection string\" width=\"520\" /\u003e\n\u003c/p\u003e\n\nIf the QR does not appear in time, run `msctl logs --source service -f` — the pairing QR is printed there once the tunnel is live.\n\n```bash\nmsctl daemon status\nmsctl logs --source service -f\nmsctl daemon restart\nmsctl daemon stop\n```\n\n### 3. Register an Agent\n\nFrom the project you want to control:\n\n```bash\ncd /path/to/project\nmsctl agent codex\nmsctl agent claude-code\nmsctl agent cursor-cli\nmsctl agent infcode\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eAdvanced: full \u003ccode\u003emsctl agent register\u003c/code\u003e options\u003c/summary\u003e\n\nUse explicit registration when you need custom names, modes, or project paths:\n\n**Codex**\n\n```bash\nmsctl agent register \\\n  --name work-codex \\\n  --project /path/to/project \\\n  --runtime codex \\\n  --mode full-auto\n```\n\n**Claude Code**\n\n```bash\nmsctl agent register \\\n  --name work-claude \\\n  --project /path/to/project \\\n  --runtime claude-code\n```\n\n**Cursor Agent CLI**\n\n```bash\nmsctl agent register \\\n  --name work-cursor \\\n  --project /path/to/project \\\n  --runtime cursor-cli \\\n  --mode ask\n```\n\n**InfCode**\n\n```bash\nmsctl agent register \\\n  --name work-infcode \\\n  --project /path/to/project \\\n  --runtime infcode \\\n  --mode full-auto\n```\n\n\u003c/details\u003e\n\nCheck registered agents:\n\n```bash\nmsctl agent list\n```\n\n### 4. Run the mobile app locally\n\n```bash\ncd mobile\npnpm install\npnpm start\n```\n\nNative simulators:\n\n```bash\npnpm ios\npnpm android\n```\n\n## Extended mode: Tailscale (optional)\n\nThe default relay tunnel works without a VPN. Use Tailscale when you want a **private Tailnet** or **public HTTPS via Tailscale Funnel** instead.\n\nInstall Tailscale on your computer and phone, then sign in to the same Tailnet. Official guide: [tailscale.com/docs/install](https://tailscale.com/docs/install)\n\n```bash\n# Linux example\ncurl -fsSL https://tailscale.com/install.sh | sh\nsudo tailscale up\ntailscale status\n```\n\nSwitch the daemon to Tailscale:\n\n```bash\nmsctl daemon quickstart --tailnet    # private Tailnet IP\nmsctl daemon quickstart --funnel     # public HTTPS via Funnel\n```\n\nOr set `serve_mode = \"tailnet\"` | `\"funnel\"` in `~/.config/msctl/config.toml`.\n\nFor Funnel, grant HTTPS on port 443 once (approve in browser if prompted), then stop with `Ctrl-C`:\n\n```bash\ntailscale funnel --https=443 8765\nmsctl daemon quickstart --funnel\n```\n\nSee [Tailscale Funnel docs](https://tailscale.com/docs/features/tailscale-funnel).\n\nForeground serve (without daemon):\n\n```bash\nmsctl serve --tailnet --port 8765 --token YOUR_TOKEN\nmsctl serve --funnel --port 8765 --token YOUR_TOKEN\n```\n\n## Development\n\nCLI:\n\n```bash\ncd cli\ncargo build\ncargo test\n```\n\nMobile:\n\n```bash\ncd mobile\npnpm install\npnpm typecheck\npnpm test -- --watchAll=false\npnpm start\n```\n\n## Run from source (local development)\n\nWhen working on this repo—or before the CLI is published—run commands through Cargo instead of the installed `msctl`. Requires a Rust toolchain.\n\nFrom the `cli/` directory:\n\n```bash\ncd cli\ncargo run -- daemon quickstart\ncargo run -- agent codex\ncargo run -- agent claude-code\ncargo run -- agent cursor-cli\ncargo run -- agent infcode\ncargo run -- serve\n```\n\nTo register an agent while your shell is in another project directory:\n\n```bash\ncd /path/to/project\ncargo run --manifest-path /path/to/multisoul/cli/Cargo.toml -- agent codex\ncargo run --manifest-path /path/to/multisoul/cli/Cargo.toml -- agent claude-code\ncargo run --manifest-path /path/to/multisoul/cli/Cargo.toml -- agent cursor-cli\ncargo run --manifest-path /path/to/multisoul/cli/Cargo.toml -- agent infcode\n```\n\nReplace `msctl` with `cargo run --` (or `cargo run --manifest-path … --`) for any other subcommand, e.g. `cargo run -- logs --source service -f`.\n\n## Local Data\n\n| Path | Purpose |\n|------|---------|\n| `~/.config/msctl/serve.db` | Agents, conversations, messages, tasks, push tokens |\n| `~/.config/msctl/config.toml` | Local `msctl` config |\n| `~/.config/msctl/uploads/` | Uploaded images |\n| Mobile local storage | Endpoints, tokens, Inbox cache |\n\n## Documentation\n\n- [ARCHITECTURE.md](ARCHITECTURE.md): system architecture\n- [docs/product-specs/](docs/product-specs/): product specs\n- [docs/design-docs/](docs/design-docs/): design notes\n- [docs/runbooks/cli-release.md](docs/runbooks/cli-release.md): CLI release\n- [mobile/docs/ios-publish.md](mobile/docs/ios-publish.md): iOS release\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakami129%2Fmultisoul","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyakami129%2Fmultisoul","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakami129%2Fmultisoul/lists"}