diff --git a/cmd/converge/converge.go b/cmd/converge/converge.go
index a057524..531f4c2 100644
--- a/cmd/converge/converge.go
+++ b/cmd/converge/converge.go
@@ -27,9 +27,10 @@ func parsePublicId(path string) (publicId string, _ error) {
 	return matches[1], nil
 }
 
-func catchAllHandler(w http.ResponseWriter, r *http.Request) {
-	http.Redirect(w, r, "/docs", http.StatusFound)
-	return
+func catchAllHandler(contextPath string) func(w http.ResponseWriter, r *http.Request) {
+	return func(w http.ResponseWriter, r *http.Request) {
+		http.Redirect(w, r, contextPath+"/docs", http.StatusFound)
+	}
 }
 
 func printHelp(msg string) {
@@ -48,8 +49,13 @@ func printHelp(msg string) {
 		"an embedded SSH server to provide interactive access to the end-user. This works\n" +
 		"both on linux and on windows.\n" +
 		"\n" +
-		"-s {addSshKeys(BASH, usageInputs.SshKeys)}
-        curl --fail-with-body http{access.Secure}://{access.HostPort}/downloads/agent > agent{`
+        curl --fail-with-body http{access.Secure}://{access.BaseUrl}/downloads/agent > agent{`
         chmod 755 agent
-        `}./agent --id {usageInputs.Id} ws{access.Secure}://{access.HostPort}{`
+        `}./agent --id {usageInputs.Id} ws{access.Secure}://{access.BaseUrl}{`
         rm -f agent
         `}
     }
     if usageInputs.RemoteShells[CMD]  {
         {addSshKeys(CMD, usageInputs.SshKeys)}
-        curl --fail-with-body http{access.Secure}://{access.HostPort}/downloads/agent.exe > agent.exe{`
-        `}agent --id {usageInputs.Id} ws{access.Secure}://{access.HostPort}{`
+        curl --fail-with-body http{access.Secure}://{access.BaseUrl}/downloads/agent.exe > agent.exe{`
+        `}agent --id {usageInputs.Id} ws{access.Secure}://{access.BaseUrl}{`
         del agent.exe
         `}
     }
     if usageInputs.RemoteShells[POWERSHELL]  {
         {addSshKeys(POWERSHELL, usageInputs.SshKeys)}
-        curl --fail-with-body http{access.Secure}://{access.HostPort}/downloads/agent.exe > agent.exe{`
-        `}agent --id {usageInputs.Id} ws{access.Secure}://{access.HostPort}{`
+        curl --fail-with-body http{access.Secure}://{access.BaseUrl}/downloads/agent.exe > agent.exe{`
+        `}agent --id {usageInputs.Id} ws{access.Secure}://{access.BaseUrl}{`
         del agent.exe
         `}
     }
@@ -55,8 +55,8 @@ templ AgentUsage(access models.ConvergeAccess, usageInputs UsageInputs) {
     
{`
-          `}ssh -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{access.Secure}://{access.HostPort}/client/{usageInputs.Id}"  { access.Username }{"@localhost"}   {`
-          `}sftp -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{access.Secure}://{access.HostPort}/client/{usageInputs.Id}" { access.Username }{"@localhost"}   {`
+          `}ssh -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{access.Secure}://{access.BaseUrl}/client/{usageInputs.Id}"  { access.Username }{"@localhost"}   {`
+          `}sftp -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{access.Secure}://{access.BaseUrl}/client/{usageInputs.Id}" { access.Username }{"@localhost"}   {`
           `}
 
     This requires the wsproxy utility which is available in the
@@ -79,8 +79,8 @@ templ AgentUsage(access models.ConvergeAccess, usageInputs UsageInputs) {
        using:
     
{`
-         `}tcptows ws{access.Secure}://{access.HostPort}/client/{usageInputs.Id}   {`
-         `}tcptows ws{access.Secure}://{access.HostPort}/client/{usageInputs.Id}   {`
+         `}tcptows ws{access.Secure}://{access.BaseUrl}/client/{usageInputs.Id}   {`
+         `}tcptows ws{access.Secure}://{access.BaseUrl}/client/{usageInputs.Id}   {`
          `}