portless

portless is a skill for Claude Code, Codex from yonatangross/orchestkit. It costs 91 tokens per session (2,603 once invoked), scanned A, original, MIT.

A local-development setup that gives applications named HTTPS addresses such as https://myapp.localhost instead of numbered localhost ports. It can also create branch-based addresses for Git worktrees and support access from devices on the same network.

In plain words
What is it for?
Use it to run local web apps with named URLs, test them on phones or tablets over Wi-Fi, or share a local app through Tailscale or ngrok.
Why use it?
It avoids port collisions and gives each development branch or app a stable URL that is easier to open and share during testing.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the ork plugin — 106 skills, 35 commands, 36 agents, 32 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/yonatangross/orchestkit/portless
Any agent
npx skills add yonatangross/orchestkit --skill portless
Clone the repo
git clone --depth 1 https://github.com/yonatangross/orchestkit

Made for: Claude Code, Codex.

Or install ork, the plugin that ships this one along with the rest of its 106 skills, 35 commands, 36 agents, 32 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for portless

README.md
[![agentmods](https://agentmods.dev/badge/skills/yonatangross/orchestkit/portless.svg)](https://agentmods.dev/skills/yonatangross/orchestkit/portless)
Your own site
<a href="https://agentmods.dev/skills/yonatangross/orchestkit/portless"><img src="https://agentmods.dev/badge/skills/yonatangross/orchestkit/portless.svg" alt="Measured on agentmods" height="20"></a>
Per session 91 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,603 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00091 $0.02603
Opus 5 $0.00046 $0.01301
Sonnet 5 $0.00018 $0.00521
Haiku 4.5 $0.00009 $0.00260

Measured today against content hash e354d87c9eae, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

portless scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/ork/skills/portless/SKILL.md · 194 lines

How it starts

The opening of the file, as written. The whole thing — 194 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Portless Integration

Named .localhost URLs for local development. Replaces localhost:3000 with https://myapp.localhost.

Full CLI reference: Load Read("${CLAUDE_PLUGIN_ROOT}/skills/portless/references/upstream.md") for complete command docs.

New in 2026-04 → 2026-07 (portless 0.10.x → 0.15.0)

  • portless doctor (0.15.0) — read-only diagnostics that check Node.js, the state directory, proxy liveness, route entries, hostname resolution, HTTPS CA trust, and LAN prerequisites, then print suggested fixes. Run it before filing an issue or when a .localhost URL won't resolve.
  • HTTP/2 Host forwarding fix (0.15.0) — the proxy now forwards the HTTP/2 :authority as Host to HTTP/1.1 backends, fixing apps that read Host and previously saw 127.0.0.1 for browser traffic. --force takeover cleanup now removes only routes still owned by the exiting process, so a forced takeover no longer deregisters the new owner's route.
  • --ngrok flag (0.14.0) — share an app publicly via ngrok while local access keeps its .localhost URL. Pair with the existing Tailscale/Funnel options when you need a public URL without giving up the named-subdomain dev experience.
  • Node.js 24+ required (0.13.1, BREAKING) — the proxy and CLI now require Node.js 24 or newer; older runtimes are unsupported. This release also hardens startup-service persistence so .localhost URLs survive reboot reliably.
  • State directory moved to ~/.portless (0.11, BREAKING) — state relocated from scattered/temp locations to ~/.portless; override with PORTLESS_STATE_DIR. Old state from pre-0.11 installs is not migrated automatically.
  • OS startup service (0.13.0)portless service install / service status / service uninstall register a native startup service for the HTTPS proxy across macOS launchd, Linux systemd, and Windows Task Scheduler. .localhost URLs survive reboot without a manual portless proxy start. portless clean removes the service alongside CA + hosts cleanup.
  • Tailscale readiness preflight (0.13.0)--tailscale and --funnel now validate Tailscale HTTPS + Funnel prerequisites before starting the child process, surfacing actionable errors instead of hanging during registration.
  • Tailscale integration (0.12.0)--tailscale shares your app over your tailnet with automatic HTTPS on port 443; --funnel exposes it publicly via Tailscale Funnel. Apps receive PORTLESS_TAILSCALE_URL so they can reference their own public address. portless list now shows tailnet URLs.
  • Zero-config mode (0.11.0) — bare portless auto-discovers dev scripts from package.json. Multi-app monorepos get automatic subdomain assignment; Turborepo task-graph integration is wired in. portless.json config file supported. --script overrides the default "dev" script.
  • portless prune — removes orphaned dev servers and stale Tailscale registrations.
  • portless clean (extended) — now also tears down Tailscale registrations alongside CA + hosts cleanup.
  • Rsbuild + VitePlus auto-port injection — same auto-wiring as Vite/Next.
  • State directory moved to ~/.portless (was scattered).
  • HTTPS on 443 by default (breaking from 0.9.x http:1355). Valid cert, no setup. --no-tls reverts.
  • NODE_EXTRA_CA_CERTS auto-injected (0.10.2) into child processes — node HTTPS calls trust portless CA with zero setup.
  • --wildcard subdomainshttps://*.myapp.localhost for multi-tenant / preview routing.
  • portless alias <name> <port> — map a docker-compose / emulate port to a named URL without a long-running run process.
  • portless clean — full teardown: stops proxy, removes CA, wipes state, cleans /etc/hosts.
  • --lan mode — mDNS .local hostnames reachable across wifi (phone, tablet, other machines) without router config.
  • Fixed app ports--app-port 3000 / PORTLESS_APP_PORT for tools that need a known port (debuggers, docker).
  • hosts-sync on by default for Safari compat (disable with PORTLESS_SYNC_HOSTS=0).
  • HTTP/2 HMR fixes for Vite/VitePlus/Next.js dev — websocket upgrades no longer break under h2.
  • Expo / React Native support — portless run expo start gives Metro a stable URL for device QR codes.

Read the full file on GitHub · 194 lines

Files

What ships with it

4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 194 lines · 91 tokens per session scan A e354d87c9eae

Subscribe to this mod's changes

portless is a skill published in the GitHub repository yonatangross/orchestkit (228 stars, last pushed yesterday), licensed MIT. It adds 91 tokens to every session and 2,603 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.