Skip to content
cccskills
FreePublished on GitHub

persistent-localhost

Manage persistent dev servers, APIs, and other local processes on a port using macOS LaunchAgents. Use when starting, stopping, restarting, inspecting, or troubleshooting local servers that should survive shell exit and restart after crashes.

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md2.4 KB
  • scripts/persistent-localhost.sh7.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Persistent localhost servers (macOS launchd)

One script does everything. Resolve scripts/persistent-localhost.sh relative to this SKILL.md, never from the current directory.

Workflow

  1. Check what already exists:
scripts/persistent-localhost.sh list
  1. Start the server. --name is the handle. --port enables readiness checks and duplicate handling. --dir defaults to the current directory.
scripts/persistent-localhost.sh start --name myproj --port 5111 --cmd "./bin/serve"

The command returns only after the port is listening, or fails with the last 20 log lines. Report the printed URL= to the user.

  1. Inspect, restart, read logs, stop:
scripts/persistent-localhost.sh status myproj
scripts/persistent-localhost.sh restart myproj   # after editing code that has no reloader
scripts/persistent-localhost.sh logs myproj 100
scripts/persistent-localhost.sh stop myproj

Hot reload

Prefer the framework's own reloader in --cmd (flask run --debug, vite, uvicorn --reload, node --watch). If the server has none, add --watch. It wraps the command in watchexec -r on the working directory. Never use both. Requires brew install watchexec.

Rules the script enforces

  • Runs as com.persistent-localhost.<name> in the user gui domain via launchctl bootstrap. Restart uses kickstart -kp, stop uses bootout. No deprecated load, start, stop, no broad pkill.
  • KeepAlive only on crash. A clean exit stays down. Throttle 5s so a syntax error cannot spin.
  • Port already taken by the same app (our own label, or a stray process with the same working directory) is replaced. A different app is left alone and the next free port is used. Read the printed PORT=.
  • The caller's PATH and a PORT variable are passed into the job. Add more with --env KEY=VAL.
  • Logs: ~/Library/Logs/persistent-localhost/<name>.log. State: ~/Library/Application Support/persistent-localhost/<name>.state. Plist: ~/Library/LaunchAgents/.

Fallback

Never start servers with nohup, &, disown, setsid, or run_in_background. If launchctl bootstrap fails, report the failure and stop.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

4x4

Free

Pull 16 fast decisions out of the user with 4 sets of 4 open questions, then present an implementation plan. Only for risky changes, large product decisions, or large refactors. Run when the user types /4x4. Agents may suggest it in one line but never start it on their own.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

Record concise ADRs that preserve the user's decisions without conversational noise. Use for "adr-verbatim", "new ADR", "document that as an ADR", "record this decision", or supplied ADR wording.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

Keep a Mac awake for a set duration or while a process runs. Use only when the user explicitly invokes /anti-sleep.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

Clarify a feature, change, or refactor through questions, then write a build prompt for another agent. Use for /ask-then-build or requests to ask questions before producing an implementation prompt.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

bb-cli

Free

Use this when controlling bb. The bb CLI inspects and manages threads, environments, projects, machines, providers, skills, plugins, settings, terminals, and other BB services.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

Build, install, and debug bb plugins. Use when the user wants a bb plugin, a sidebar panel, a bb CLI subcommand, an agent tool, a theme, a provider, or to extend bb itself. For running threads and the core bb CLI, use bb-cli instead.

The English summary is being prepared. Showing the original description.

davidondrej/skills4.2KUpdated Oct 19, 2026

See all skills by davidondrej

Report a problem with this skill