원클릭으로
ngrok
Expose a local port to the public internet using ngrok. Use when the user wants a public URL for a locally running web service.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Expose a local port to the public internet using ngrok. Use when the user wants a public URL for a locally running web service.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Browse, search, and install skills from the CrawHub skill marketplace.
Agent Messaging (ClawMeets). Send, read, list, and delete messages via the ClawMeets agent-to-agent protocol.
Notion API for creating and managing pages, databases, and blocks.
Create or update MMClaw skills. Use this when the user wants to add new capabilities, automate a specific tool, or define complex multi-step workflows for the agent.
Search the web using a configured search provider. Use when the user explicitly asks to search, look up current information, or needs real-time data such as news, prices, or recent events.
Scan a directory for sensitive files before serving it over HTTP. Always run this before using the file-server skill.
| name | ngrok |
| description | Expose a local port to the public internet using ngrok. Use when the user wants a public URL for a locally running web service. |
| metadata | {"mmclaw":{"emoji":"🌐","os":["linux","darwin","win32"],"requires":{"bins":["python"]}}} |
Use this skill when the user wants to expose a local server to the public internet. Trigger phrases: "ngrok", "public URL", "expose my server", "tunnel", "access from outside".
Do NOT run which ngrok or check for a ngrok binary. There is no standalone ngrok command. ngrok is installed as a Python package and must always be invoked via Python.
Prompt the user to install manually first. Only run automatically if the user explicitly asks for help.
pip install ngrok
The authtoken is stored at $MMCLAW_WORKSPACE/skill-config/ngrok.json:
{
"authtoken": "your_token_here"
}
Get your token at: https://dashboard.ngrok.com/get-started/your-authtoken
Ask the user for their authtoken, then create the file:
import json, os
config = {"authtoken": "<token_provided_by_user>"}
path = os.environ.get('MMCLAW_WORKSPACE', os.path.expanduser('~/.mmclaw')) + '/skill-config/ngrok.json'
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, "w") as f:
json.dump(config, f, indent=2)
print(f"Config saved to {path}")
shell_asyncUse the shell_async tool for this command to ensure it runs in the background without blocking. Do NOT append &.
python -c "
import ngrok, json, os, threading
_ws = os.environ.get('MMCLAW_WORKSPACE', os.path.expanduser('~/.mmclaw'))
config = json.load(open(_ws + '/skill-config/ngrok.json'))
url_path = _ws + '/skill-config/ngrok_url.txt'
listener = ngrok.forward(<PORT>, authtoken=config['authtoken'])
open(url_path, 'w').write(listener.url())
threading.Event().wait()
"
sleep 2 && cat $MMCLAW_WORKSPACE/skill-config/ngrok_url.txt
After Step 2, you MUST capture the contents of ngrok_url.txt and explicitly report the public URL to the user in your response. Do NOT tell the user to "check the terminal". The URL must appear directly in your reply.