omk 0.5.0

A Rust runtime for Kimi CLI. Turns prompts into proof-backed engineering runs with gates, worktrees, and replay.
Documentation
use anyhow::Result;
use axum::{routing::get, Router};
use std::net::SocketAddr;
use tracing::info;

pub async fn run_server(port: u16) -> Result<()> {
    let app = Router::new()
        .route("/", get(super::html::dashboard_handler))
        .route("/api/teams", get(super::handlers::teams_handler))
        .route("/api/autopilots", get(super::handlers::autopilots_handler))
        .route("/api/ralphs", get(super::handlers::ralphs_handler))
        .route("/api/metrics", get(super::handlers::metrics_handler))
        .route("/metrics", get(super::handlers::prometheus_metrics_handler))
        .route("/api/health", get(super::handlers::health_handler));

    let addr = SocketAddr::from(([127, 0, 0, 1], port));
    info!("Starting web dashboard on http://{}", addr);
    println!("🌐 omk vis running on http://{}", addr);
    println!("Press Ctrl+C to stop");

    let listener = tokio::net::TcpListener::bind(addr).await?;
    axum::serve(listener, app)
        .with_graceful_shutdown(super::signal::shutdown_signal())
        .await?;
    info!("Web dashboard shut down gracefully");
    Ok(())
}