diff --git a/cmd/converge/server.go b/cmd/converge/converge.go
similarity index 91%
rename from cmd/converge/server.go
rename to cmd/converge/converge.go
index 96138e1..63f9fce 100644
--- a/cmd/converge/server.go
+++ b/cmd/converge/converge.go
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"converge/pkg/comms"
 	"converge/pkg/converge"
 	"converge/pkg/websocketutil"
 	"fmt"
@@ -70,6 +71,16 @@ func main() {
 		printHelp("")
 	}
 
+	username, ok := os.LookupEnv("CONVERGE_USERNAME")
+	if !ok {
+		username = "abc"
+	}
+
+	password, ok := os.LookupEnv("CONVERGE_PASSWORD")
+	if !ok {
+		password = "123"
+	}
+
 	admin := converge.NewAdmin()
 	registrationService := websocketutil.WebSocketService{
 		Handler: func(w http.ResponseWriter, r *http.Request, conn net.Conn) {
@@ -79,7 +90,8 @@ func main() {
 				return
 			}
 			log.Printf("Got registration connection: '%s'\n", publicId)
-			err = admin.Register(publicId, conn)
+			err = admin.Register(publicId, conn,
+				comms.UserPassword{Username: username, Password: password})
 			if err != nil {
 				log.Printf("Error %v\n", err)
 			}
diff --git a/pkg/converge/admin.go b/pkg/converge/admin.go
index 8062074..29b6790 100644
--- a/pkg/converge/admin.go
+++ b/pkg/converge/admin.go
@@ -168,7 +168,8 @@ func (admin *Admin) RemoveClient(client *Client) error {
 	return nil
 }
 
-func (admin *Admin) Register(publicId string, conn io.ReadWriteCloser) error {
+func (admin *Admin) Register(publicId string, conn io.ReadWriteCloser,
+	userPassword comms.UserPassword) error {
 	defer conn.Close()
 	// TODO: remove agent return value
 	agent, err := admin.addAgent(publicId, conn)
@@ -180,7 +181,7 @@ func (admin *Admin) Register(publicId string, conn io.ReadWriteCloser) error {
 	}()
 
 	log.Println("Sending username and password to agent")
-	comms.Send(agent.commChannel, comms.UserPassword{Username: "abc", Password: "123"})
+	comms.Send(agent.commChannel, userPassword)
 
 	go func() {
 		comms.ListenForAgentEvents(agent.commChannel,