omniference 0.1.8

A multi-protocol inference engine with provider adapters
Documentation
use omniference::{
	server::OmniferenceServer,
	types::{ProviderConfig, ProviderKind},
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
	// Initialize logging
	tracing_subscriber::fmt().with_env_filter(tracing_subscriber::EnvFilter::from_default_env()).init();

	// Create and configure server
	let mut server = OmniferenceServer::new();

	// Add Ollama provider
	server
		.add_provider(ProviderConfig {
			name: "ollama".to_string(),
			endpoint: omniference::types::ProviderEndpoint {
				kind: ProviderKind::OpenAICompat,
				base_url: "http://localhost:11434".to_string(),
				api_key: None,
				extra_headers: std::collections::BTreeMap::new(),
				timeout: Some(30000),
			},
			enabled: true,
			catalog_provider_slug: None,
		})
		.await
		.map_err(|e| anyhow::anyhow!(e))?;

	// Alternative usage with builder pattern:
	/*
	let mut server = OmniferenceServerBuilder::new()
		.with_adapter(Arc::new(OllamaAdapter))
		.build();

	server.add_provider(provider_config).await?;
	*/

	// Run the server
	let addr = "0.0.0.0:8080";
	tracing::info!("Starting Omniference server on {}", addr);
	server.run(addr).await?;

	Ok(())
}