diff --git a/README.md b/README.md
index 891fb3d..68a2e4d 100644
--- a/README.md
+++ b/README.md
@@ -73,6 +73,9 @@
 `users/vanadium.bot@gmail.com/apps/chat/public` -- has been created with
 permissions that allow anybody to mount and glob inside that directory.
 
+TODO(nlacasse): Describe permissions set up once permission settings are
+finalized. (See go/vcl/9767)
+
 When a client joins the chat room, it generates a random string and attempts to
 mount itself in the public [mounttable server][mounttable] under the name
 `users/vanadium.bot@gmail.com/apps/chat/public/<random_string>`.  If that name
diff --git a/clients/shell/src/chat/main.go b/clients/shell/src/chat/main.go
index f9c3e6e..dc74897 100644
--- a/clients/shell/src/chat/main.go
+++ b/clients/shell/src/chat/main.go
@@ -22,10 +22,9 @@
 )
 
 var (
-	mounttable = flag.String("mounttable", "/ns.dev.v.io:8101", "Mounttable where channel is mounted.")
-	proxy      = flag.String("proxy", "proxy.dev.v.io:8100", "Proxy to listen on.")
-	// TODO(nlacasse): Allow these to be set by a flag.
-	channelName = "users/vanadium.bot@gmail.com/apps/chat/public"
+	mounttable  = flag.String("mounttable", "/ns.dev.v.io:8101", "Mounttable where channel is mounted.")
+	proxy       = flag.String("proxy", "proxy.dev.v.io:8100", "Proxy to listen on.")
+	channelName = flag.String("channel", "users/vanadium.bot@gmail.com/apps/chat/public", "Channel to join.")
 )
 
 const welcomeText = `***Welcome to Vanadium Chat***
@@ -108,7 +107,7 @@
 		g.Close()
 	}
 
-	cr, err := newChannel(ctx, *mounttable, *proxy, channelName)
+	cr, err := newChannel(ctx, *mounttable, *proxy, *channelName)
 	if err != nil {
 		log.Panicln(err)
 	}
@@ -121,7 +120,7 @@
 	hw.Write([]byte(color.RedString(welcomeText)))
 
 	hw.Write([]byte(fmt.Sprintf("You have joined channel '%s' on mounttable '%s'.\n"+
-		"Your username is '%s'.\n\n", channelName, *mounttable, cr.UserName())))
+		"Your username is '%s'.\n\n", *channelName, *mounttable, cr.UserName())))
 
 	a := &app{
 		cr:       cr,
diff --git a/clients/web/js/channel.js b/clients/web/js/channel.js
index 69acec6..37623e6 100644
--- a/clients/web/js/channel.js
+++ b/clients/web/js/channel.js
@@ -8,6 +8,7 @@
 var EventEmitter = require('events').EventEmitter;
 var inherits = require('inherits');
 var path = require('path');
+var url = require('url');
 
 var access = require('vanadium/src/gen-vdl/v.io/v23/security/access');
 var naming = require('vanadium').naming;
@@ -15,8 +16,8 @@
 var ServiceVdl = require('./chat/vdl');
 var util = require('./util');
 
-// TODO(nlacasse): Make this configurable.
-var CHANNEL_NAME = 'users/vanadium.bot@gmail.com/apps/chat/public';
+// Default channel name. Override by setting "channel" query param in url.
+var DEFAULT_CHANNNEL = 'users/vanadium.bot@gmail.com/apps/chat/public';
 
 // Member is a member of the channel.
 function Member(blessings, path) {
@@ -42,7 +43,8 @@
 function Channel(rt) {
   EventEmitter.call(this);
 
-  this.channelName_ = CHANNEL_NAME;
+  var u = url.parse(window.location.href, true);
+  this.channelName_ = u.query.channel || DEFAULT_CHANNNEL;
 
   this.accountName_ = rt.accountName;
   this.namespace_ = rt.namespace();
