Skip to content
STACK IT FAST

Hasura vs PostGraphile vs WunderGraph Cosmo

Architecture comparison 3 projects Built from source-audited deep dives

Hasura and PostGraphile both turn a database into a GraphQL API: Hasura with a Haskell (V2) and Rust (V3/DDN) engine and pluggable data connectors, PostGraphile by compiling a PostgreSQL schema through the Grafast planner in Node.js. WunderGraph Cosmo solves a different problem: federating many GraphQL services behind a Go router with a schema registry.

Hasura
TypeScript · Apache-2.0
PostGraphile
TypeScript · MIT
Cosmo (WunderGraph)
TypeScript · Apache-2.0
Updated
2026-09-25

Which one should you pick?

Pick Hasura if…
  • You want instant GraphQL and REST over several databases via data connectors
  • You want a managed-style engine with permissions and a console
Pick PostGraphile if…
  • Your data lives in PostgreSQL and you want to lean on Row-Level Security
  • You want a TypeScript/Node library you can embed in your own server
Pick Cosmo (WunderGraph) if…
  • You already have several GraphQL services and need federation
  • You need a schema registry, composition checks and usage analytics

Side by side

Attribute Hasura PostGraphile Cosmo (WunderGraph)
Written in TypeScriptHaskell TypeScriptPLpgSQLJavaScript TypeScriptGoHTML
License Apache-2.0 MIT Apache-2.0
Frontend React ReactGraphiQL Next.jsRadix UIGraphiQL
Backend & APIs HaskellRustGoGraphQL TypeScriptNode.jsGraphQL TypeScriptGoConnectRPC
Data & persistence PostgreSQLSQLite PostgreSQL PostgreSQLDrizzleClickHouse
Infrastructure & deploy DockerCircleCI YarnJest KeycloakDockerHelmNATS
Key decisions
  • Two GraphQL engines, Haskell V2 and Rust V3, ship from one repository
  • New databases plug in as out-of-process Data Connector agents
  • The CLI is a standalone Go module, not part of either engine
  • Grafast operation planning replaces traditional GraphQL resolvers
  • PostgreSQL database reflection via pg-introspection and dataplan-pg
  • Crystal monorepo unifies core execution, plugins, and tooling
  • The platform is a pnpm/Turborepo-style monorepo split across TypeScript and Go workspaces
  • Runtime traffic and control-plane management are separate services in separate languages
  • The Controlplane schema is managed with Drizzle, not Prisma or raw SQL
Audited 17493b6 · 2026-09-17 566caa3 · 2026-09-17 26545dc · 2026-09-17

How they differ

Generating an API from a database

Hasura ships two engines from one repository and plugs new databases in as out-of-process Data Connector agents; its CLI is a separate Go module. PostGraphile introspects PostgreSQL and compiles it into a GraphQL schema executed by Grafast, which plans operations instead of running per-field resolvers, and enforces Row-Level Security inside PostgreSQL transactions. It runs on any Node HTTP framework through Grafserv adapters.

Federating services

WunderGraph Cosmo separates runtime from management: a Go router serves federated traffic, a TypeScript control plane (Drizzle on PostgreSQL) manages the schema registry, a Go service writes usage analytics to ClickHouse, and Keycloak handles auth. Services talk over ConnectRPC.

Architecture diagrams

Hasura Open SVG
Hasura architecture diagramGraphQL clients → Engine V2 (GraphQL); GraphQL clients → Engine V3 (DDN) (GraphQL); Console → Engine V2 (admin API); hasura CLI → Engine V2 (metadata); Engine V2 → PostgreSQL (SQL); Engine V2 → Data Connector agents (Data Connector API); Engine V3 (DDN) → Data Connector agents (connectors); Data Connector agents → Other databases (queries)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEGraphQL clientsqueries · subscriptionsConsoleReacthasura CLIGoEngine V2HaskellEngine V3 (DDN)Rust cratesData Connector agentsdc-agents/*PostgreSQLprimary databaseOther databasesSQLite reference agentGraphQLGraphQLadmin APImetadataData Connector APIconnectorsqueriesSQL
PostGraphile Open SVG
PostGraphile architecture diagramGraphQL clients → Grafserv (GraphQL over HTTP); Ruru → Grafserv (explore); Grafserv → Grafast (execute); Grafast → dataplan-pg (steps); dataplan-pg → PostgreSQL (SQL); graphile-build-pg → PostgreSQL (introspect); graphile-build-pg → Grafast (schema)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEGraphQL clientsqueriesRuruGraphiQL IDEGrafservHTTP adaptersGrafastplan-based executiongraphile-build-pgschema from catalogdataplan-pgSQL query plansPostgreSQLtables · functions · RLSexecuteGraphQL over HTTPexplorestepsSQLintrospectschema
Cosmo (WunderGraph) Open SVG
Cosmo (WunderGraph) architecture diagramGraphQL clients → Cosmo Router (GraphQL); Cosmo Router → Subgraphs (federated queries); Cosmo Router → CDN server (fetch config); Cosmo Router → graphqlmetrics (usage); graphqlmetrics → ClickHouse (write); Studio → Controlplane (ConnectRPC); wgc CLI → Controlplane (ConnectRPC); Controlplane → PostgreSQL (Drizzle); Controlplane → CDN server (publish schema); Controlplane → Keycloak (auth)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEEXTERNALGraphQL clientsqueries · subscriptionsStudioNext.js · Radix UIwgc CLIschema checksCosmo RouterGo federation gatewayControlplaneTypeScript · ConnectRPCCDN servercomposed schemasgraphqlmetricsusage ingestionPostgreSQLDrizzleClickHouseusage metricsSubgraphsyour GraphQL servicesKeycloakauthfetch configpublish schemaGraphQLusagewriteConnectRPCConnectRPCDrizzlefederated queriesauth

Frequently asked questions

Is Hasura written in Haskell or Rust?

Both. The Hasura repository ships the mature GraphQL Engine V2 in Haskell and the newer V3 engine behind Hasura DDN in Rust.

Is WunderGraph Cosmo an alternative to Hasura?

Only partly. Hasura and PostGraphile generate a GraphQL API from a database, while Cosmo federates existing GraphQL services behind a router and manages their schemas.