GoFlow is a powerful Go-based runtime analysis and monitoring tool designed to help developers debug and analyze concurrent Go programs. It provides real-time visibility into goroutines, channels, and potential concurrency issues such as deadlocks. The project offers a gRPC server that streams live updates about your Go program's runtime state, making it ideal for debugging complex concurrent applications.
- Real-time goroutine monitoring and tracking
- Channel operation analysis and state tracking
- Deadlock detection
- Race condition analysis
- Debug server with pprof integration
- gRPC-based streaming API for live updates
- Session management for multiple clients
cmd/: Application entry points and server implementationpkg/: Core packages including:analyzer/: Deadlock and race condition detectionruntime/: Goroutine and channel monitoringserver/: gRPC server implementationstorage/: Session management
api/: Protocol buffer definitions and generated codeconfigs/: Configuration filesscripts/: Utility scripts for developmentinternal/: Private application logic
- Go 1.20 or higher
- Clone the repository
- Install protocol buffer compiler (protoc)
- Run
scripts/generate_proto.shto generate gRPC code - Run
go mod downloadto install dependencies - Build the project:
go build ./cmd/goflow
go run ./cmd/goflowThe server will start on the default port (50051) with a debug server on port 6060.
- Start the GoFlow server
- Connect to the gRPC server using a client
- Subscribe to goroutine and channel updates
- Monitor your application's concurrent behavior in real-time
- Run tests:
go test ./... - Format code:
go fmt ./...
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.