Skip to content

main

Main entry point for MADA.

Provides the main launcher that dispatches to different interface modes.

main(ctx, mode)

Run MADA.

MODE is one of 'gradio', 'cli', 'openai-api', or 'a2a' and will determine the interface.

Examples:

mada gradio -p 7860 -s config.json

mada cli config.json

mada openai-api --port 8000 config.json

mada a2a --port 8000 config.json

Source code in src/mada/main.py
@click.command(
    context_settings={
        "help_option_names": ["-h", "--help"],
        "ignore_unknown_options": True,
        "allow_extra_args": True,
    }
)
@click.version_option(__version__, "-v", "--version")
@click.argument(
    "mode",
    type=click.Choice(["gradio", "cli", "openai-api", "a2a"], case_sensitive=False),
)
@click.pass_context
def main(ctx: click.Context, mode: str) -> None:
    """
    Run MADA.

    MODE is one of 'gradio', 'cli', 'openai-api', or 'a2a' and will determine the interface.

    Examples:

      mada gradio -p 7860 -s config.json

      mada cli config.json

      mada openai-api --port 8000 config.json

      mada a2a --port 8000 config.json
    """
    mode = mode.lower()

    # Remaining args after MODE
    remaining = list(ctx.args)

    if mode == "gradio":
        _run_gradio_from_args(remaining)
    elif mode == "cli":
        _run_cli_from_args(remaining)
    elif mode == "openai-api":
        _run_openai_api_from_args(remaining)
    elif mode == "a2a":
        _run_a2a_from_args(remaining)
    else:
        # Protected by click.Choice, here just in case
        raise click.ClickException(f"Unsupported mode: {mode}")