diff --git a/src/main.rs b/src/main.rs
index 11f059ac97f0717814f5648ff81216b9c65ddccc..4818cba0323991c23ab61261c30e0eb166b3cadc 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,6 @@
 mod markov;
 
-use std::{fs, path::Path};
+use std::{fs, path::Path, net::Ipv4Addr};
 
 use anyhow::Result;
 use clap::{arg, Parser};
@@ -58,19 +58,24 @@ impl Api {
 struct Args {
     #[arg(short, long)]
     file: String,
+
+    #[arg(short, long)]
+    local: bool,
 }
 
 #[tokio::main(flavor = "current_thread")]
 async fn main() -> Result<()> {
-    let service = OpenApiService::new(Api::from_file(Args::parse().file)?, "mew", "1.0")
+    let args = Args::parse();
+    let service = OpenApiService::new(Api::from_file(args.file)?, "mew", "1.0")
         .server("http://czi.wtf");
 
     let app = Route::new()
         .nest("/", service.clone())
         .nest("/docs", service.clone().swagger_ui());
 
-    println!("starting server on http://0.0.0.0:6969");
-    Server::new(TcpListener::bind("0.0.0.0:6969"))
+    let bind_ip = if args.local { Ipv4Addr::new(127,0,0,1) } else { Ipv4Addr::new(0,0,0,0)};
+    println!("starting server on http://{}:6969", bind_ip);
+    Server::new(TcpListener::bind((bind_ip, 6969)))
         .run(app)
         .await?;