Index: src/supervisor/datatypes.py
===================================================================
--- src/supervisor/datatypes.py	(revision 889)
+++ src/supervisor/datatypes.py	(working copy)
@@ -370,7 +370,7 @@
 def url(value):
     import urlparse
     scheme, netloc, path, params, query, fragment = urlparse.urlparse(value)
-    if scheme and netloc:
+    if scheme and netloc or scheme in ('file', 'unix'):
         return value
     raise ValueError("value %s is not a URL" % value)
 
Index: src/supervisor/tests/test_options.py
===================================================================
--- src/supervisor/tests/test_options.py	(revision 889)
+++ src/supervisor/tests/test_options.py	(working copy)
@@ -141,8 +141,15 @@
         self.assertEqual(options.username, 'chris')
         self.assertEqual(options.password, '123')
         self.assertEqual(options.history_file, history_file)
-                   
 
+    def test_options_unixsocket_cli(self):
+        from StringIO import StringIO
+        fp = StringIO('[supervisorctl]')
+        instance = self._makeOne()
+        instance.configfile = fp
+        instance.realize(args=['--serverurl', 'unix:///dev/null'])
+        self.assertEqual(instance.serverurl, 'unix:///dev/null')
+
 class ServerOptionsTests(unittest.TestCase):
     def _getTargetClass(self):
         from supervisor.options import ServerOptions
