- Every agent guesses whether the app is already running.
- Each new task grabs another port and starts another process tree.
- Logs, health, and ownership disappear across terminal tabs.
- Your laptop pays the cost for context the agent never received.
Stop launching the same app five times.
Portly gives every AI coding agent the same live context for your local servers—what is running, where it runs, and whether it is healthy.
localhost:7737$ pnpm dev
➜ Local: http://localhost:3000/
➜ Network: use --host to expose
✓ ready in 438 ms
portly health check passed 200 OK
portly shared state available on 127.0.0.1:7737
▌
The problem
Five tasks should not mean five copies of your app.
Agents start background jobs because they lack shared runtime context. The result is duplicate process trees, random fallback ports, fragmented logs, and a laptop doing five times the work.
- One live source of truth for projects, servers, ports, PIDs, and health.
- A stable CLI and JSON API that agents can inspect before they act.
- Persistent PTYs and logs without duplicate background jobs.
- Explicit takeovers when a server was started outside Portly.
Interactive demo
Give the agent context before it acts.
Portly turns a hidden runtime into explicit shared state. Compare the process sprawl with the supervised path.
PID 82104:3000PID 82391:3001PID 82618:3002PID 82943:3003PID 83117:3004Product tour
Everything running. One calm view.
Portly feels like part of macOS: compact, direct, and always close to the process it controls.
$ pnpm dev
➜ Local: http://localhost:3000/
➜ Network: use --host to expose
✓ ready in 438 ms
portly health check passed 200 OK
Projects, ports, health, uptime, and terminal output stay visible in one native workspace.
Check and control every server without changing windows.
See the owner first. Move it under supervision only when you choose.
How it works
One source of truth from first prompt to final process.
You define the server once. Humans and agents use the same controls from then on.
Register the project
Portly detects common dev commands, frameworks, monorepos, and default ports. Confirm the server once.
$ portly add-project --path ~/Developer/projectLet agents inspect
The CLI returns structured status, ports, health, logs, and ownership before an agent launches a process.
$ portly status --jsonReuse one process
Portly starts, supervises, restarts, and shares the same server across every task and terminal.
$ portly start project/web --jsonBuilt for local development
Small supervisor. Complete runtime context.
No cloud account, no dashboard subscription, and no process manager hidden behind an agent framework.
Built for coding agents
Agents inspect structured live state before launching anything, then reuse the process that already exists.
Real interactive terminals
Each server runs in a true PTY with readable output, persistent scrollback, and log files you can inspect later.
Health, not guesswork
Port and HTTP checks show whether a process is merely alive or actually serving the route you expect.
Crash recovery
Restart unhealthy processes automatically, cap retry loops, and keep the last exit and failure visible.
Safe port ownership
See exactly what owns a port. Portly never kills an unknown process without an explicit takeover.
Local by design
The control API binds to 127.0.0.1 only. Your commands, paths, logs, and project state stay on your Mac.
Read every line that can launch a process.
Portly is MIT licensed. Inspect the native app, the CLI, the loopback API, and the agent skill—or help make them better.
install.sh$ git clone https://github.com/Melvynx/portly.git $ cd portly $ ./build.sh --run ✓ Portly.app installed ✓ portly CLI ready
One Mac. One server. Every agent informed.
Stop paying the process cost of missing context.