diff --git a/goatherd.go b/goatherd.go
index 0941c0f6137efcf57e07779c7d7c58621103a871..f6f3ed5bee67f22deb042e04e29219a3e65fdf2e 100644
--- a/goatherd.go
+++ b/goatherd.go
@@ -13,6 +13,7 @@ import (
 	"log"
 	"net"
 	"os"
+	"strconv"
 	"strings"
 	"sync"
 	"time"
@@ -537,6 +538,16 @@ func main() {
 			user := args[0]
 			secret := args[1]
 			create_user(user, secret)
+		case "set-counter":
+			if len(args) != 2 {
+				log.Fatalf("set-counter: Invalid number of arguments: %v (expecting <username> <counter>)\n", len(args))
+			}
+			user := args[0]
+			counter, err := strconv.ParseUint(args[1], 0, 64)
+			err_fatal(err)
+			if err = set_count(db, user, counter); err != nil {
+				err_fatal(err)
+			}
 		case "serve":
 			fs := flag.NewFlagSet("serve", flag.ExitOnError)
 			flag_addr := fs.String("addr", "", "Address to listen on. (default 127.0.0.1:9999)")