npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@slop-lab/dim-plugin-external-urls

v0.8.0

Published

Workspace-scoped HTTP and Caddy HTTPS ingresses for DIM

Readme

@slop-lab/dim-plugin-external-urls

Workspace-scoped development URLs for DIM. The plugin provides shared direct HTTP ingresses and controller-managed Caddy HTTPS ingresses, then routes each URL to a container or nested container selected by the authenticated workspace.

Installation

Install the plugin at the same exact version as DIM:

npx '@slop-lab/[email protected]' install-plugin \
  '@slop-lab/[email protected]'
dim plugin list

Restart the managed DIM controller after changing installed plugins. A Caddy HTTPS ingress also requires a separately installed DNS provider such as @slop-lab/dim-plugin-dns-cloudflare.

Direct HTTP ingress

Configure a host-shared ingress:

dim external-url ingress add http \
  --name local-http \
  --description "Local development URLs" \
  --scheme http \
  --argument \
  '{"domain":"dev.test","publicPort":8080,"listenHost":"0.0.0.0","listenPort":"auto"}'

Then request a URL from a workspace:

dim external-url request \
  --workspace feature-123 \
  --ingress local-http \
  --container dev \
  --port 3000

dim external-url list --workspace feature-123

Targets may be the workspace root, one named child container, or a container inside that child. DIM resolves the target through the workspace runtime rather than accepting an arbitrary host address.

Caddy HTTPS

The caddy ingress driver reconciles wildcard DNS, builds the required Caddy DNS module, writes runtime files, and owns the Caddy container. Project repositories do not deploy Caddy themselves. Configuration includes a named DNS provider and that provider's opaque record argument.

The argument may also contain staticRoutes, for example [{"subdomain":"git","upstream":"http://127.0.0.1:3300"}]. These exact wildcard-domain hostnames route to host-reachable services before the dynamic workspace router. The main External URLs documentation defines validation and trust-boundary requirements.

For example, after configuring cloudflare-main:

dim external-url ingress add caddy \
  --name public \
  --description "Public development URLs" \
  --scheme https \
  --argument \
  '{"domain":"dev.example.com","listenHost":"0.0.0.0","listenPort":443,"dnsProvider":"cloudflare-main","dnsArgument":"{\"zone\":\"example.com\",\"value\":\"203.0.113.10\",\"proxied\":false}","acmeEmail":"[email protected]"}'

Use dim external-url ingress verify NAME to verify DNS provider state and HTTPS reachability. Removing an ingress does not delete DNS unless --cleanup-dns is explicitly supplied.

Policy and trust boundary

The default route policy requires workspace-qualified subdomains. An ingress may instead use a fail-closed HTTP(S) or Unix-socket webhook to approve, reject, or rewrite requested subdomains.

The controller stores active routes under DIM state and reconciles them on restart. Workspace discard revokes its routes. DNS credentials remain in the host's mode-0600 configuration and are never returned through workspace controller APIs.

For child development containers, expose only selected URL operations through @slop-lab/dim-controller-proxy; never mount the original controller grant.

See the complete External URLs guide, feature example, and source repository.