Skip to content

Development Server

Terminal window
plumego dev

plumego dev builds your service, starts it at :8080, watches **/*.go for changes, and rebuilds automatically on each save. A local dashboard at 127.0.0.1:9999 shows build status, application events, and route details.

  • Starting the dev server in a Plumego project
  • Verifying the service is running
  • Watching file changes and triggering a rebuild
  • Configuring address, watch patterns, and build commands

Step 1 — Build the CLI from a source checkout

Section titled “Step 1 — Build the CLI from a source checkout”
Terminal window
git clone https://github.com/spcent/plumego.git
cd plumego/cmd/plumego
go build -o ../../bin/plumego .
export PATH="$(pwd)/../../bin:$PATH"

The CLI currently lives in a nested Go module, so tagged go install is not advertised as a supported install path until a release checklist verifies that exact tag.

Verify the build:

Terminal window
plumego --help

From your project root:

Terminal window
plumego dev

Expected output:

Starting Plumego Dev Server
Project: /path/to/your/project
App URL: http://localhost:8080
Dashboard URL: http://localhost:9999
Watching for changes...
Press Ctrl+C to stop
Terminal window
curl localhost:8080/healthz
# {"data":{"status":"ok"}}

Open the dashboard in a browser: http://localhost:9999

Step 4 — Edit a file and watch it reload

Section titled “Step 4 — Edit a file and watch it reload”

Change a handler or route, then save. The terminal shows:

File changed: internal/app/routes.go
Reload complete

The server restarts with the new build. No manual restart needed.

FlagDefaultPurpose
--addr:8080Address the application listens on
--dashboard-addr127.0.0.1:9999Address for the dev dashboard
--dashboard-token(none)Token required for dashboard action APIs
--watch**/*.goComma-separated glob patterns to watch
--exclude(none)Comma-separated patterns to exclude from watching
--debounce500msWait duration before triggering a rebuild after a file change
--no-reloadfalseDisable automatic rebuild; serve only
--build-cmd(auto)Custom build command, e.g. go build -tags dev ./...
--run-cmd(auto)Custom run command

Custom port:

Terminal window
plumego dev --addr :3000

Watch additional file types:

Terminal window
plumego dev --watch "**/*.go,**/*.yaml"

Disable hot reload (serve only):

Terminal window
plumego dev --no-reload

Secure the dashboard:

Terminal window
plumego dev --dashboard-token my-secret-token

Custom build and run commands:

Terminal window
plumego dev --build-cmd "go build -tags dev -o .dev-server/app ./cmd/server" \
--run-cmd ".dev-server/app"

The dashboard at 127.0.0.1:9999 provides:

  • Build status — last build result, duration, and error output on failure
  • Application events — startup, shutdown, restart with PID
  • Log stream — forwarded stdout/stderr from the running application

The dashboard is local-only by default. Do not expose it on a public interface.

Once your handler shape is stable, continue to Testing Handlers to verify behavior without running the dev server.