feat: Add server address and port options for browser mode

This commit is contained in:
Matej Urbas 2025-05-18 07:54:23 +01:00
parent 543e5570ae
commit 49a82e79e5
4 changed files with 33 additions and 3 deletions

View file

@ -627,6 +627,24 @@ def get_parser(default_config_files, git_root):
help="Run aider in your browser (default: False)",
default=False,
)
group.add_argument(
"--server-address",
type=str,
default=None,
help=(
"The address on which aider should listen when running in browser mode. By default"
" it listens on localhost."
),
)
group.add_argument(
"--server-port",
type=int,
default=None,
help=(
"The port on which aider should listen when running in browser mode. By default"
" a random port is chosen."
),
)
group.add_argument(
"--copy-paste",
action=argparse.BooleanOptionalAction,

View file

@ -230,7 +230,7 @@ def write_streamlit_credentials():
print("Streamlit credentials already exist.")
def launch_gui(args):
def launch_gui(args, server_port=None, server_address=None):
from streamlit.web import cli
from aider import gui
@ -251,6 +251,12 @@ def launch_gui(args):
"--server.runOnSave=false",
]
if server_port is not None:
st_args.append(f"--server.port={server_port}")
if server_address is not None:
st_args.append(f"--server.address={server_address}")
# https://github.com/Aider-AI/aider/issues/2193
is_dev = "-dev" in str(__version__)
@ -663,7 +669,7 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
analytics.event("exit", reason="Streamlit not installed")
return
analytics.event("gui session")
launch_gui(argv)
launch_gui(argv, server_port=args.server_port, server_address=args.server_address)
analytics.event("exit", reason="GUI session ended")
return

View file

@ -382,6 +382,12 @@ cog.outl("```")
## Run aider in your browser (default: False)
#gui: false
## The address on which aider should listen when running in browser mode (default: localhost)
#server-address: "0.0.0.0"
## The port on which aider should listen when running in browser mode (default: None)
#server-port: 12345
## Enable automatic copy/paste of chat between aider and web UI (default: False)
#copy-paste: false

View file

@ -6,7 +6,7 @@ from aider.main import main
class TestBrowser(unittest.TestCase):
@patch("aider.main.launch_gui")
@patch("aider.main.launch_gui", autospec=True)
def test_browser_flag_imports_streamlit(self, mock_launch_gui):
os.environ["AIDER_ANALYTICS"] = "false"