Oxyde
Pydantic-native async ORM with a Rust core
Details
- External ID
- 47364260
- Source
- HN
- Company
- —
- Product
- Oxyde
- Website domain
- github.com
- Launched
- March 13, 2026
- Cohort
- —
- Upvotes
- 155
- Upvotes percentile
- 0.9477244772447725
- Tags
- —
- Fetched at
- Sept. 7, 2026, 9:26 p.m.
- Updated at
- Sept. 7, 2026, 9:26 p.m.
Description
Hi HN! I built Oxyde because I was tired of duplicating my models.If you use FastAPI, you know the drill. You define Pydantic models for your API, then define separate ORM models for your database, then write converters between them. SQLModel tries to fix this but it's still SQLAlchemy underneath. Tortoise gives you a nice Django-style API but its own model system. Django ORM is great but welded to the framework.I wanted something simple: your Pydantic model IS your database model. One class, full validation on input and output, native type hints, zero duplication. The query API is Django-style (.objects.filter(), .exclude(), Q/F expressions) because I think it's one of the best designs out there.Explicit over implicit. I tried to remove all the magic. Queries don't touch the database until you call a terminal method like .all(), .get(), or .first(). If you don't explicitly call .join() or .prefetch(), related data won't be loaded. No lazy loading, no surprise N+1 queries behind your back. You see exactly what hits the database by reading the code.Type safety was a big motivation. Python's weak spot is runtime surprises, so Oxyde tackles this on three levels: (1) when you run makemigrations, it also generates .pyi stub files with fully typed queries, so your IDE knows that filter(age__gte=...) takes an int, that create() accepts exactly the fields your model has, and that .all() returns list[User] not list[Any]; (2) Pydantic validates data going into the database; (3) Pydantic validates data coming back out via model_validate(). You get autocompletion, red squiggles on typos, and runtime guarantees, all from the same model definition.Why Rust? Not for speed as a goal. I don't do "language X is better" debates. Each one is good at what it was made for. Python is hard to beat for expressing business logic. But infrastructure stuff like SQL generation, connection pooling, and row serialization is where a systems language makes sense. So I split it: Python handles your models and business logic, Rust handles the database plumbing. Queries are built as an IR in Python, serialized via MessagePack, sent to Rust which generates dialect-specific SQL, executes it, and streams results back. Speed is a side effect of this split, not the goal. But since you're not paying a performance tax for the convenience, here are the benchmarks if curious: https://oxyde.fatalyst.dev/latest/advanced/benchmarks/What's there today: Django-style migrations (makemigrations / migrate), transactions with savepoints, joins and prefetch, PostgreSQL + SQLite + MySQL, FastAPI integration, and an auto-generated admin panel that works with FastAPI, Litestar, Sanic, Quart, and Falcon (https://github.com/mr-fatalyst/oxyde-admin).It's v0.5, beta, active development, API might still change. This is my attempt to build the ORM I personally wanted to use. Would love feedback, criticism, ideas.Docs: https://oxyde.fatalyst.dev/Step-by-step FastAPI tutorial (blog API from scratch): https://github.com/mr-fatalyst/fastapi-oxyde-example
Enrichment
- Theme
- database infrastructure and developer tools
- Vertical
- Horizontal
- Function
- Dev tools
- Audience
- Developer
- AI stance
- Not AI
- Project type
- Commercial product
- Normalized one-liner
- async orm with rust backend
- Manually corrected
- False
Could you build this?
No Writing a high-performance database engine or ORM core with Rust bindings (PyO3) and integrating deep async Pydantic metaclass inspection requires advanced systems and compiler-adjacent skills.
What it would actually take: Building this requires a Rust core utilizing SQLx or custom AST query builders exposed via PyO3 to Python, integrated into Pydantic v2's Rust core (pydantic-core). The hard challenges include handling cross-language async event loops (Python asyncio to Tokio), zero-copy deserialization from database wire formats into Python objects, and constructing an expressive SQL AST that supports complex migrations, joins, and transactions.
Discussion
20 comments analyzed.
Competitors mentioned: Django ORM, SQLAlchemy, FastAPI with manual schemas, django-ninja, attrs/dataclasses
Concerns raised: Type checker doesn't recognize some generated types (young project), ActiveRecord-style coupling allows save() calls from anywhere, requiring constant vigilance, Schema evolution: rename fields treated as drop+create, requires manual migration edits, Database models shouldn't be tightly coupled to API response types (password hash exposure), Validation can be skipped in dataclasses if inputs aren't trusted
Feature requests: Automatic rename detection in migrations instead of drop+create, Ability to generate read-only DTO types that prevent save()/delete() calls via type checking, Better support for modular monolith architecture with automatic DTO generation, Protocol-based approach to enforce separation between domain models and persistence layer
Competitors
Other products that read as similar to this one — 91 launches clear the similarity bar, closest 8 shown.
Attention rank: #5 of 92 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).
Launched 130 days after the earliest competitor.
- Django-Modern-Rest · hn · 2026-04-29 · 6 upvotes · similarity 0.47
- Valid8r, Functional validation for Python CLIs using Maybe monads · hn · 2025-11-09 · 6 upvotes · similarity 0.47
- Dhi · hn · 2026-01-26 · 5 upvotes · similarity 0.44
- I built a local data lake for AI powered data engineering and analytics · hn · 2026-04-08 · 14 upvotes · similarity 0.41
- Lythonic · hn · 2026-04-13 · 5 upvotes · similarity 0.41
- Misata · hn · 2025-12-16 · 24 upvotes · similarity 0.40
- Xsql · hn · 2025-12-16 · 11 upvotes · similarity 0.39
- Belgie · hn · 2026-07-06 · 5 upvotes · similarity 0.39
Other launches for this product
- No other launches for this product.
Same idea, different domain
Nobody's really built a dev tools tool for Sales yet.