github.com/goharbor/harbor
This package has a good security score with no known vulnerabilities.
Community Reviews
Harbor client library with rough edges and limited production polish
Connection pooling isn't explicitly configurable through the client interface - you're working directly with HTTP clients under the hood, which means you need to bring your own transport configuration. Timeout handling is basic; default timeouts aren't well-documented and you'll need to wrap calls with context deadlines yourself. Retry logic is entirely absent, so transient network failures require custom middleware.
Error handling is inconsistent. Some operations return structured errors, others return plain strings that require parsing. There's minimal observability support - no built-in hooks for metrics or tracing, making it difficult to monitor client behavior in production. The documentation focuses on API coverage rather than practical usage patterns, leaving you to piece together working examples from the test suite.
Best for: Internal tooling or scripts where you control the Harbor instance and can tolerate manual error handling.
Avoid if: You need production-grade resilience, observability, or are building customer-facing services requiring stable APIs.
Powerful but steep learning curve with limited Go client documentation
Error messages are often generic HTTP errors that don't provide enough context about what went wrong. Debugging requires diving into the actual HTTP responses and correlating them with Harbor's REST API docs. The GitHub issues are more focused on Harbor the product rather than the Go client library specifically, so finding answers to SDK-specific questions is difficult.
Common tasks like authentication setup, pagination handling, and proper resource cleanup aren't well-documented. Expect to reverse-engineer examples from Harbor's own internal code or integration tests. The package works once configured correctly, but getting there requires significant trial and error.
Best for: Teams already running Harbor who need programmatic registry management and can invest time learning the API.
Avoid if: You need quick integration with good documentation or are evaluating container registries and want easy SDK onboarding.
Harbor Go client: functional but rough edges for production operations
Connection pooling isn't explicitly documented, and the default HTTP client configuration requires manual tuning for production loads. Timeout handling is present but defaults aren't production-ready - you must set reasonable timeouts yourself or risk hanging connections. The library doesn't provide built-in retry mechanisms, circuit breakers, or backoff strategies, so you'll need to layer those yourself.
Observability is limited. There are no hooks for request/response logging or metrics collection without wrapping the entire HTTP transport. The '+incompatible' version suffix indicates Go module compatibility issues that can cause dependency management headaches. Configuration is verbose, requiring manual construction of client objects with many required fields.
Best for: Internal tooling or scripts where you control the Harbor version and can tolerate manual retry/timeout configuration.
Avoid if: You need production-grade reliability with minimal manual tuning or are building customer-facing services requiring robust error handling.
Sign in to write a review
Sign In