# Clone the repo
git clone https://github.com/speakeasy-api/madprocs.git
cd madprocs
# Build
go build -o madprocs .
# Run with a test config
./madprocs -c mprocs.yamlmadprocs/
├── main.go # Entry point, CLI flags
├── config/ # YAML config parsing
├── process/ # Process lifecycle management
├── log/ # Searchable log ring buffer
├── ui/ # Bubbletea TUI components
└── web/ # Embedded web server
└── static/ # HTML/CSS/JS for web UI
- Fork the repo and create a branch
- Make your changes
- Test locally with
go build && ./madprocs - Run
go vet ./...andgo fmt ./... - Submit a PR
Releases are automated via GitHub Actions. To create a release:
# Patch release (0.0.x)
./scripts/release.sh patch
# Minor release (0.x.0)
./scripts/release.sh minor
# Major release (x.0.0)
./scripts/release.sh majorThe script will:
- Bump the version
- Create and push a git tag
- Wait for GitHub Actions to build the release
- Follow standard Go conventions
- Use
go fmtfor formatting - Keep functions focused and small
- Handle errors explicitly
The web UI is embedded in the binary using //go:embed. When modifying files in web/static/, rebuild to see changes.
go test ./...