rustvital-amd / src /main.rs
brainworm2024's picture
Final live AMD GPU integration, audit fix
74f2b46
use axum::{routing::{get, post}, Router};
use tower_http::{cors::CorsLayer, trace::TraceLayer};
use tracing_subscriber::EnvFilter;
use rustvital_amd::{handlers, state::AppState};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
tracing_subscriber::fmt()
.json()
.with_env_filter(EnvFilter::from_default_env())
.with_current_span(true)
.with_span_events(tracing_subscriber::fmt::format::FmtSpan::CLOSE)
.init();
let state = AppState::from_env()?;
let port = std::env::var("PORT").unwrap_or_else(|_| "7860".to_string());
let addr = format!("0.0.0.0:{port}");
tracing::info!("starting RustVital-AMD on {}", addr);
let app = Router::new()
.route("/", get(handlers::index))
.route("/health", get(handlers::health))
.route("/status", get(handlers::status))
.route("/dashboard", get(handlers::dashboard))
.route("/history", get(handlers::history_json))
.route("/triage", post(handlers::triage_json))
.route("/triage/html", post(handlers::triage_html))
.route("/triage/stream", get(handlers::triage_stream))
.route("/agents/status", get(handlers::agents_ws))
.route("/dicom/redact", post(handlers::dicom_redact))
.route("/medical/enrich", get(handlers::enrich_medical))
.route("/trigger-federated-tune", post(handlers::trigger_federated_tune))
.route("/federation/round", get(handlers::federation_round))
.with_state(state)
.layer(CorsLayer::permissive())
.layer(TraceLayer::new_for_http());
let listener = tokio::net::TcpListener::bind(&addr).await?;
axum::serve(listener, app).await?;
Ok(())
}