@@ -314,6 +314,17 @@ def _handle_network_create(args: argparse.Namespace) -> int:
314314 blocks_to_keep = (
315315 args .blocks_to_keep if validator ["is_bootstrap" ] else 100000
316316 ),
317+ dashboard_enabled = (
318+ args .enable_dashboard if validator ["is_bootstrap" ] else False
319+ ),
320+ dashboard_host = (
321+ args .dashboard_host
322+ if validator ["is_bootstrap" ]
323+ else "127.0.0.1"
324+ ),
325+ dashboard_port = (
326+ args .dashboard_port if validator ["is_bootstrap" ] else 8080
327+ ),
317328 )
318329 write_json (profile_path , profile .to_dict (), force = args .force )
319330 validator_result ["profile_path" ] = str (profile_path )
@@ -421,6 +432,9 @@ def _handle_network_join(args: argparse.Namespace) -> int:
421432 home = str (args .home ) if args .home is not None else None ,
422433 pruning_enabled = args .enable_pruning ,
423434 blocks_to_keep = args .blocks_to_keep ,
435+ dashboard_enabled = args .enable_dashboard ,
436+ dashboard_host = args .dashboard_host ,
437+ dashboard_port = args .dashboard_port ,
424438 )
425439 target = args .output or base_dir / "nodes" / f"{ args .name } .json"
426440 if not target .is_absolute ():
@@ -813,6 +827,9 @@ def _initialize_node_from_args(args: argparse.Namespace) -> dict:
813827 service_node = bool (profile .get ("service_node" )),
814828 enable_pruning = bool (profile .get ("pruning_enabled" )),
815829 blocks_to_keep = int (profile .get ("blocks_to_keep" , 100000 )),
830+ dashboard_enabled = bool (profile .get ("dashboard_enabled" )),
831+ dashboard_host = str (profile .get ("dashboard_host" , "127.0.0.1" )),
832+ dashboard_port = int (profile .get ("dashboard_port" , 8080 )),
816833 )
817834
818835 result = node_setup .materialize_cometbft_home (
@@ -1300,6 +1317,23 @@ def build_parser() -> argparse.ArgumentParser:
13001317 default = 100000 ,
13011318 help = "number of blocks to retain when pruning is enabled" ,
13021319 )
1320+ create_parser .add_argument (
1321+ "--enable-dashboard" ,
1322+ action = "store_true" ,
1323+ help = "enable the node dashboard and chain explorer web UI" ,
1324+ )
1325+ create_parser .add_argument (
1326+ "--dashboard-host" ,
1327+ type = str ,
1328+ default = "127.0.0.1" ,
1329+ help = "dashboard listen address (default: 127.0.0.1)" ,
1330+ )
1331+ create_parser .add_argument (
1332+ "--dashboard-port" ,
1333+ type = int ,
1334+ default = 8080 ,
1335+ help = "dashboard listen port (default: 8080)" ,
1336+ )
13031337 create_parser .add_argument (
13041338 "--output" ,
13051339 type = Path ,
@@ -1431,6 +1465,23 @@ def build_parser() -> argparse.ArgumentParser:
14311465 default = 100000 ,
14321466 help = "number of blocks to retain when pruning is enabled" ,
14331467 )
1468+ join_parser .add_argument (
1469+ "--enable-dashboard" ,
1470+ action = "store_true" ,
1471+ help = "enable the node dashboard and chain explorer web UI" ,
1472+ )
1473+ join_parser .add_argument (
1474+ "--dashboard-host" ,
1475+ type = str ,
1476+ default = "127.0.0.1" ,
1477+ help = "dashboard listen address (default: 127.0.0.1)" ,
1478+ )
1479+ join_parser .add_argument (
1480+ "--dashboard-port" ,
1481+ type = int ,
1482+ default = 8080 ,
1483+ help = "dashboard listen port (default: 8080)" ,
1484+ )
14341485 join_parser .add_argument (
14351486 "--output" ,
14361487 type = Path ,
0 commit comments