BerriAI/litellm · error
failed to bind listener
Error message
failed to bind listener
What it means
Error "failed to bind listener" thrown in BerriAI/litellm.
Source
Thrown at litellm-rust/crates/ai-gateway/src/main.rs:82
} else {
eprintln!(
"realtime connection pool disabled (REALTIME_POOL_SIZE=0); fresh-dialing each connect"
);
}
let state = AppState {
router,
master_key,
loggers: Arc::new(loggers),
realtime_pool,
};
let host = std::env::var("HOST").unwrap_or_else(|_| DEFAULT_HOST.to_string());
let port = resolve_port();
let listener = tokio::net::TcpListener::bind((host.as_str(), port))
.await
.expect("failed to bind listener");
eprintln!("litellm-ai-gateway listening on {host}:{port}");
axum::serve(listener, routes::app(state))
.await
.expect("server error");
}
/// Register every deployment's upstream key with the pool so the replenisher
/// pre-warms it. Mirrors `service::run`'s key derivation (strip `openai/`, resolve
/// api_key); deployments whose key can't be resolved are skipped (they fresh-dial
/// and surface the auth error on the request path, as before).
fn register_deployments(router: &Router, pool: &RealtimePool) {
for deployment in router.deployments() {
let params = &deployment.litellm_params;
let provider_model = params
.model
.strip_prefix("openai/")
.unwrap_or(¶ms.model);
if let Some(key) = upstream_key(View on GitHub (pinned to 77b7c6c40c)
Solutions
- Verify the bind address/port is free (not already in use) and the process has permission to bind it.
- Change the listen address/port in configuration if it conflicts.
When it happens
Trigger: Thrown at litellm-rust/crates/ai-gateway/src/main.rs:82 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/4c50c980a7a57ee7.
Report an issue: GitHub.