62 lines
1.8 KiB
Rust
62 lines
1.8 KiB
Rust
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use clap::Parser;
|
|
|
|
use dynamo_kv_router::standalone_indexer::{self, IndexerConfig};
|
|
|
|
#[derive(Parser)]
|
|
#[command(name = "dynamo-kv-indexer", about = "Standalone KV cache indexer")]
|
|
struct Cli {
|
|
/// KV cache block size for initial workers registered via --workers
|
|
#[arg(long)]
|
|
block_size: Option<u32>,
|
|
|
|
/// HTTP server port
|
|
#[arg(long, default_value_t = 8090)]
|
|
port: u16,
|
|
|
|
/// Number of indexer threads (1 = single-threaded KvIndexer, >1 = ThreadPoolIndexer)
|
|
#[arg(long, default_value_t = 4)]
|
|
threads: usize,
|
|
|
|
/// Initial workers as "worker_id[:dp_rank]=zmq_address,..." (e.g. "1=tcp://host:5557,1:1=tcp://host:5558")
|
|
#[arg(long)]
|
|
workers: Option<String>,
|
|
|
|
/// Model name for initial workers registered via --workers
|
|
#[arg(long, default_value = "default")]
|
|
model_name: String,
|
|
|
|
/// Tenant ID for initial workers registered via --workers
|
|
#[arg(long, default_value = "default")]
|
|
tenant_id: String,
|
|
|
|
/// Comma-separated peer URLs for P2P recovery (e.g. "http://host1:8090,http://host2:8091")
|
|
#[arg(long)]
|
|
peers: Option<String>,
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() -> anyhow::Result<()> {
|
|
tracing_subscriber::fmt()
|
|
.with_env_filter(
|
|
tracing_subscriber::EnvFilter::try_from_default_env()
|
|
.unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")),
|
|
)
|
|
.init();
|
|
|
|
let cli = Cli::parse();
|
|
|
|
standalone_indexer::run_server(IndexerConfig {
|
|
block_size: cli.block_size,
|
|
port: cli.port,
|
|
threads: cli.threads,
|
|
workers: cli.workers,
|
|
model_name: cli.model_name,
|
|
tenant_id: cli.tenant_id,
|
|
peers: cli.peers,
|
|
})
|
|
.await
|
|
}
|