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.sh
to generate gRPC code - Run
go mod download
to install dependencies - Build the project:
go build ./cmd/goflow
go run ./cmd/goflow
The 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.