{"_id":"@agentsystemlabs/mission-control-agent","_rev":"5-ee1228e09197c85e63cc896ba17860f5","name":"@agentsystemlabs/mission-control-agent","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@agentsystemlabs/mission-control-agent","version":"0.1.0","license":"MIT","_id":"@agentsystemlabs/mission-control-agent@0.1.0","maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"bin":{"mc-agent":"dist/cli.cjs","mission-control-agent":"dist/cli.cjs"},"dist":{"shasum":"5c87417253a772793c15bfc90978fe51a045698a","tarball":"https://registry.npmjs.org/@agentsystemlabs/mission-control-agent/-/mission-control-agent-0.1.0.tgz","fileCount":31,"integrity":"sha512-qLdNmBzQxUl97KQyhFexqr2qa0NoNhQPc8jO9i7kTKP/BDp+C8dr4TsxrrIOnjhStw6bwghgvOTLU7W5ioG2Nw==","signatures":[{"sig":"MEUCIQD5oLRsfQhot8impPXKqWyRsqBzmLC8ojEvlMnA6L+J+gIgW+M3M5z1nv3RzTXVtwXBoZK1/e3JC4n4dc6Bl5b+OfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459604},"main":"dist/index.cjs","type":"module","types":"dist/types/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"00067fb3ab6952d5c9dfc990a8bffecdfbe78325","scripts":{"lint":"eslint src build.mjs","test":"vitest run","build":"node build.mjs && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"webdevcody","email":"webdevcody@gmail.com"},"repository":{"url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git","type":"git"},"_npmVersion":"11.12.1","description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"8.21.0","ignore":"7.0.5","node-pty":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.4.0","vitest":"4.1.6","esbuild":"0.28.0","@types/ws":"8.18.1","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"25.8.0","typescript-eslint":"8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mission-control-agent_0.1.0_1780104452713_0.5851553006868664","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@agentsystemlabs/mission-control-agent","version":"0.2.0","license":"MIT","_id":"@agentsystemlabs/mission-control-agent@0.2.0","maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"bin":{"mc-agent":"dist/cli.cjs","mission-control-agent":"dist/cli.cjs"},"dist":{"shasum":"277f1964539a17513bdcafd4bc4277527aeb161f","tarball":"https://registry.npmjs.org/@agentsystemlabs/mission-control-agent/-/mission-control-agent-0.2.0.tgz","fileCount":31,"integrity":"sha512-lnhSXDNnYFDhRnw9GKsNZJ9VEkV+WXk3bZNqEfqPV66vsziIPGozbxsWJcoPbRPU0ufAsmwVnWIs5M3iqYlpgg==","signatures":[{"sig":"MEYCIQDo1bsnzNhJ1hxHcDan0D87qYv6TBlvHoocdOvcQWIMzwIhAPj0P/u10YUdapN8bXMtrixKOs6l2XeQx0joLMIC2liC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentsystemlabs%2fmission-control-agent@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":461090},"main":"dist/index.cjs","type":"module","types":"dist/types/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"7257efbb7e8e52c856b3a49964b90e87f8ed2984","scripts":{"lint":"eslint src build.mjs","test":"vitest run","build":"node build.mjs && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b204674b-8934-47f2-ae8a-01f905619731"}},"repository":{"url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"8.21.0","ignore":"7.0.5","node-pty":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.4.0","vitest":"4.1.6","esbuild":"0.28.0","@types/ws":"8.18.1","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"25.8.0","typescript-eslint":"8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mission-control-agent_0.2.0_1780197106084_0.9412426734532959","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@agentsystemlabs/mission-control-agent","version":"0.2.1","license":"MIT","_id":"@agentsystemlabs/mission-control-agent@0.2.1","maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"bin":{"mc-agent":"dist/cli.cjs","mission-control-agent":"dist/cli.cjs"},"dist":{"shasum":"e698196432b7d662dcfb6af6d8d3012d80ae1c1e","tarball":"https://registry.npmjs.org/@agentsystemlabs/mission-control-agent/-/mission-control-agent-0.2.1.tgz","fileCount":32,"integrity":"sha512-N1aiDuINpG69MdFZK5qgP61cbexWZjLpF/E2xgaTCIc0s881VWpTIBi6SwGDKG2v7R2BeO0AlCoH9kKAzg0lzA==","signatures":[{"sig":"MEUCIBvpHdfv4DwMuaOssEBskoTNr+CKrYw0HKOd14CbHK1AAiEAjoUyuYzCsrB+l+Yzl4V8f2RINYXxcogWl14qK3XjoGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentsystemlabs%2fmission-control-agent@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":463408},"main":"dist/index.cjs","type":"module","types":"dist/types/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"352dc8af19eac34a5d16792bfc1f305666b19c99","scripts":{"lint":"eslint src build.mjs","test":"vitest run","build":"node build.mjs && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b204674b-8934-47f2-ae8a-01f905619731"}},"repository":{"url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"8.21.0","ignore":"7.0.5","node-pty":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.4.0","vitest":"4.1.6","esbuild":"0.28.0","@types/ws":"8.18.1","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"25.8.0","typescript-eslint":"8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mission-control-agent_0.2.1_1780198275528_0.6349010273248745","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@agentsystemlabs/mission-control-agent","version":"0.3.0","license":"MIT","_id":"@agentsystemlabs/mission-control-agent@0.3.0","maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"bin":{"mc-agent":"dist/cli.cjs","mission-control-agent":"dist/cli.cjs"},"dist":{"shasum":"81c294f53de06f1263befa178da908ab3d7ef36b","tarball":"https://registry.npmjs.org/@agentsystemlabs/mission-control-agent/-/mission-control-agent-0.3.0.tgz","fileCount":34,"integrity":"sha512-m6NX4uNt2r6D9Uga2/y5mXSL0nu8XpTNhFLNUBsiZN9BmWreA0JOBZYTNnKiVhHJCaKw/yUjglAcS2hoDXBNvQ==","signatures":[{"sig":"MEUCIF/UIVjna3x0ZQMbxrzm7rGppRZoAsSfk8rFSjjggRiQAiEA0xFfrKRDPF4U9TiQAG/yxnzBq2qwIG4/pq5UODKpxw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentsystemlabs%2fmission-control-agent@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486752},"main":"dist/index.cjs","type":"module","types":"dist/types/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"efdf409f4731ea57d3643b2ac01a547e9fb47b86","scripts":{"lint":"eslint src build.mjs","test":"vitest run","build":"node build.mjs && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b204674b-8934-47f2-ae8a-01f905619731"}},"repository":{"url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git","type":"git"},"_npmVersion":"11.16.0","description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"8.21.0","ignore":"7.0.5","node-pty":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.4.0","vitest":"4.1.6","esbuild":"0.28.0","@types/ws":"8.18.1","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"25.8.0","typescript-eslint":"8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mission-control-agent_0.3.0_1780809868728_0.03023174308355836","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@agentsystemlabs/mission-control-agent","version":"0.3.1","description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","type":"module","bin":{"mission-control-agent":"dist/cli.cjs","mc-agent":"dist/cli.cjs"},"main":"dist/index.cjs","types":"dist/types/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"node build.mjs && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test":"vitest run","lint":"eslint src build.mjs","prepublishOnly":"npm run typecheck && npm test && npm run build"},"engines":{"node":">=24.0.0"},"dependencies":{"ignore":"7.0.5","node-pty":"1.1.0","ws":"8.21.0"},"devDependencies":{"@eslint/js":"10.0.1","@types/node":"25.8.0","@types/ws":"8.18.1","esbuild":"0.28.0","eslint":"10.4.0","typescript":"6.0.3","typescript-eslint":"8.59.3","vitest":"4.1.6"},"repository":{"type":"git","url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git"},"homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"license":"MIT","gitHead":"5c553ca06233179b759b3c195c0275d51ba85d9a","_id":"@agentsystemlabs/mission-control-agent@0.3.1","_nodeVersion":"24.16.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-0pfaFHOqrNYOSEBpNg4c3DkayiKWYGW+dy7WJVxzH4uo8woUmkDYVXXbnt0bqMHB4vjzCDS2nVQi1L8YoPs6lw==","shasum":"e0b19cc0370c2a3d6278030c83bb3b97c8d7772b","tarball":"https://registry.npmjs.org/@agentsystemlabs/mission-control-agent/-/mission-control-agent-0.3.1.tgz","fileCount":35,"unpackedSize":492616,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentsystemlabs%2fmission-control-agent@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1rg/7WI8dUP94YMjdblPZMteffCHb1VXkaP8JSpddwQIhAKy1UOgBJ3XV9kdHg+mJHBuBXYYYshG2QFgUnvVFSy9t"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b204674b-8934-47f2-ae8a-01f905619731"}},"directories":{},"maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mission-control-agent_0.3.1_1780845758855_0.9403983782416596"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T01:27:32.599Z","modified":"2026-06-07T15:22:39.313Z","0.1.0":"2026-05-30T01:27:32.888Z","0.2.0":"2026-05-31T03:11:46.235Z","0.2.1":"2026-05-31T03:31:15.708Z","0.3.0":"2026-06-07T05:24:28.898Z","0.3.1":"2026-06-07T15:22:39.032Z"},"bugs":{"url":"https://github.com/AgentSystemLabs/mission-control-agent/issues"},"license":"MIT","homepage":"https://github.com/AgentSystemLabs/mission-control-agent#readme","repository":{"type":"git","url":"git+https://github.com/AgentSystemLabs/mission-control-agent.git"},"description":"Mission Control sandbox agent for local Docker, Railway, and remote VM deployments.","maintainers":[{"name":"webdevcody","email":"webdevcody@gmail.com"}],"readme":"# Mission Control Agent\n\nPublic sandbox agent for Mission Control. It runs on a local Docker sandbox, Railway, or any VM and exposes a bearer-protected WebSocket control plane for PTY, file, git, and SSH setup RPC.\n\n## Install on a VM\n\nWith npm / npx:\n\n```sh\nnpx @agentsystemlabs/mission-control-agent setup\ncd mission-control-agent\ndocker compose up -d --build\n```\n\nOr with the shell installer:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/AgentSystemLabs/mission-control-agent/main/scripts/install.sh | bash\n```\n\nThe setup command prints the generated `MC_AGENT_API_KEY`. Paste that key into Mission Control when creating a **Remote VM** sandbox.\n\nFor same-machine testing or SSH tunnels, use:\n\n```txt\nws://localhost:9333\n```\n\nFor public VM/Railway access, terminate TLS and use `https://` / `wss://`.\n\n## Run Directly\n\n```sh\nexport MC_AGENT_API_KEY=\"$(openssl rand -hex 32)\"\nexport MC_WORKSPACE_ROOT=/workspace\nmission-control-agent\n```\n\n## Railway\n\nUse the **[Railway deploy bundle](./deploy/railway/README.md)** for the recommended setup (persistent volume, health check, template checklist).\n\nQuick version:\n\n1. Deploy from GitHub with **Root Directory** empty (repo root) — not `docker/remote-agent`.\n2. Set **Config-as-Code Path** to `deploy/railway/railway.json` (or use root `railway.toml`).\n3. Attach a Railway **volume** at **`/home/workspace`** — this must match the container `HOME` (persists `~/.ssh`, Claude/Codex/Cursor auth, and git clones via `/workspace` symlink).\n\n   Do not mount only `/workspace`; agent auth lives under `/home/workspace`.\n4. Set `MC_AGENT_API_KEY` (`openssl rand -hex 32`). Do not set `MC_AGENT_PORT`.\n5. Generate a public domain and use `wss://…` in Mission Control.\n\nWithout a volume, SSH keys and agent CLI login state are lost on every redeploy.\n\n## Local Mission Control Docker Image\n\nMission Control's private desktop app builds its local sandbox image from this package's Dockerfile:\n\n```txt\ndocker/sandbox-base/Dockerfile\n```\n\nThat keeps local Docker sandboxes and remote VM sandboxes on the same published agent runtime.\n\n## GitHub CLI (`gh`) authentication\n\nThe image includes the GitHub CLI so agents can open pull requests (`gh pr create`). `gh`\nauthenticates to the GitHub **API with a token** — it does **not** use your SSH key (which only\ncovers git push/clone). Authenticate it once per deployment, using one of:\n\n**Option A — interactive login (persists on the home volume).** In a sandbox/VM shell:\n\n```sh\ngh auth login\n```\n\nChoose **GitHub.com**, **SSH** as the git protocol (reuses your existing key for pushes), then\n**\"Login with a web browser\"** and open the printed `github.com/login/device` code on your\nmachine — or paste a Personal Access Token. Credentials are saved under `~/.config/gh`, which lives\non the persistent home volume (`/home/workspace`), so this is a one-time step that survives redeploys.\n\nNon-interactive equivalent:\n\n```sh\necho <YOUR_PAT> | gh auth login --with-token\n```\n\n**Option B — token via environment.** Set `GH_TOKEN` (a Personal Access Token) in your\ndeployment's environment. `gh` picks it up automatically with no login step; the token lives in your\nplatform's env config. (The agent forwards `GH_TOKEN` to agent sessions — only `MC_*` vars are\nstripped.)\n\nVerify either way:\n\n```sh\ngh auth status\n```\n\n## Environment\n\n| Var | Default | Purpose |\n| --- | --- | --- |\n| `MC_AGENT_PORT` | `PORT` or `9333` | WS + health port |\n| `PORT` | empty | Railway-provided port fallback |\n| `MC_AGENT_BIND_HOST` | `0.0.0.0` | Bind address; use `::` for dual-stack private networks |\n| `MC_WORKSPACE_ROOT` | `/workspace` | Confinement root for spawns + RPC |\n| `MC_AGENT_API_KEY` | empty | Required bearer secret for remote deployments |\n| `MC_PAIRING_TOKEN` | empty | Local Docker compatibility fallback for the same bearer secret |\n| `MC_HOOK_API_HOST` | `host.docker.internal` | Host the in-container hooks POST to |\n\n## Security\n\nTreat a public agent URL as a privileged shell exposed to the internet. Anyone with the API key can run commands, read/write workspace files, clone repos, and use credentials stored in the remote agent home directory.\n\nRecommended posture:\n\n- Use a long random `MC_AGENT_API_KEY` and rotate it if it may have leaked.\n- Use `wss://` for public access. Mission Control rejects plaintext `ws://` for public hostnames.\n- Prefer SSH tunnels, WireGuard/Tailscale, VPN/VPC, or private networking over a public domain.\n- Prefer generated sandbox keys on shared or public remote VMs; copy-host mode can upload your host private keys to the remote over the agent connection.\n- `/health` is intentionally unauthenticated and returns only liveness/version.\n\nRailway private networking is reachable only from services in the same Railway project/environment. A desktop app on your laptop needs a tunnel or gateway to reach `*.railway.internal`.\n\n## Development\n\n```sh\nnpm install\nnpm run typecheck\nnpm test\nnpm run build\n```\n","readmeFilename":"README.md"}