Skip to main content

kora_lib/rpc_server/
args.rs

1use crate::log::LoggingFormat;
2use clap::Parser;
3use std::path::PathBuf;
4
5/// RPC server arguments
6#[derive(Parser)]
7pub struct RpcArgs {
8    /// HTTP port to listen on for RPC requests
9    #[arg(short = 'p', long, default_value = "8080")]
10    pub port: u16,
11
12    /// Output format for logs (standard or json)
13    #[arg(long, default_value = "standard")]
14    pub logging_format: LoggingFormat,
15
16    /// Path to multi-signer configuration file (TOML format)
17    /// Required unless using --no-load-signer
18    #[arg(long, required_unless_present = "skip_signer")]
19    pub signers_config: Option<PathBuf>,
20
21    /// Skip signer initialization (useful for testing or operations that don't require signing)
22    #[arg(long = "no-load-signer")]
23    pub skip_signer: bool,
24
25    #[command(flatten)]
26    pub auth_args: AuthArgs,
27}
28
29#[derive(Parser)]
30pub struct AuthArgs {
31    /// API key for authenticating requests to the Kora server (optional) - can be set in `kora.toml`
32    #[arg(long, env = "KORA_API_KEY", help_heading = "Authentication")]
33    pub api_key: Option<String>,
34
35    /// HMAC secret for request signature authentication (optional, provides stronger security than API key) - can be set in `kora.toml`
36    #[arg(long, env = "KORA_HMAC_SECRET", help_heading = "Authentication")]
37    pub hmac_secret: Option<String>,
38}