Docs Installation

Installation

Plumego is distributed as a standard Go module.

There are no installers, generators, or bootstrap scripts.
If you can work with Go modules, you can use Plumego.

This document explains the minimal setup required.


Go Version Requirements

Plumego follows Go’s official release cadence and compatibility guarantees.

Supported versions

  • Go 1.20 or later (recommended)
  • Earlier versions may compile, but are not officially supported

Why this matters

Plumego relies on:

  • Modern context behavior
  • Stable net/http semantics
  • Current module tooling

Using an up-to-date Go version ensures predictable behavior and easier upgrades.


Verify Your Go Installation

Before installing Plumego, verify your Go environment:

go version

Expected output (example):

go version go1.22.0 darwin/arm64

If Go is not installed, follow the official instructions at:

→ https://go.dev/doc/install


Using Go Modules (Required)

Plumego requires Go modules.

Projects using GOPATH mode are not supported.

To initialize a new module:

go mod init example.com/your-project

This creates a go.mod file in your project root.


Installing Plumego

Add Plumego as a dependency using go get:

go get github.com/spcent/plumego

This will:

  • Download Plumego
  • Add it to go.mod
  • Resolve its dependencies

Plumego has a deliberately small dependency tree,
mostly limited to the Go standard library.


Verifying the Installation

You can verify that Plumego is available by importing it in a Go file:

import "github.com/spcent/plumego"

Then run:

go build ./...

If the build succeeds, Plumego is installed correctly.


Version Management

Plumego follows standard Go module versioning.

Pinning a version

To use a specific version:

go get github.com/spcent/plumego@v0.x.y

This is recommended for production systems to avoid unexpected upgrades.

Upgrading

To upgrade to the latest compatible version:

go get -u github.com/spcent/plumego

Always review release notes before upgrading, especially across minor versions.


Dependency Philosophy

Plumego intentionally avoids:

  • Heavy transitive dependencies
  • Code generation
  • Runtime reflection dependencies

This has several consequences:

  • Faster builds
  • Easier auditing
  • Lower long-term maintenance risk

If your organization has strict dependency policies,
Plumego is designed to work well within them.


Installing for Existing Projects

You can add Plumego to an existing Go project without restructuring it immediately.

Recommended approach:

  1. Add Plumego as a dependency
  2. Introduce it at the HTTP boundary only
  3. Gradually refactor routing and middleware if needed

Plumego does not require a full rewrite to adopt.


Common Installation Issues

go get fails due to network restrictions

If you are behind a restricted network or firewall:

  • Configure GOPROXY
  • Use an internal module proxy if available

Example:

export GOPROXY=https://proxy.golang.org,direct

Conflicts with existing frameworks

Plumego does not monkey-patch or replace standard library behavior.

It can coexist with:

  • Other Go libraries
  • Existing domain code
  • Custom HTTP handlers

Conflicts usually indicate architectural overlap rather than technical incompatibility.


What Installation Does Not Do

Installing Plumego does not:

  • Generate project files
  • Modify existing code
  • Configure logging
  • Set up middleware
  • Impose a directory structure

All of these choices are left to you.


Summary

Installing Plumego is intentionally simple:

  • Install Go
  • Initialize a module
  • Add Plumego as a dependency

There are no hidden steps and no global state.

If installation feels uneventful, that is by design.


Next

If you have not yet done so, continue with:

→ Minimal Server

If you already have a running server:

→ Project Layout