Building from Source
Prerequisites
- Go 1.22 or later
- Make
- (Optional)
go-winresfor Windows resource embedding - (Optional) WiX Toolset + PowerShell for MSI packaging
Build Commands
cd agent
# Build for current platformmake build
# Build for all platforms (Linux, macOS, Windows)make build-all
# Build for specific platformsmake build-linux # linux/amd64 + linux/arm64make build-darwin # darwin/amd64 + darwin/arm64make build-windows # windows/amd64Output binaries are placed in agent/bin/.
Cross-Platform Builds
| Target | Command | Output |
|---|---|---|
| Linux amd64 | make build-linux | bin/breeze-agent-linux-amd64 |
| Linux arm64 | make build-linux | bin/breeze-agent-linux-arm64 |
| macOS Intel | make build-darwin | bin/breeze-agent-darwin-amd64 |
| macOS Apple Silicon | make build-darwin | bin/breeze-agent-darwin-arm64 |
| Windows amd64 | make build-windows | bin/breeze-agent-windows-amd64.exe |
Windows MSI Installer
To build an MSI installer for enterprise deployment:
# On Windows with WiX installed:make build-windows-msi VERSION=0.2.0This produces dist/breeze-agent.msi for silent deployment via GPO or SCCM.
Version Embedding
The build embeds the version number via linker flags:
VERSION ?= 0.1.0LDFLAGS := -ldflags "-X main.version=$(VERSION)"Override at build time:
make build VERSION=1.0.0Project Structure
agent/├── cmd/breeze-agent/ # Entry point├── internal/│ ├── agent/ # Core agent loop│ ├── commands/ # Command execution│ ├── config/ # Configuration management│ ├── discovery/ # Network discovery scanner│ ├── heartbeat/ # Telemetry collection│ ├── ipc/ # Inter-process communication│ ├── mtls/ # mTLS certificate management│ ├── pty/ # Terminal PTY handling│ ├── sessionbroker/ # User session management│ ├── transfer/ # File transfer│ └── userhelper/ # User-mode helper process├── scripts/install/ # Service installation scripts├── service/ # systemd/launchd unit files└── MakefileRunning in Development
cd agentmake runThis runs the agent directly without installing it as a service. Useful for testing against a local Breeze server.
Testing
cd agentmake test # Run all testsmake test-ipc # Run IPC and session broker testsmake lint # Run golangci-lintmake fmt # Format code