sword-ai

Crates.iosword-ai
lib.rssword-ai
version0.1.1
created_at2025-11-28 16:59:26.654058+00
updated_at2025-11-28 17:11:27.857054+00
descriptionEcosystem of libraries and tools designed to bring both performance and productivity to backend development, AI systems, data engineering, and distributed systems in Rust
homepagehttps://github.com/mattramostech/sword-ai
repositoryhttps://github.com/mattramostech/sword-ai
max_upload_size
id1955734
size99,621
Matt Ramos (mattramostech)

documentation

https://docs.rs/sword-ai

README

SwordAI (sword-ai)

The core library of the SwordAI ecosystem.

Part of SwordAI — an ecosystem of libraries and tools designed to bring both performance and productivity to backend development, AI systems, data engineering, and distributed systems in Rust.

This library provides batteries-included utilities built on Axum and SeaORM, letting you focus on business logic instead of boilerplate.

Features

  • Server Setup: Pre-configured Axum server with tracing
  • Database: SeaORM integration with PostgreSQL and connection pooling
  • Migrations: Automatic database migration support via SeaORM
  • Configuration: Environment-based configuration with sensible defaults
  • Tracing: Built-in structured logging with tracing

Roadmap

  • 🤖 AI/ML integration primitives
  • 📨 Event-driven architecture (message queues, pub/sub)
  • ⚙️ Background jobs and workers
  • 🔌 gRPC support
  • ☁️ Cloud storage integrations (S3, GCP Storage, Azure Blob)
  • 📊 Observability and metrics
  • 🔐 Authentication and authorization primitives
  • 🔄 Distributed systems patterns

Installation

Add to your Cargo.toml:

[dependencies]
sword-ai = "0.1"

Quick Start

use sword_ai::{server::run_with_migrator, FrameworkContext};
use axum::{Router, routing::get};

// Your migrator (from sea-orm-migration)
struct Migrator;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    sword_ai::tracing::init_tracing();

    run_with_migrator::<Migrator, _>(build_router, true).await
}

fn build_router(ctx: &FrameworkContext) -> Router {
    Router::new()
        .route("/health", get(|| async { "OK" }))
        .with_state(ctx.clone())
}

Configuration

The framework reads configuration from environment variables:

Variable Description Default
DATABASE_URL PostgreSQL connection string Required
APP_HOST Server bind host 0.0.0.0
APP_PORT Server bind port 3000
RUST_LOG Log level filter info,sqlx=warn,sea_orm=info
DB_MAX_CONNECTIONS Maximum database connections 100
DB_MIN_CONNECTIONS Minimum database connections 5
DB_CONNECT_TIMEOUT Connection timeout (seconds) 8
DB_IDLE_TIMEOUT Idle connection timeout (seconds) 600
DB_MAX_LIFETIME Max connection lifetime (seconds) 1800

Modules

  • config - Application configuration from environment variables
  • db - Database connection with SeaORM
  • server - Axum server setup and execution
  • tracing - Structured logging initialization

CLI Tool

For quickly scaffolding new projects, download the Sword CLI from GitHub Releases:

sword new my-api

See the main repository for installation instructions.

License

MIT

Commit count: 0

cargo fmt