libnoa 0.1.0

AI-native distributed version control system with per-agent workspace isolation, JSONL append-only logs, snapshot-based history, and full git protocol compatibility
Documentation
use std::sync::Arc;

use libnoa::server::{router, AppState};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let db_path = std::env::var("NOA_DB_PATH").unwrap_or_else(|_| "noa-server.redb".to_string());
    let port: u16 = std::env::var("NOA_PORT")
        .ok()
        .and_then(|s| s.parse().ok())
        .unwrap_or(3000);
    let db = Arc::new(redb::Database::builder().create(&db_path)?);

    let state = AppState::new(db);
    let app = router(state);

    let addr = std::net::SocketAddr::from(([0, 0, 0, 0], port));
    println!("noa-server listening on {}", addr);

    let listener = tokio::net::TcpListener::bind(addr).await?;
    axum::serve(listener, app).await?;

    Ok(())
}