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โ Shipped in 0.5.1generate-clientintoultimo newtemplates; TypeScript docs/workflow rewrite;ultimo generate --watch.- ๐ฆ Rust client generation โ
ultimo generate --target rustproduces a typed Rust crate (withreqwest) 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 addingts-rsto your ownCargo.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 โโ Shipped in 0.5.1ultimo devwith file-watching auto-restart.
Developer experience
๐ Turnkey interactive API docs โ one call (โ Shipped in 0.5.1app.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.- ๐งฉ 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/audvalidation), with presets/guides for Clerk, Cognito, Auth0, Supabase, WorkOS, Keycloak. Extends thejwtfeature. - ๐ Observability โ OpenTelemetry traces + metrics, and a Prometheus
endpoint (built on the
tracingalready 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
| Feature | Status | Version |
|---|---|---|
| Core Routing | โ Available | 0.1.0 |
| Middleware | โ Available | 0.1.0 |
| RPC System | โ Available | 0.1.0 |
| TypeScript Generation | โ Available | 0.1.0 |
| OpenAPI Support | โ Available | 0.1.0 |
| CLI Tools | โ Available | 0.1.0 |
| CORS | โ Available | 0.1.0 |
| Database Integration | โ Available | 0.1.0 |
| WebSocket Support | โ Available | 0.2.1 |
| Sessions & Cookies | โ Available | 0.3.0 |
| Testing Utilities | โ Available | 0.3.0 |
100% Safe Rust (forbid(unsafe)) | โ Available | 0.3.0 |
| Security Headers (HSTS/CSP/โฆ) | โ Available | 0.4.0 |
| CSRF Protection | โ Available | 0.4.0 |
| Request Body-Size Limit | โ Available | 0.4.0 |
| Real Client IP (proxy-aware) | โ Available | 0.4.0 |
| Auth: JWT middleware | โ Available | 0.4.0 |
| Auth: API keys | โ Available | 0.4.0 |
| Auth: authorization guards | โ Available | 0.4.0 |
| Benchmark Suite (criterion) | โ Available | 0.4.0 |
| Perf CI Regression Guard | โ Available | 0.4.0 |
| Static Files + SPA Fallback | โ Available | 0.4.1 |
| Compression (gzip/brotli) | โ Available | 0.4.1 |
TypeScript Type Derivation (client-gen) | โ Available | 0.5.0 |
ultimo generate (runs generate-client) | โ Available | 0.5.0 |
| IP Allow/Deny (CIDR) | โ Available | 0.5.1 |
Codegen: ultimo new scaffold + --watch | โ Available | 0.5.1 |
Rust Client Generation (--target rust) | ๐ Planned | 0.6.0 |
Interactive API Docs (serve_docs) | โ Available | 0.5.1 |
| Deployment Guides | โ Available | 0.5.1 |
| Advanced Rate Limiting | โ Available | 0.5.1 |
| Typed Handler Extractors + Validation | ๐ Planned | 0.7.0 |
| Typed RPC Subscriptions / SSE | ๐ Planned | 0.7.0 |
| OAuth2 | ๐ Planned | 0.7.0 |
| Auth Providers (OIDC/JWKS + presets) | ๐ Planned | 0.7.0 |
| Observability (OpenTelemetry + Prometheus) | ๐ Planned | 0.7.0 |
| Streaming Responses | ๐ Planned | 0.7.0 |
| Request Timeouts + HTTP Graceful Shutdown | ๐ Planned | 0.7.0 |
| Redis (sessions ยท cache ยท rate-limit) | ๐ Planned | 0.8.0 |
| WebSocket Compression | ๐ Planned | 0.8.0 |
Hot Reload (ultimo dev) | โ Available | 0.5.1 |
#[derive(UltimoType)] | ๐ Planned | 0.8.0 |
| Built-in Middleware Pack (request-id, cache-control, โฆ) | ๐ Planned | 0.8.0 |
| End-to-end Typed Errors | ๐ Planned | 0.9.0 |
| S3-compatible Storage | ๐ก Demand-driven | post-1.0 |
| Background Tasks | ๐ก Demand-driven | post-1.0 |
| MCP Server | ๐ก Demand-driven | post-1.0 |
| Python Client Generation | ๐ก Demand-driven | post-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-Cookiewith 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)
- โ
#,SECURITY.mddisclosure policy,cargo-deny+cargo-auditin CI
Performance (proven ยท regression-guarded)
- โ Framework-overhead benchmark suite (criterion) + methodology (BENCHMARKS.md) + advisory CI regression check
- โ
/performancepage with reproducible methodology + self-serve recipe
v0.4.1
- โ
Static file serving + SPA fallback โ
serve_static,serve_spa, ETag caching, path-traversal protection (static-filesfeature) - โ
Response compression โ automatic brotli/gzip middleware, pure Rust, builder API (
compressionfeature)
v0.5.0 โ Type-safe clients, for real
- โ
TypeScript type derivation (
client-genfeature) โ RPC client types are derived from your Rust types viats-rs; the generated client emits realtype X = {...}declarations instead of hand-written strings.ts_rs::TSre-exported asultimo::rpc::TS. - โ
Derived
query/mutation(breaking) โ infer input/output types from#[derive(TS)]structs; string-typedquery_with_types/mutation_with_typesremain as escape hatches. - โ
ultimo generateruns for real โ executes the project'sgenerate-clientbinary (no more artifact-hunting);assert_cmdCLI tests.
v0.5.1
- โ
Hot reload โ
ultimo devwith 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โ Shippedgenerate-clientintoultimo newtemplates; TypeScript docs rewrite;ultimo generate --watch- Rust client generation โ
ultimo generate --target rustfor typed service-to-service RPC (microservice contracts via private crate registry) Turnkey interactive API docs โโ Shippedserve_docs(Swagger UI / Scalar / ReDoc)Deployment guides (Docker, Fly.io/Railway, AWS, DigitalOcean, Azure, GCR, K8s)โ ShippedAdvanced 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 thets-rsdependency 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.