Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Roadmap

Where Ultimo is headed. The throughline is type-safe end to end โ€” define your API in Rust, get a fully-typed TypeScript client with no drift โ€” sequenced toward a stable 1.0.

Coming Soon ๐Ÿšง

Type-safe everything (the differentiator)

  • ๐Ÿงฉ Finish the codegen story โ€” scaffold generate-client into ultimo new templates; TypeScript docs/workflow rewrite; ultimo generate --watch. โœ… Shipped in 0.5.1
  • ๐Ÿฆ€ Rust client generation โ€” ultimo generate --target rust produces a typed Rust crate (with reqwest) from your RPC definitions, enabling compile-time-safe service-to-service communication. Publish to a private registry (CodeArtifact, Artifactory, Cloudsmith) for internal microservice contracts โ€” if Service A changes an RPC signature, Service B won't compile until updated.
  • ๐Ÿ“ก Typed RPC subscriptions / SSE โ€” server-push with event types derived from your Rust types (tRPC-style subscriptions, in Rust).
  • โ— End-to-end typed errors โ€” RPC errors surfaced as typed results in the generated client.
  • ๐ŸŽฏ Typed handler extractors โ€” declare typed path / query / body / header params on a handler; they're parsed and validated automatically, with a structured 422 on bad input. Ultimo already gives type-safe output (the TS client); this gives type-safe input โ€” the handler signature becomes the contract. Inspired by FastAPI / axum.
  • โœ… Validation from types โ€” derive request validation from the type (Pydantic-style), wired into the extractor and RPC boundary.
  • ๐Ÿช„ #[derive(UltimoType)] โ€” a thin wrapper so client types derive without adding ts-rs to your own Cargo.toml.

Real-time & streaming

  • ๐ŸŒŠ Streaming responses โ€” large-body / chunked streaming.
  • ๐Ÿ—œ๏ธ WebSocket compression โ€” per-message deflate (RFC 7692).

Auth & sessions

  • ๐Ÿ” OAuth2 โ€” provider integration on top of the existing JWT/API-key auth.
  • ๐ŸŽซ Redis sessions โ€” distributed session storage.

Production-readiness

  • ๐Ÿ“ฆ Deployment guides โ€” Docker, Fly.io/Railway, AWS, DigitalOcean, Azure, Google Cloud Run, Kubernetes โ€” each with ready-to-use config. โœ… Shipped in 0.5.1
  • ๐Ÿ›ก๏ธ Advanced rate limiting โ€” per-user, per-endpoint limits. โœ… Shipped in 0.5.1
  • โฑ๏ธ Request timeouts + HTTP graceful shutdown (WebSocket graceful shutdown already ships).
  • ๐Ÿ”„ Hot reload โ€” ultimo dev with file-watching auto-restart. โœ… Shipped in 0.5.1

Developer experience

  • ๐Ÿ“– Turnkey interactive API docs โ€” one call (app.serve_docs("/docs")) to serve Swagger UI / Scalar / ReDoc wired to the generated OpenAPI spec (FastAPI's signature /docs). The Swagger UI helper exists today; this makes it one line. โœ… Shipped in 0.5.1
  • ๐Ÿงฉ Built-in middleware pack โ€” small, expected pieces: request-id, cache-control / ETag helpers, server-timing, basic-auth, trailing-slash normalization (Hono-style breadth).

Integrations

One principle throughout: a generic capability in core, plus thin presets / adapters and cookbook guides โ€” never bundled vendor SDKs (which bloat dependencies and rot as each vendor's API changes).

  • ๐Ÿ”‘ Auth providers (OIDC/JWKS) โ€” verify RS256/ES256 JWTs against a provider's JWKS endpoint (caching + key rotation, iss/aud validation), with presets/guides for Clerk, Cognito, Auth0, Supabase, WorkOS, Keycloak. Extends the jwt feature.
  • ๐Ÿ“ˆ Observability โ€” OpenTelemetry traces + metrics, and a Prometheus endpoint (built on the tracing already used internally).
  • ๐Ÿงฐ Redis โ€” one integration backing sessions, the rate-limit store, and response/data caching.
  • ๐Ÿ—„๏ธ S3-compatible object storage โ€” pairs with the existing multipart upload support (demand-driven).
  • โš™๏ธ Background tasks โ€” in-process Tokio job spawning (demand-driven).

Cookbook guides only (app-layer, not framework code): email (SMTP/Resend/Postmark), payments (Stripe webhooks), and vendor message queues.

Toward 1.0

  • ๐Ÿงฑ API stabilization โ€” public-API audit, documentation completeness, SemVer freeze.

Maybe / demand-driven (post-1.0)

  • ๐Ÿค– MCP server โ€” Model Context Protocol server for AI-assisted development.
  • ๐ŸŒ Python client generation โ€” extend the codegen engine beyond TypeScript.

Removed from the roadmap: HTTP/2 Push (deprecated in browsers), Long Polling (covered by SSE + WebSockets), the AI dev-UI cluster (Development Dashboard / Schema Introspection / Smart Suggestions), Go/Dart/Swift client generation (focus stays TypeScript-first), and a standalone Mock Server (testing utilities already ship).

Considered and declined: edge / multi-runtime deployment (Hono's Workers/WASM model) โ€” an architectural mismatch with Ultimo's native Hyper + Tokio core; and server-side rendering / JSX templating โ€” counter to the "Rust API + typed TypeScript frontend" model (a cookbook at most).

Feature Status

FeatureStatusVersion
Core Routingโœ… Available0.1.0
Middlewareโœ… Available0.1.0
RPC Systemโœ… Available0.1.0
TypeScript Generationโœ… Available0.1.0
OpenAPI Supportโœ… Available0.1.0
CLI Toolsโœ… Available0.1.0
CORSโœ… Available0.1.0
Database Integrationโœ… Available0.1.0
WebSocket Supportโœ… Available0.2.1
Sessions & Cookiesโœ… Available0.3.0
Testing Utilitiesโœ… Available0.3.0
100% Safe Rust (forbid(unsafe))โœ… Available0.3.0
Security Headers (HSTS/CSP/โ€ฆ)โœ… Available0.4.0
CSRF Protectionโœ… Available0.4.0
Request Body-Size Limitโœ… Available0.4.0
Real Client IP (proxy-aware)โœ… Available0.4.0
Auth: JWT middlewareโœ… Available0.4.0
Auth: API keysโœ… Available0.4.0
Auth: authorization guardsโœ… Available0.4.0
Benchmark Suite (criterion)โœ… Available0.4.0
Perf CI Regression Guardโœ… Available0.4.0
Static Files + SPA Fallbackโœ… Available0.4.1
Compression (gzip/brotli)โœ… Available0.4.1
TypeScript Type Derivation (client-gen)โœ… Available0.5.0
ultimo generate (runs generate-client)โœ… Available0.5.0
IP Allow/Deny (CIDR)โœ… Available0.5.1
Codegen: ultimo new scaffold + --watchโœ… Available0.5.1
Rust Client Generation (--target rust)๐Ÿ“‹ Planned0.6.0
Interactive API Docs (serve_docs)โœ… Available0.5.1
Deployment Guidesโœ… Available0.5.1
Advanced Rate Limitingโœ… Available0.5.1
Typed Handler Extractors + Validation๐Ÿ“‹ Planned0.7.0
Typed RPC Subscriptions / SSE๐Ÿ“‹ Planned0.7.0
OAuth2๐Ÿ“‹ Planned0.7.0
Auth Providers (OIDC/JWKS + presets)๐Ÿ“‹ Planned0.7.0
Observability (OpenTelemetry + Prometheus)๐Ÿ“‹ Planned0.7.0
Streaming Responses๐Ÿ“‹ Planned0.7.0
Request Timeouts + HTTP Graceful Shutdown๐Ÿ“‹ Planned0.7.0
Redis (sessions ยท cache ยท rate-limit)๐Ÿ“‹ Planned0.8.0
WebSocket Compression๐Ÿ“‹ Planned0.8.0
Hot Reload (ultimo dev)โœ… Available0.5.1
#[derive(UltimoType)]๐Ÿ“‹ Planned0.8.0
Built-in Middleware Pack (request-id, cache-control, โ€ฆ)๐Ÿ“‹ Planned0.8.0
End-to-end Typed Errors๐Ÿ“‹ Planned0.9.0
S3-compatible Storage๐Ÿ’ก Demand-drivenpost-1.0
Background Tasks๐Ÿ’ก Demand-drivenpost-1.0
MCP Server๐Ÿ’ก Demand-drivenpost-1.0
Python Client Generation๐Ÿ’ก Demand-drivenpost-1.0

Version Timeline

v0.1.0

  • Core framework features
  • RPC system with TypeScript generation
  • OpenAPI support
  • CLI tools
  • Database integration (SQLx & Diesel)

v0.2.1

  • โœ… WebSocket Support (Complete) - Production-ready RFC 6455 implementation
  • โœ… Configuration System - WebSocketConfig with size limits, timeouts, and buffer sizes
  • โœ… Message Fragmentation - Automatic chunking and reassembly for large payloads
  • โœ… Automatic Ping/Pong - Heartbeat with configurable intervals and timeout detection
  • โœ… Graceful Shutdown - Server-wide notifications with broadcast_all()
  • โœ… Backpressure Handling - Bounded channels, on_drain callback, capacity tracking
  • โœ… Built-in Pub/Sub System - Topic-based messaging with backpressure support
  • โœ… Type-safe WebSocketHandler - Typed context data and lifecycle callbacks
  • โœ… Router Optimization - Radix Tree for O(L) lookups
  • โœ… 279 Comprehensive Tests - Production-ready with extensive test coverage
  • โœ… Two Working Examples - Simple chat + React chat

v0.3.0

  • โœ… Session management โ€” cookie-based sessions, SessionStore + in-memory store, secure middleware
  • โœ… Cookie helper โ€” parsing + Set-Cookie with security guards
  • โœ… Testing utilities โ€” in-process TestClient, assertions, middleware/DB/fixture helpers
  • โœ… Router precedence fix, Ultimo::oneshot, Request::raw_body()
  • โœ… MSRV 1.86, hardened dependency floors, automated releases + CI guardrails

v0.4.0 โ€” Security & Performance

Ultimo's two headline pillars: secure-by-default and proven performance.

Security (secure-by-default ยท defense-in-depth ยท provable)

  • โœ… Security headers middleware (HSTS, CSP, X-Frame-Options, โ€ฆ)
  • โœ… CSRF protection (integrates with sessions)
  • โœ… Auth: JWT + API-key middleware + authorization guards (scopes)
  • โœ… Request body-size limits + real client IP (trusted-proxy aware)
  • โœ… #![forbid(unsafe_code)] (100% safe Rust), SECURITY.md disclosure policy, cargo-deny + cargo-audit in CI

Performance (proven ยท regression-guarded)

  • โœ… Framework-overhead benchmark suite (criterion) + methodology (BENCHMARKS.md) + advisory CI regression check
  • โœ… /performance page with reproducible methodology + self-serve recipe

v0.4.1

  • โœ… Static file serving + SPA fallback โ€” serve_static, serve_spa, ETag caching, path-traversal protection (static-files feature)
  • โœ… Response compression โ€” automatic brotli/gzip middleware, pure Rust, builder API (compression feature)

v0.5.0 โ€” Type-safe clients, for real

  • โœ… TypeScript type derivation (client-gen feature) โ€” RPC client types are derived from your Rust types via ts-rs; the generated client emits real type X = {...} declarations instead of hand-written strings. ts_rs::TS re-exported as ultimo::rpc::TS.
  • โœ… Derived query/mutation (breaking) โ€” infer input/output types from #[derive(TS)] structs; string-typed query_with_types/mutation_with_types remain as escape hatches.
  • โœ… ultimo generate runs for real โ€” executes the project's generate-client binary (no more artifact-hunting); assert_cmd CLI tests.

v0.5.1

  • โœ… Hot reload โ€” ultimo dev with file-watching auto-restart
  • โœ… IP allow/deny middleware โ€” CIDR-aware IpFilter (allow-list / deny-list)

v0.6.0 (Current) โ€” Finish the codegen story + ship-readiness

  • Codegen: scaffold generate-client into ultimo new templates; TypeScript docs rewrite; ultimo generate --watch โœ… Shipped
  • Rust client generation โ€” ultimo generate --target rust for typed service-to-service RPC (microservice contracts via private crate registry)
  • Turnkey interactive API docs โ€” serve_docs (Swagger UI / Scalar / ReDoc) โœ… Shipped
  • Deployment guides (Docker, Fly.io/Railway, AWS, DigitalOcean, Azure, GCR, K8s) โœ… Shipped
  • Advanced rate limiting (per-user, per-endpoint) โœ… Shipped

v0.7.0 โ€” Real-time, auth, & production gaps

  • Typed handler extractors + validation-from-types (type-safe input)
  • Typed RPC subscriptions / SSE (derived event types)
  • OAuth2 provider integration
  • Auth providers (OIDC/JWKS) โ€” RS256/ES256 + remote JWKS, presets for Clerk / Cognito / Auth0 / Supabase
  • Observability โ€” OpenTelemetry traces + metrics, Prometheus endpoint
  • Streaming responses
  • Request timeouts + HTTP graceful shutdown

v0.8.0 โ€” Distribution & dev experience

  • Redis integration โ€” sessions, cache, and rate-limit store (one dependency)
  • WebSocket compression (per-message deflate)
  • #[derive(UltimoType)] (drop the ts-rs dependency papercut)
  • Built-in middleware pack (request-id, cache-control/ETag, server-timing, basic-auth)

v0.9.0 โ†’ v1.0.0 โ€” Stabilize

  • End-to-end typed errors
  • Public-API audit + SemVer freeze
  • Documentation completeness
  • Production battle-testing
  • (Demand-driven: S3-compatible storage, background tasks, MCP server, Python client generation)

Contributing

Want to help? Check out:

Feature Requests

Have an idea? Open an issue with the "feature request" label.

Stay Updated