use std::sync::Arc;
use llmrust::proxy;
use llmrust::LmrsClient;
#[tokio::main]
async fn main() {
let llm = Arc::new(LmrsClient::from_env().await);
let providers = llm.providers().await;
if providers.is_empty() {
eprintln!("No providers configured. Set at least one environment variable.");
eprintln!(" Supported: OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY,");
eprintln!(" GOOGLE_API_KEY, MOONSHOT_API_KEY, OPENROUTER_API_KEY");
eprintln!(" Or LLMRUST_*_KEY fallbacks.");
std::process::exit(1);
}
println!("\nllmrust proxy server starting on http://0.0.0.0:3000");
println!(" Registered providers: {}", providers.join(", "));
if providers.len() == 1 && providers.iter().any(|p| p == "ollama") {
println!(" Only Ollama is registered; make sure the local Ollama server is running.");
}
println!(" Try: curl http://localhost:3000/v1/chat/completions ...");
println!(" Health: curl http://localhost:3000/health");
println!(" Press Ctrl+C to stop.\n");
if let Err(e) = proxy::serve(llm, "0.0.0.0:3000").await {
eprintln!("Server error: {e}");
std::process::exit(1);
}
}