diff --git a/vulndb/govulncheck/main.go b/vulndb/govulncheck/main.go
index ba555f2..a3faacc 100644
--- a/vulndb/govulncheck/main.go
+++ b/vulndb/govulncheck/main.go
@@ -83,12 +83,14 @@
 	if GOVULNDB := os.Getenv("GOVULNDB"); GOVULNDB != "" {
 		dbs = strings.Split(GOVULNDB, ",")
 	}
-
-	cfg := &packages.Config{
-		Mode: packages.LoadAllSyntax | packages.NeedModule,
+	dbClient, err := client.NewClient(dbs, client.Options{HTTPCache: client.NewFsCache()})
+	if err != nil {
+		fmt.Fprintf(os.Stderr, "govulncheck: %s\n", err)
+		os.Exit(1)
 	}
 
-	r, err := run(cfg, flag.Args(), *importsFlag, dbs)
+	cfg := &packages.Config{Mode: packages.LoadAllSyntax | packages.NeedModule}
+	r, err := run(cfg, flag.Args(), *importsFlag, dbClient)
 	if err != nil {
 		fmt.Fprintf(os.Stderr, "govulncheck: %s\n", err)
 		os.Exit(1)
@@ -176,18 +178,13 @@
 	return !s.IsDir()
 }
 
-func run(cfg *packages.Config, patterns []string, importsOnly bool, dbs []string) (*audit.Results, error) {
+func run(cfg *packages.Config, patterns []string, importsOnly bool, dbClient *client.Client) (*audit.Results, error) {
 	if len(patterns) == 1 && isFile(patterns[0]) {
 		modules, symbols, err := binscan.ExtractPackagesAndSymbols(patterns[0])
 		if err != nil {
 			return nil, err
 		}
 
-		dbClient, err := client.NewClient(dbs, client.Options{})
-		if err != nil {
-			return nil, fmt.Errorf("failed to create database client: %s", err)
-		}
-
 		vulns, err := audit.FetchVulnerabilities(dbClient, modules)
 		if err != nil {
 			return nil, fmt.Errorf("failed to load vulnerability dbs: %v", err)
@@ -217,10 +214,6 @@
 	if *verboseFlag {
 		log.Println("loading database...")
 	}
-	dbClient, err := client.NewClient(dbs, client.Options{})
-	if err != nil {
-		return nil, fmt.Errorf("failed to create database client: %s", err)
-	}
 
 	modVulns, err := audit.FetchVulnerabilities(dbClient, extractModules(pkgs))
 	if err != nil {
diff --git a/vulndb/govulncheck/main_test.go b/vulndb/govulncheck/main_test.go
index 00c069a..6cb3987 100644
--- a/vulndb/govulncheck/main_test.go
+++ b/vulndb/govulncheck/main_test.go
@@ -22,6 +22,7 @@
 	"golang.org/x/exp/vulndb/internal/audit"
 	"golang.org/x/tools/go/packages"
 	"golang.org/x/tools/go/packages/packagestest"
+	"golang.org/x/vulndb/client"
 )
 
 // TODO(zpavlinovic): improve integration tests.
@@ -223,7 +224,13 @@
 			}
 		}
 
-		r, err := run(cfg, []string{hashiVaultOkta}, false, []string{test.source})
+		// TODO: add caching
+		dbClient, err := client.NewClient([]string{test.source}, client.Options{})
+		if err != nil {
+			t.Error(err)
+		}
+
+		r, err := run(cfg, []string{hashiVaultOkta}, false, dbClient)
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -374,7 +381,13 @@
 			}
 		}
 
-		r, err := run(cfg, []string{"./..."}, false, []string{test.source})
+		// TODO: add caching
+		dbClient, err := client.NewClient([]string{test.source}, client.Options{})
+		if err != nil {
+			t.Error(err)
+		}
+
+		r, err := run(cfg, []string{"./..."}, false, dbClient)
 		if err != nil {
 			t.Fatal(err)
 		}
