Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
Compiled API framework. Define your schema in Python, TypeScript, or Go. Serve GraphQL, REST, gRPC, and Arrow Flight from a single Rust binary. No resolvers. No ORM. One query per request.
Developer toolsGitHub @fraiseqlOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The Explicit GraphQL Framework for the LLM Era Simple patterns. High performance. PostgreSQL at the center.
Taken from the repository README
Loading the full README.
Read the full README ↗A Python GraphQL framework for PostgreSQL. Declare types and operations with decorators, point them at PostgreSQL views and functions, and FraiseQL serves a typed GraphQL API over FastAPI — no build step, no code generation.
PostgreSQL returns JSONB. An integrated Rust pipeline (fraiseql_rs) transforms it
into the HTTP response. You write Python; the hot path runs in Rust.
Requires: Python 3.13 or 3.14 · PostgreSQL 13+
import fraiseql
from fraiseql.fastapi import create_fraiseql_app
@fraiseql.type(sql_source="v_user", jsonb_column="data")
class User:
"""A user in the system.
Fields:
id: Unique user identifier
name: User's full name
email: User's email address
"""
id: int
name: str
email: str
@fraiseql.query
async def users(info) -> list[User]:
"""Get all users."""
db = info.context["db"]
return await db.find("v_user")
app = create_fraiseql_app(
database_url="postgresql://localhost/mydb",
types=[User],
queries=[users],
)
Attribute docstrings become GraphQL descriptions. List queries get where,
orderBy, limit and offset wired in automatically.
Typical ORM stack: PostgreSQL → rows → ORM objects → Python dicts → JSON → HTTP
FraiseQL: PostgreSQL → JSONB → Rust field selection → HTTP
The view composes the whole response shape in one query, so there is no N+1 problem and no Python serialization in the hot path. On the transformation benchmark the JSON step runs 3.6–5.9x faster than the equivalent pure-Python path — 4.1x on a 7 KB nested payload, 4.0x on a 32 KB one.
It also makes the security model structural rather than defensive:
CREATE VIEW v_user AS
SELECT id, jsonb_build_object('id', id, 'email', email) AS data
FROM tb_user;
-- password_hash and api_key are not in the JSONB, so they cannot leak
With an ORM-backed schema, forgetting to exclude a column is a data leak. Here the
view is the contract. Reads go through v_* views and tv_* projection tables;
writes go through fn_* PostgreSQL functions (CQRS).
This repository is v1 (fraiseql-python). There is a separate v2 project with a
different architecture. Both are actively maintained.
| v1 — this repo | v2 — fraiseql/fraiseql | |
|---|---|---|
| Status | Stable (1.31.1) | Active (2.16.0; breaking changes ship in minor releases) |
| Engine | Python + Rust pipeline | Compiled Rust engine |
| Schema authoring | Python decorators | 16+ languages |
| Databases | PostgreSQL only | PostgreSQL, MySQL, SQLite, SQL Server |
| Deployment | Runtime (FastAPI, hot reload) | Build-time (fraiseql-cli compile) |
Pick v1 for a Python codebase already invested in PostgreSQL, with fast iteration and no build step. Pick v2 for polyglot teams, multiple databases, or compile-time guarantees.
Good fit if you run PostgreSQL and are comfortable writing views and functions, want a database-first API, need multi-tenant isolation, care about JSON throughput, or lean on LLMs for code generation — SQL and Python are well-trained, and there is no proprietary DSL in the way.
Look elsewhere if you need a database other than PostgreSQL (that is v2), do not want JSONB in your schema, are building your first GraphQL API, or want an ORM to model your data for you.
See Choosing FraiseQL for a longer comparison.
pip install "fraiseql<2" # or: pip install "fraiseql[all]<2"
fraiseql init my-api
cd my-api
fraiseql dev
v1 and v2 share the fraiseql name on PyPI, and the bare name now resolves to v2 —
hence the <2 pin. Your API is live at http://localhost:8000/graphql.
@fraiseql.success auto-injects status, message, updated_fields and id; the
SQL function holds the business logic.EmailAddress, Money, IpAddress, LTree, CUSIP, DateRange, …) with
type-aware SQL operators.AND/OR/NOT.pk_* integer keys for fast
joins (never exposed), id UUIDs for a stable public API, identifier slugs for URLs.The fraiseql CLI covers init, dev, check, doctor, generate, sql,
migrate, turbo, sbom and query-stats. Run fraiseql --help or see the
CLI reference. migrate needs the migrate extra:
pip install "fraiseql[migrate]<2".
git clone https://github.com/fraiseql/fraiseql-python
cd fraiseql-python
uv sync # runtime + dev deps, builds the Rust extension
uv run pre-commit install
Requires a Rust toolchain for fraiseql_rs. The runtime floor is PostgreSQL 13; the
integration tests want 14+, and CI runs them on 16.
See the Contributing Guide.
FraiseQL is created by Lionel Hamayon (@evoludigit). The idea: let PostgreSQL return the JSON, let Rust shape it, and keep Python out of the hot path.
MIT licensed — see LICENSE.
fraiseql sbom generatesrc/fraiseql/security/profiles/definitions.pyUNLOGGED tables), error tracking and OpenTelemetry traces live in the same
database, so a small deployment needs no Redis, Sentry or APM service.chaos_real_db (of 145 in tests/chaos/) against real PostgreSQL, apart from
the per-PR suite (strategy).