install-shellby-mcp
Skill17 starsChanged 50 days agoMITView on GitHub
Install and verify Shellby MCP on a Mac using terminal access only. Use when a user asks an agent to install, set up, configure, or finish a new Shellby MCP installation from this repository.
- Installs packages
In this repository3 other files it gives its agents.
- wiki/AGENTS.mdAGENTS.md
- audit-logsSkill
- create-skillSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. About 0 are common, 14 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Never ask the user to paste an ngrok authtoken, ChatGPT credential, or other secret into chat.
- Very specific: line 15
Do not run npm start, npm run restart, npm run status, npm run logs, npm run stop, or a direct pm2 command before the human establishes the …
- Very specific: line 16
Never kill an existing PM2 daemon until you know what it manages and the human explicitly agrees to disrupt those processes.
- Distinctive: line 17
Treat Computer Use permission status observed from the agent's own host process as non-authoritative for Terminal.app.
- Very specific: line 29
If the repository is not already checked out, clone https://github.com/Serbyte-Development/shellby-mcp.git and enter it.
- Very specific: line 47
Use npm ci, not npm install, for a normal install from the committed lockfile.
- Distinctive: line 51
Check ngrok without exposing credential contents:
- Distinctive: line 63
If ngrok is not authenticated, stop and ask the human to run this themselves in Terminal.app:
- Distinctive: line 73
Create or migrate the complete active config before running side-effecting setup:
- Distinctive: line 94
If setup launches the dedicated Chrome window, ask the human to sign into ChatGPT in that window.
- Distinctive: line 95
If Chrome is absent, browser-backed subagents remain optional and core Shellby can still be installed.
- Very specific: line 99
Before touching PM2, inspect for an already-running user PM2 daemon without invoking PM2 itself.
- Very specific: line 101
If no PM2 daemon is running, ask the human to open Terminal.app, cd to this repository, and keep that Terminal as the permission source for …
- Distinctive: line 103
If Computer Use is desired, have the human first run:
- Distinctive: line 117
Do not run this command on their behalf from the agent's shell.
- Distinctive: line 119
Ask the human to tell you when startup finishes and to share non-secret error text if it fails.
- Distinctive: line 123
If a PM2 daemon was already running before this installation, do not guess its origin and do not kill it automatically.
- Very specific: line 129
After the human has run npm start, it is safe to use Shellby's PM2 status commands because the daemon has already been established by …
- Distinctive: line 141
If startup reports that the MCP server did not become healthy, inspect status and logs before changing configuration or recreating PM2.
- Distinctive: line 147
Ask the human to:
- Very specific: line 150
Create a new plugin using the printed https://.../mcp URL.
- Very specific: line 161
After they do this, verify locally that agent-commands.yaml received a new tools/list entry.
- Very specific: line 167
Verify that the call reached Shellby from the audit log and that ~/.shellby/auth.json now exists.
- Very specific: line 169
Use npm run auth:reset only when the human intentionally wants to clear that binding.
- Very specific: line 179
If Chrome is installed, confirm the dedicated ChatGPT Chrome profile is signed in.
- Distinctive: line 185
Do not call the installation complete until:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Install Shellby MCP
Install Shellby MCP collaboratively with the human.
Boundaries
- Inspect current machine and repository state before changing anything. Resume partial installs instead of blindly repeating setup.
- Never ask the user to paste an ngrok authtoken, ChatGPT credential, or other secret into chat. Have them enter secrets directly in their own Terminal or browser.
- Give the human concise instructions whenever macOS, Chrome, ChatGPT, or another GUI requires interaction.
- Do not run
npm start,npm run restart,npm run status,npm run logs,npm run stop, or a directpm2command before the human establishes the PM2 daemon from Terminal.app. A PM2 command may create the daemon under the wrong macOS permission source. - Never kill an existing PM2 daemon until you know what it manages and the human explicitly agrees to disrupt those processes.
pm2 killaffects the whole user-level PM2 daemon, not only Shellby. - Treat Computer Use permission status observed from the agent's own host process as non-authoritative for Terminal.app. macOS TCC permissions follow the responsible launching process.
1. Inspect the machine
Confirm:
- macOS on Apple Silicon or Intel;
- Node.js 22.13.0 or newer;
npmandgitare available;- ngrok is installed;
- this repository is present and writable.
If the repository is not already checked out, clone https://github.com/Serbyte-Development/shellby-mcp.git and enter it.
Install missing prerequisites when safe. Prefer the repository's documented ngrok installation command when Homebrew is available:
brew install --cask ngrokDo not silently replace the user's Node installation strategy or package manager. If Node is missing or too old and there is no obvious existing version manager, tell the human what is required and let them choose how Node should be installed. Never chat $PATH without explicit approval.
2. Install repository dependencies
From the repository root:
npm ciUse npm ci, not npm install, for a normal install from the committed lockfile.
3. Establish ngrok authentication
Check ngrok without exposing credential contents:
ngrok config checkThen run:
npm run preflightIf ngrok is not authenticated, stop and ask the human to run this themselves in Terminal.app:
ngrok config add-authtoken <their-token>Tell them to obtain the token from their own ngrok account if necessary (its free). Do not ask them to send the token to you. Continue only after they say authentication is complete, then rerun npm run preflight.
4. Create and review the active Shellby config
Create or migrate the complete active config before running side-effecting setup:
npm run setup -- --config-onlyReview .shellby/config.toml with the human. Every Shellby-owned configurable value comes from this file. Edit values directly when the user wants a different workspace, shell, ChatGPT route, MCP tool-output format, or enabled tool groups. shell.rtk is optional; if the human enables it, RTK Token Killer must be installed and setup will validate the executable. External tools keep their own machine-level configuration; in particular, ngrok authentication stays in ngrok's normal user configuration.
5. Run non-PM2 setup
Run:
npm run setupThis prepares the workspace and builds Shellby. It checks Computer Use only when that tool group is enabled, and prepares/checks the dedicated ChatGPT Chrome profile only when clone or subagent tools are enabled.
Important:
- The Computer Use status shown here may reflect the installing agent's host process rather than Terminal.app. Do not treat it as proof that Terminal has the required permissions.
- If setup launches the dedicated Chrome window, ask the human to sign into ChatGPT in that window. The installing agent does not need to interact with Chrome.
- If Chrome is absent, browser-backed subagents remain optional and core Shellby can still be installed.
6. Hand Terminal-only actions to the human
Before touching PM2, inspect for an already-running user PM2 daemon without invoking PM2 itself. For example, check ~/.pm2/pm2.pid and verify that PID is alive with normal process tools.
If no PM2 daemon is running, ask the human to open Terminal.app, cd to this repository, and keep that Terminal as the permission source for Shellby.
If Computer Use is desired, have the human first run:
npm run setup:computerThey should complete Peekaboo's macOS permission prompts from that Terminal context. Screen Recording enables observation; Accessibility and Event Synthesizing enable actions.
Then have the human run, from Terminal.app:
npm startDo not run this command on their behalf from the agent's shell. The goal is for the PM2 daemon and Shellby process tree to originate from Terminal.app so the expected macOS permission source owns Computer Use access.
Ask the human to tell you when startup finishes and to share non-secret error text if it fails. They do not need to paste credentials or private identifiers.
Existing PM2 daemon
If a PM2 daemon was already running before this installation, do not guess its origin and do not kill it automatically.
Tell the human that Shellby's Computer Use permission source depends on the existing daemon's launch context. Determine whether that daemon is intentional and whether it manages unrelated applications. If the human wants to recreate it from Terminal.app, have them inspect the existing PM2 applications first and explicitly approve disruption before using pm2 kill. After a deliberate recreation, npm start must be run from Terminal.app.
7. Verify the local runtime
After the human has run npm start, it is safe to use Shellby's PM2 status commands because the daemon has already been established by Terminal.app.
Verify:
npm run status
curl -fsS http://127.0.0.1:3333/healthz
npm run print-urlConfirm both shellby-mcp and shellby-ngrok are running and record the printed public https://.../mcp URL for the human. Use npm run logs only when diagnosis is needed.
If startup reports that the MCP server did not become healthy, inspect status and logs before changing configuration or recreating PM2.
8. Hand ChatGPT configuration to the human
The installing agent does not need browser control.
Ask the human to:
- Enable ChatGPT Developer Mode: https://developers.openai.com/api/docs/guides/developer-mode
- Create a new plugin using the printed
https://.../mcpURL. Runnpm run print-urlto get the URL.
- To add a custom plugin, ChatGPT Developer Mode must be enabled and the human must use the desktop web app. From the Plugins UI, use the add button: Image: Screenshot of the add plugin menu
- Name the plugin something like "Shellby MCP" and add a description such as "Gives full access to my Mac".
- Enter the URL from
npm run print-urlin the URL field. - Optionally add a logo/icon: Image: Shellby MCP icon
- Select No Auth for the plugin.
- Enable or refresh the plugin so ChatGPT fetches Shellby's tool list.
After they do this, verify locally that agent-commands.yaml received a new tools/list entry. Do not display unrelated audit-log contents because tool inputs may be sensitive.
9. Verify first trusted tool use
Ask the human to start a fresh ChatGPT conversation with Shellby enabled. The first Shellby call should be start_here; after it succeeds, make one simple follow-up call such as shell_list or running pwd. The first trusted remote tools/call binds this installation to that ChatGPT user using their subject header.
Verify that the call reached Shellby from the audit log and that ~/.shellby/auth.json now exists. Do not print the stored subject value.
Use npm run auth:reset only when the human intentionally wants to clear that binding. (This MCP can only bind to a single ChatGPT user.)
10. Verify optional capabilities
Computer Use
If the human enabled Computer Use, have them test one read-only Computer Use operation through ChatGPT. If permissions fail, have them run the Peekaboo permission workflow again from Terminal.app and follow the source reported by Peekaboo. Do not try to solve TCC mismatches by repeatedly granting permissions from the agent's own process.
Browser-backed subagents
If Chrome is installed, confirm the dedicated ChatGPT Chrome profile is signed in. npm run setup normally prepares it; npm run setup:chatgpt can rerun that setup explicitly. The human handles any required browser sign-in.
Then have the human exercise one subagent request through ChatGPT if they want that capability verified.
Completion criteria
Do not call the installation complete until:
npm run preflightpasses;npm run setuphas completed;- the human has established the PM2/Shellby runtime from Terminal.app;
shellby-mcpandshellby-ngrokare running;/healthzsucceeds;- a public
/mcpURL is available; - ChatGPT has fetched
tools/listfrom the custom app; - at least one trusted Shellby tool call succeeds.
Computer Use and browser-backed subagents are optional capabilities. If the human chooses not to configure one of them, state that clearly rather than treating the core installation as failed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

