diff --git a/src/args.rs b/src/args.rs
index 657c363374e4d65f860982932b7d54738a8498d4..df66457988078eb9a8ae711a74d48f9cfe258949 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -81,10 +81,10 @@ pub struct Run {
         require_value_delimiter = true,
         use_value_delimiter = true,
         parse(try_from_str = try_parse_address),
-        required = true,
+        default_value = "localhost:3301",
         env = "PICODATA_PEER"
     )]
-    /// Address of other instance(s)
+    /// Address(es) of other instance(s)
     pub peers: Vec<String>,
 
     #[clap(long, value_name = "name", env = "PICODATA_REPLICASET_ID")]
@@ -276,20 +276,28 @@ mod tests {
         let _env_dump = EnvDump::new();
 
         std::env::set_var("PICODATA_INSTANCE_ID", "instance-id-from-env");
-        std::env::set_var("PICODATA_PEER", "peer-from-env");
         {
             let parsed = parse![Run,];
             assert_eq!(parsed.instance_id, "instance-id-from-env");
-            assert_eq!(parsed.peers.as_ref(), vec!["peer-from-env:3301"]);
+            assert_eq!(parsed.peers.as_ref(), vec!["localhost:3301"]);
             assert_eq!(parsed.listen, "localhost:3301"); // default
             assert_eq!(parsed.advertise_address(), "localhost:3301"); // default
             assert_eq!(parsed.log_level(), SayLevel::Info); // default
 
             let parsed = parse![Run, "--instance-id", "instance-id-from-args"];
             assert_eq!(parsed.instance_id, "instance-id-from-args");
+        }
+
+        std::env::set_var("PICODATA_PEER", "peer-from-env");
+        {
+            let parsed = parse![Run,];
+            assert_eq!(parsed.peers.as_ref(), vec!["peer-from-env:3301"]);
 
             let parsed = parse![Run, "--peer", "peer-from-args"];
             assert_eq!(parsed.peers.as_ref(), vec!["peer-from-args:3301"]);
+
+            let parsed = parse![Run, "--peer", ":3302"];
+            assert_eq!(parsed.peers.as_ref(), vec!["localhost:3302"]);
         }
 
         std::env::set_var("PICODATA_LISTEN", "listen-from-env");