fxquinox¶
Open-source, API-first VFX production-tracking + publish/DCC platform - one canonical core that tracks the work and moves the files, with every tool talking to the same API.
Get started How it works HTTP API
The One Law
One canonical core + API; every surface (web UI, Qt desktop, DCC plugins, CLI) is a client of that API with zero privileged access.
Architecture¶
flowchart LR
PG[("Postgres<br/>JSONB")]:::data --> CORE
subgraph CORE["Core · FastAPI"]
direction TB
SE("Schema engine"):::core
QL("Query DSL"):::core
PUB("Publish chain"):::core
AU("Auth"):::core
EV("Events · WebSocket"):::core
ME("Media"):::core
end
CORE --> API{{"Canonical HTTP API"}}:::api
API --> SDK(["Python SDK<br/>fxqclient"]):::client
API --> WEB(["Web UI<br/>React / TS"]):::client
API --> QT(["Qt desktop"]):::client
API --> DCC(["Houdini · Nuke"]):::client
style CORE fill:#0a0f20,stroke:#1c2438,color:#9fb0c8
classDef data fill:#0c2a23,stroke:#1cbc90,color:#bff3e2,stroke-width:1.5px;
classDef core fill:#0f1a3c,stroke:#3a5bf0,color:#dbe4ff,stroke-width:1.5px;
classDef api fill:#002fa7,stroke:#8aa0f8,color:#f4f6ff,stroke-width:1.5px;
classDef client fill:#221a3c,stroke:#a06bff,color:#ece2ff,stroke-width:1.5px;
A metadata-driven core stores every record as JSONB and shapes it through a schema engine; an expressive query DSL, an enforced publish chain with lineage, auth, realtime events, and media all sit behind one HTTP API.
Why fxquinox¶
-
API-first by design
One canonical API. The web UI, Qt desktop, DCC plugins and SDK are all clients of it - no privileged back doors.
-
Metadata-driven schema
Entity types and fields are data, not code. Add a custom type at runtime and every client picks it up.
-
Publish chain + lineage
Versioned outputs linked to the work that made them, with an input DAG you can walk both directions.
-
Realtime everywhere
Mutations stream over WebSockets, so every surface stays live without polling.
-
One-command self-host
docker compose upbrings up the API, Postgres, Redis and object storage. -
Open source
Run it yourself, extend it, and own your pipeline data.
Where to go next¶
-
Run the backend and web UI locally in a few minutes.
-
Entities, the schema engine, the publish chain - with diagrams.
-
The canonical REST surface, rendered live from OpenAPI.
-
fxqclient- the object-oriented client over the API.