Keep It Local

Who wants to talk about networking today? I know I do. Two addresses do most of the heavy lifting here: 127.0.0.1 (aka localhost or the loopback address — only your own machine can reach it) and 0.0.0.0 (bind to this and you’re reachable on every network interface). SeeLocalhost and0.0.0.0 for a refresher.# clodhopper

Yesterday I talked about clodhopper, my personal Claude Code dashboard. It collects data from your running agents and spins up a read-only app to show their status. By default, it binds to localhost ( 127.0.0.1 ), which means I don’t accidentally broadcast my workflows to the world. I also run it on my Tailscale network, which means I can view it on my own private network, but the world can’t. I was doing this by interpolating the Tailscale IP in the startup command: clodhopper serve --host "$(tailscale ip -4)". Today I added a --tailscale arg, to make this a touch easier.

Default: loopback only — only this machine can reach it

clodhopper serve

Don't do this on an untrusted network — binds every interface

CLODHOPPER_HOST = 0.0.0.0 clodhopper serve

Tailnet only — reachable from your tailnet (subject to ACLs), not the LAN

clodhopper serve --tailscale

So, that’s all fine, but we are now living in a world where anyone can spin up a custom app on their machine and accidentally broadcast it to the world. Is this bad? Not always, but consider the following:

your app keeps secrets in.env

your app spins up a web server

.env somehow ends up in the path that your app is serving

random bot sniffs out your app and fetches.env

now you need to rotate your secrets and you may not even be aware that your secrets are in the hands of a bad actor

markdownlint-disable MD003 MD033 MD046

markdownlint-disable-line " Localhost " by Wesley Nitsckie is licensed under CC BY-SA 2.0.

Ideally you’d restrict access to your resources to only the audiences which require them. So, defaulting to localhost and then expanding your reach from there is a good way to g…

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论