temptunnels
Add temporary public tunnels (Ngrok or Cloudflare cloudflared sidecar/companion containers) to Kubernetes Helm charts or Docker Compose files…
Skill by idjohnson
Chalk Labs
Need help deploying temptunnels?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/idjohnson-temptunnels
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, devops, cloud, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/temptunnels
What's inside
- Skill name
temptunnels- Description
- Add temporary public tunnels (Ngrok or Cloudflare cloudflared sidecar/companion containers) to Kubernetes Helm charts or Docker Compose files (docker-compose.yml) to expose services quickly for testing, demos, or webhook development. Use this skill when the user asks to add a temporary tunnel, Ngrok sidecar/service, or Cloudflare (cloudflared) Quick Tunnel option to a Helm chart, Kubernetes deployment, or Docker Compose file.
- License
- MIT
- Metadata
- version: 1.2.0
- Instructions
- 332 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: templates/deployment.yaml, templates/NOTES.txt
Files (5)
- SKILL.md
- cloudflared-docker-compose.md · examples/
- cloudflared-helm-sidecar.md · examples/
- ngrok-docker-compose.md · examples/
- ngrok-helm-sidecar.md · examples/
SKILL.md (first lines)
# Temporary Tunnels (`temptunnels`) Skill
This skill guides the AI agent in adding temporary public tunnel containers—supporting both **Ngrok (`ngrok`)** and **Cloudflare Quick Tunnels (`cloudflared`)**—to **Kubernetes Helm charts** and **Docker Compose (`docker-compose.yml` / `docker-compose.yaml`)** files so applications can be exposed publicly without requiring DNS, public LoadBalancers, or Ingress controllers.
## When to Use This Skill
Activate this skill when the user wants to:
- Add an **Ngrok** (`ngrok/ngrok`) or **Cloudflare** (`cloudflare/cloudflared`) tunnel sidecar container to a **Helm chart** (`deployment.yaml`, `values.yaml`, `NOTES.txt`, `secret.yaml`).
- Create or update a **Docker Compose file** (`docker-compose.yml` / `docker-compose.yaml` and `.env` / `.env.example`) with an **Ngrok** or **Cloudflare (`cloudflared`)** tunnel companion service.
- Expose a Kubernetes or Docker Compose service temporarily via a public HTTPS URL (`*.ngrok-free.app` / `*.ngrok.app` or `*.trycloudflare.com`).
- Configure tunnel ports, metrics/health probes, target URLs, or authentication tokens/secrets in Helm or Docker Compose.
## Choosing Between Ngrok and Cloudflare (`cloudflared`)
| Feature | Option 1: Ngrok (`ngrok/ngrok`) | Option 2: Cloudflare (`cloudflare/cloudflared`) |
| :--- | :--- | :--- |
| **Public URL Domain** | `*.ngrok-free.app` / `*.ngrok.app` | `*.trycloudflare.com` (Quick Tunnel) |
| **Required Secrets / Tokens** | **Requires `authtoken`** (`--authtoken` or `NGROK_AUTHTOKEN`) | **None required** for Quick Tunnels (optional `TUNNEL_TOKEN` for Named Tunnels) |
| **Target URL (Helm / K8s Pod)** | `http://localhost:<service.targetPort>` | `http://localhost:<service.targetPort>` via `--url` |
| **Target URL (Docker Compose)** | `http://<app-service>:<port>` (or `http://localhost:<port>` with `network_mode: "service:<app-service>"`) | `http://<app-service>:<port>` via `--url` (or `http://localhost:<port>` with `network_mode: "service:<app-service>"`) |
| **Container / Sidecar Ports** | Optional `4040/TCP` (Inspector UI/API) | `2000/TCP` (`cf-metrics`) for `--metrics` & `/ready` `livenessProbe` |
| **Outbound Ports** | `443/TCP` (TLS to Ngrok edge) | `443/TCP` (HTTPS) & `7844/TCP+UDP` (QUIC/HTTP2 to Cloudflare edge) |
> **Important Difference Between Kubernetes `command` and Docker Compose `command`:**
> - In **Kubernetes (`deployment.yaml`)**, `command` overrides the image's `ENTRYPOINT`, so the binary name (`ngrok` or `cloudflared`) **must** be the first element.
> - In **Docker Compose (`docker-compose.yml`)**, `command` overrides the image's `CMD` and is appended to the image's default `ENTRYPOINT` (`["ngrok"]` or `["cloudflared", "--no-autoupdate"]`). Therefore, `command` in `docker-compose.yml` **must start with the subcommand** (`http` for Ngrok, `tunnel` for Cloudflare) rather than repeating the binary name.
---
## Option 1: Ngrok (`ngrok`)
- **Helm Chart Reference**: [examples/ngrok-helm-sidecar.md](./examples/ngrok-helm-sidecar.md)
- **Docker Compose Reference**: [examples/ngrok-docker-compose.md](./examples/ngrok-docker-compose.md)
### 1. Port Requirements & Networking (Ngrok)
- **Application Target Port**:
- **Helm (Kubernetes Pod)**: Ngrok shares the Pod's `localhost` network namespace and forwards traffic to `{{ .Values.ngrok.url | default (printf "http://localhost:%v" .Values.service.targetPort) | quote }}`.
- **Docker Compose**: By default, Ngrok runs on the shared Compose bridge network and forwards traffic to `http://<app-service>:<port>` (e.g., `${NGROK_URL:-http://<app-service>:8000}`). Alternatively, setting `network_mode: "service:<app-service>"` shares the application container's `localhost` namespace (`http://localhost:<port>`).
- **Ngrok Inspector Port (`4040`, Optional)**:
- The Ngrok agent listens on port `4040` for its local inspection UI/API (`127.0.0.1:4040:4040` in Docker Compose).
- **Outbound Connectivity (`443`)**:
- Requires outbound TCP/TLS on port `443` to connect to Ngrok edge servers.
### 2. Required Secrets & API Tokens (Ngrok)
- **Ngrok Authtoken (`ngrok.authtoken` / `NGROK_AUTHTOKEN`) — REQUIRED**:
- Obtained from the [Ngrok Dashboard](https://dashboard.ngrok.com/get-started/your-authtoken).
- Passed via `--authtoken` CLI flag or `NGROK_AUTHTOKEN` environment variable.
- **Best Practice (Helm)**: Leave `ngrok.authtoken: ""` in `values.yaml` and pass at deploy time (`--set ngrok.authtoken="..."`) or inject from a Kubernetes `Secret`.
- **Best Practice (Docker Compose)**: Inject `NGROK_AUTHTOKEN` from `.env` (and keep `NGROK_AUTHTOKEN=""` in `.env.example`).
- **Ngrok API Key (`NGROK_API_KEY`) — OPTIONAL**:
- Only needed for REST API operations or automated edge configurations outside standard agent tunneling.
### 3A. Helm Changes for Ngrok
1. **`values.yaml`**:
```yaml
# ----------------------------------------------------------------------------
# ngrok Tunnel Sidecar Configuration
# ----------------------------------------------------------------------------
ngrok:
enabled: true
image:
repository: ngrok/ngrok
tag: "latest"
pullPolicy: IfNotPresent
# Target URL to tunnel to. Defaults to http://localhost:<service.targetPort> (8000)
url: ""
authtoken: ""
log: "stdout"
# Optional additional arguments to pass to `ngrok http`
extraArgs: []
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
```
2. **`templates/deployment.yaml`** (under `spec.template.spec.containers`):
```yaml
{{- if .Values.ngrok.enabled }}
- name: ngrok
image: "{{ .Values.ngrok.image.repository }}:{{ .Values.ngrok.image.tag }}"
imagePullPolicy: {{ .Values.ngrok.image.pullPolicy }}
command:
- ngrok
- http
- {{ .Values.ngrok.url | default (printf "http://localhost:%v" .Values.service.targetPort) | quote }}
- --authtoken
- {{ .Values.ngrok.authtoken | quote }}
{{- if .Values.ngrok.log }}
- --log
- {{ .Values.ngrok.log | quote }}
{{- end }}
{{- range .Values.ngrok.extraArgs }}
- {{ . | quote }}
{{- end }}
resources:
{{- toYaml .Values.ngrok.resources | nindent 12 }}
{{- end }}
```
3. **`templates/NOTES.txt`**:
```yaml
{{- if .Values.ngrok.enabled }}
ngrok Tunnel is enabled!
To retrieve your generated ngrok URL, run:
kubectl --namespace {{ .Release.Namespace }} logs deploy/{{ include "<chartname>.fullname" . }} -c ngrok | grep "url="
{{- end }}
```
### 3B. Docker Compose Changes for Ngrok
1. **`docker-compose.yml`** (under `services:`):From idjohnson/aiskills, MIT.
More from idjohnson/aiskills
- 0.557score
python-app-setup
idjohnson
Scaffolding and setting up Python applications, FastAPI APIs, FastMCP servers, and project structures in this workspace.
SkillBFreshness: B★ 2Claude Code +9 - 0.555score
ste100
idjohnson
ASD-STE100 Simplified Technical English (Issue 9, January 2025) specification skill.
SkillBFreshness: B★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 17, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.2.0
- License
- MIT
- Repository
- github.com/idjohnson/aiskills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from idjohnson
- 0.557score
python-app-setup
idjohnson
Scaffolding and setting up Python applications, FastAPI APIs, FastMCP servers, and project structures in this workspace.
SkillBFreshness: B★ 2Claude Code +9 - 0.555score
ste100
idjohnson
ASD-STE100 Simplified Technical English (Issue 9, January 2025) specification skill.
SkillBFreshness: B★ 2Claude Code +9 - 0.405score
Vikunjamcp
idjohnson
An MCP server that provides access to Vikunja, a self-hosted task management solution.
ConnectorDFreshness: DLocalClaude Code +5
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get temptunnels running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
temptunnels skill. Agent Mart. https://agentmart.dev/skills/idjohnson-temptunnels (last updated 2026-10-24)