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.
  • โœ… Validation from types โ€” derive request validation from the type (Pydantic-style), wired into the extractor and RPC boundary. (Shipped with typed extractors โ€” see the Valid<T> extractor.)
  • ๐Ÿช„ #[derive(UltimoType)] โ€” a thin wrapper so client types derive without adding ts-rs to your own Cargo.toml.

Real-time & 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. โœ… Shipped in 0.9.3
  • ๐Ÿ”„ 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 โœ… shipped, 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).

  • ๐Ÿ“ˆ 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)

  • ๐ŸŒ 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

For โœ… Available rows, the right column is the real crate version it shipped in. For ๐Ÿ“‹ Planned rows, it's the roadmap phase it's targeted for โ€” not a crate version, since planned work doesn't have a version number yet.

FeatureStatusShipped in / Planned for
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
Frontend Client Adapters (TanStack Query hooks)โœ… Available0.6.1
Rust Client Generation (--target rust)๐Ÿ“‹ PlannedCodegen Story + Ship-Readiness
Interactive API Docs (serve_docs)โœ… Available0.5.1
Deployment Guidesโœ… Available0.5.1
Advanced Rate Limitingโœ… Available0.5.1
Typed Handler Extractors + Validationโœ… Available0.7.0
Server-Sent Events (transport)โœ… Available0.9.1
Typed RPC Subscriptions (derived TS types)๐Ÿ“‹ Plannedpost-1.0
OAuth2๐Ÿ“‹ PlannedReal-Time, Auth & Production Gaps
Auth Providers (OIDC/JWKS)โœ… Available0.7.0
Observability (OpenTelemetry + Prometheus)๐Ÿ“‹ PlannedReal-Time, Auth & Production Gaps
Streaming Responsesโœ… Available0.9.0
Request Timeouts + HTTP Graceful Shutdownโœ… Available0.9.3
Redis (sessions ยท cache ยท rate-limit)๐Ÿ“‹ PlannedDistribution & Dev Experience
WebSocket Compression๐Ÿ“‹ PlannedDistribution & Dev Experience
Hot Reload (ultimo dev)โœ… Available0.5.1
#[derive(UltimoType)]๐Ÿ“‹ PlannedDistribution & Dev Experience
Built-in Middleware Pack (request-id, cache-control, โ€ฆ)๐Ÿ“‹ PlannedDistribution & Dev Experience
End-to-end Typed Errors๐Ÿ“‹ PlannedStabilization
S3-compatible Storage๐Ÿ’ก Demand-drivenpost-1.0
Background Tasks๐Ÿ’ก Demand-drivenpost-1.0
MCP Server (ultimo mcp)โœ… Available0.9.1
Python Client Generation๐Ÿ’ก Demand-drivenpost-1.0

Roadmap Phases

These are thematic groupings of related work, in roughly the order we're tackling them โ€” not release version numbers. The published crate's version (currently 0.9.2) bumps automatically per PR (any breaking change โ†’ minor, any additive/fix โ†’ patch) and moves independently of which phase a feature belongs to, so a phase name never goes stale the way a "v0.7.0" label would once the crate passes 0.7 numerically without that phase being done.

Phase 1: Foundations

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

Phase 2: WebSocket Support

  • โœ… 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

Phase 3: Sessions, Cookies & Testing

  • โœ… 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

Phase 4: 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

Phase 5: Static Files & Compression

  • โœ… 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)

Phase 6: 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.

Phase 7: Hot Reload & IP Filtering

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

Phase 8: 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

Phase 9: Real-Time, Auth & Production Gaps

  • โœ… Typed handler extractors + validation-from-types (type-safe input; Path/Query/Json/Valid, 400/422)
  • Typed RPC subscriptions / SSE (derived event types)
  • OAuth2 provider integration
  • โœ… Auth providers (OIDC/JWKS) โ€” RS256/ES256 + remote JWKS (fetch/cache/ rotation), OIDC discovery, cookbook for Clerk / Cognito / Auth0 / Supabase (oidc feature)
  • Observability โ€” OpenTelemetry traces + metrics, Prometheus endpoint (in progress: request_id() middleware + request-scoped tracing span shipped; Prometheus metrics next)
  • โœ… Streaming responses
  • โœ… Request timeouts + HTTP graceful shutdown โ€” request_timeout, listen_with_shutdown, shutdown_signal; WebSocket clients get a 1001 close frame

Phase 10: 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 remaining)

Phase 11: Stabilization (toward 1.0)

  • 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