Skip to main content

frame_host/
cli.rs

1//! Command line for the full frame server.
2//!
3//! One binary, one config, one start command. The binary bakes in no bind
4//! address, no port, no asset directory, and no bus endpoint: every
5//! deployment-shaped value lives in the single `frame.toml` named here.
6
7use std::path::PathBuf;
8
9use clap::Parser;
10
11/// Parsed command line for the frame server.
12///
13/// The entire stack — the embedded liminal component and the console HTTP
14/// server — boots from one `frame.toml`. There are no side-by-side processes
15/// and no per-value flags: the config file is the sole deployment surface.
16#[derive(Debug, Parser)]
17#[command(
18    name = "frame-host",
19    version,
20    about = "Boot the full frame server: embedded bus component + console shell, from one config"
21)]
22pub struct Cli {
23    /// Path to the `frame.toml` describing the whole stack.
24    ///
25    /// It carries a `[frame]` section (console `bind`, `assets`, `auth_token`,
26    /// optional `channel`) and a `[bus]` section (the embedded bus
27    /// server's own config: `listen_address`, `health_listen_address`,
28    /// `drain_timeout_ms`, `channels`, `[bus.websocket]`, …). The pre-rename
29    /// section name `[liminal]` still parses as a deprecated alias for one
30    /// compatibility window, with a loud startup warning.
31    #[arg(long)]
32    pub config: PathBuf,
33}