diff --git a/internal/worker/cve.go b/cmd/cvetriage/cve.go
similarity index 99%
rename from internal/worker/cve.go
rename to cmd/cvetriage/cve.go
index ee46d7c..6cb6838 100644
--- a/internal/worker/cve.go
+++ b/cmd/cvetriage/cve.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+package main
 
 import (
 	"errors"
diff --git a/cmd/cvetriage/main.go b/cmd/cvetriage/main.go
index 152e7a2..b396007 100644
--- a/cmd/cvetriage/main.go
+++ b/cmd/cvetriage/main.go
@@ -24,7 +24,6 @@
 
 	"golang.org/x/vuln/internal"
 	"golang.org/x/vuln/internal/derrors"
-	"golang.org/x/vuln/internal/worker"
 )
 
 func main() {
@@ -49,7 +48,7 @@
 	if err != nil {
 		return err
 	}
-	return worker.Run(repoPath, triaged)
+	return Run(repoPath, triaged)
 }
 
 const (
diff --git a/internal/worker/triager.go b/cmd/cvetriage/triager.go
similarity index 98%
rename from internal/worker/triager.go
rename to cmd/cvetriage/triager.go
index 1653e4c..7872f6a 100644
--- a/internal/worker/triager.go
+++ b/cmd/cvetriage/triager.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+package main
 
 import (
 	"golang.org/x/vuln/internal/cveschema"
diff --git a/internal/worker/worker.go b/cmd/cvetriage/worker.go
similarity index 92%
rename from internal/worker/worker.go
rename to cmd/cvetriage/worker.go
index 274a325..f310050 100644
--- a/internal/worker/worker.go
+++ b/cmd/cvetriage/worker.go
@@ -2,9 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package worker is used to fetch and create issues for CVEs that are
-// potential Go vulnerabilities.
-package worker
+package main
 
 import (
 	"context"
@@ -19,6 +17,7 @@
 	"github.com/go-git/go-git/v5/plumbing/object"
 	"golang.org/x/vuln/internal/cveschema"
 	"golang.org/x/vuln/internal/derrors"
+	"golang.org/x/vuln/internal/gitrepo"
 	"golang.org/x/vuln/internal/worker/log"
 )
 
@@ -28,14 +27,14 @@
 	defer derrors.Wrap(&err, "Run(triaged)")
 	var repo *git.Repository
 	if dirpath != "" {
-		repo, err = openRepo(dirpath)
+		repo, err = gitrepo.Open(dirpath)
 	} else {
-		repo, err = cloneRepo(cvelistRepoURL)
+		repo, err = gitrepo.Clone(gitrepo.CVElistRepoURL)
 	}
 	if err != nil {
 		return err
 	}
-	root, err := repoRoot(repo)
+	root, err := gitrepo.Root(repo)
 	if err != nil {
 		return err
 	}
diff --git a/internal/worker/repo.go b/internal/gitrepo/gitrepo.go
similarity index 63%
rename from internal/worker/repo.go
rename to internal/gitrepo/gitrepo.go
index 13d5390..4c40da0 100644
--- a/internal/worker/repo.go
+++ b/internal/gitrepo/gitrepo.go
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+// Package gitrepo provides operations on git repos.
+package gitrepo
 
 import (
 	"context"
@@ -15,11 +16,11 @@
 	"golang.org/x/vuln/internal/worker/log"
 )
 
-const cvelistRepoURL = "https://github.com/CVEProject/cvelist"
+const CVElistRepoURL = "https://github.com/CVEProject/cvelist"
 
-// cloneRepo returns a repo by cloning the repo at repoURL.
-func cloneRepo(repoURL string) (repo *git.Repository, err error) {
-	defer derrors.Wrap(&err, "cloneRepo(%q)", repoURL)
+// Clone returns a repo by cloning the repo at repoURL.
+func Clone(repoURL string) (repo *git.Repository, err error) {
+	defer derrors.Wrap(&err, "gitrepo.Clone(%q)", repoURL)
 	log.Infof(context.Background(), "Cloning %q...", repoURL)
 	return git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
 		URL:           repoURL,
@@ -30,9 +31,9 @@
 	})
 }
 
-// openRepo returns a repo by opening the repo at the local path dirpath.
-func openRepo(dirpath string) (repo *git.Repository, err error) {
-	defer derrors.Wrap(&err, "openRepo(%q)", dirpath)
+// Open returns a repo by opening the repo at the local path dirpath.
+func Open(dirpath string) (repo *git.Repository, err error) {
+	defer derrors.Wrap(&err, "gitrepo.Open(%q)", dirpath)
 	log.Infof(context.Background(), "Opening %q...", dirpath)
 	repo, err = git.PlainOpen(dirpath)
 	if err != nil {
@@ -41,8 +42,8 @@
 	return repo, nil
 }
 
-// repoRoot returns the root tree of the repo at HEAD.
-func repoRoot(repo *git.Repository) (root *object.Tree, err error) {
+// Root returns the root tree of the repo at HEAD.
+func Root(repo *git.Repository) (root *object.Tree, err error) {
 	refName := plumbing.HEAD
 	ref, err := repo.Reference(refName, true)
 	if err != nil {
