GCP Secret Manager Emulator v0.1.0
Lightweight gRPC emulator for Google Cloud Secret Manager API
Installation
go install github.com/blackwell-systems/gcp-secret-manager-emulator/cmd/[email protected]Or use as a library:
go get github.com/blackwell-systems/[email protected]Stats
- Test Coverage: 73.5%
- Go Version: 1.24+
- Commits: 13
- Platforms: Linux, macOS, Windows
Features
- Full Secret Manager v1 API implementation
- No GCP credentials required
- In-memory storage with thread-safe operations
- Docker support for containerized deployment
- Compatible with official
cloud.google.com/go/secretmanagerclient
Supported Operations
Secrets:
- CreateSecret - Create new secrets with labels
- GetSecret - Retrieve secret metadata
- ListSecrets - List all secrets with pagination
- DeleteSecret - Remove secrets
Secret Versions:
- AddSecretVersion - Add new version with payload
- AccessSecretVersion - Retrieve version payload (supports "latest" alias)
- GetSecretVersion - Retrieve version metadata
Changes
- fix: Enable ARM64 Docker builds with Alpine workaround (270cff4)
- docs: Add CI test status badge to README (04092c7)
- ci: Install golangci-lint from source to match Go version (9ceb1ce)
- ci: Update Go version requirements to 1.24+ (8ec1b5e)
- fix: Update Go version requirements and golangci-lint version (e4829e3)
- ci: Simplify golangci-lint config and pin version (e0ba501)
- ci: Add golangci-lint configuration (68720c3)
- fix: Update Dockerfile to use correct server binary path (561b939)
- ci: Add GitHub Actions workflows for CI and automated releases (dd311fc)
- docs: Add automatic version badge to README (bbfa8a9)
- docs: Add package documentation and examples for pkg.go.dev (998534b)
- Initial extraction from vaultmux (5819b6a)
- Initial commit (66f2ba8)
Documentation
Quick Start
Run Server
# Start on default port 9090
server
# Custom port
server --port 8080Use with GCP SDK
package main
import (
"context"
secretmanager "cloud.google.com/go/secretmanager/apiv1"
"google.golang.org/api/option"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func main() {
ctx := context.Background()
// Connect to emulator
conn, _ := grpc.NewClient(
"localhost:9090",
grpc.WithTransportCredentials(insecure.NewCredentials()),
)
client, _ := secretmanager.NewClient(ctx, option.WithGRPCConn(conn))
defer client.Close()
// Use client normally - API is identical to real GCP
}Docker
docker run -p 9090:9090 ghcr.io/blackwell-systems/gcp-secret-manager-emulator:v0.1.0Full Changelog: https://github.com/blackwell-systems/gcp-secret-manager-emulator/compare/v0.1.0