Skip to content

berthPorts your agents and your terminal agree on

Every project gets a permanent, decodable block of ports. A ledger records who holds what, a reconciler checks it against what is really listening, and every Claude Code session is told its ports before it binds anything. Advisory by design; it never kills.

Port 13204 decoded: base 10000, P=3 breach-resolve, W=2 second worktree, R=04 smtpPort 13204 decoded: base 10000, P=3 breach-resolve, W=2 second worktree, R=04 smtp

Sixty seconds

bash
npm install -g @amiable-dev/berth
berth init                                   # a starting policy in ~/.config/berth/policy.toml
cd ~/projects/my-app && berth project add .  # permanent project number, ports found in your configs
eval "$(berth env --shell)"                  # PORT, API_PORT, DB_PORT … for this checkout
berth check                                  # what is listening, who holds it, what needs attention

With Claude Code, install the plugin instead and let the agent register its own repository:

bash
claude plugin marketplace add amiable-dev/berth
claude plugin install berth@berth
berth ui map viewberth ui map view

Released under the MIT licence.