OpenLogs

All tools

Hasura

Serves a GraphQL API over PostgreSQL and other data sources.

Replaces

Paid managed GraphQL API services, such as AWS AppSync.

All open-source alternatives to AWS AppSync

Difficulty

Difficulty: Easy

3 services (1 database or broker: postgres), 1 volume mount, no env values to set, no elevated host access. Heuristic score 2 of 11: easy.

Stack

TypeScript (language), PostgreSQL (database)

Deployment

docker_compose

Requirements

Not stated.

License

Apache-2.0 (OSI-approved open source)

Read from github.com/hasura/graphql-engine/blob/21c41c8/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/hasura/graphql-engine/blob/21c41c8/README.md, read on .

Repository

hasura/graphql-engine

GitHub stats

Stars
32,123
Forks
2,967
Open issues and pull requests
2,365
Last push
2026-10-22
Latest release
v2.51.1
Released
2026-10-20

From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as Apache-2.0.

Compose file

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yaml Version 1
services:
  postgres:
    image: postgres:15
    restart: always
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgrespassword
  graphql-engine:
    image: hasura/graphql-engine:v2.51.1
    ports:
      - "8080:8080"
    restart: always
    environment:
      ## postgres database to store Hasura metadata
      HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
      PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## enable the console served by server
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      ## enable debugging mode. It is recommended to disable this in production
      HASURA_GRAPHQL_DEV_MODE: "true"
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
      ## uncomment next line to run console offline (i.e load console assets from server instead of CDN)
      # HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets
      ## uncomment next line to set an admin secret
      # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
      HASURA_GRAPHQL_METADATA_DEFAULTS: '{"backend_configs":{"dataconnector":{"athena":{"uri":"http://data-connector-agent:8081/api/v1/athena"},"mariadb":{"uri":"http://data-connector-agent:8081/api/v1/mariadb"},"mysql":{"uri":"http://data-connector-agent:8081/api/v1/mysql"},"oracle":{"uri":"http://data-connector-agent:8081/api/v1/oracle"},"snowflake":{"uri":"http://data-connector-agent:8081/api/v1/snowflake"}}}}'
    depends_on:
      data-connector-agent:
        condition: service_healthy
  data-connector-agent:
    image: hasura/graphql-data-connector:v2.51.1
    restart: always
    ports:
      - 8081:8081
    environment:
      QUARKUS_LOG_LEVEL: ERROR # FATAL, ERROR, WARN, INFO, DEBUG, TRACE
      ## https://quarkus.io/guides/opentelemetry#configuration-reference
      QUARKUS_OPENTELEMETRY_ENABLED: "false"
      ## QUARKUS_OPENTELEMETRY_TRACER_EXPORTER_OTLP_ENDPOINT: http://jaeger:4317
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8081/api/v1/athena/health"]
      interval: 5s
      timeout: 10s
      retries: 5
      start_period: 5s
volumes:
  db_data:

From the app's own repository: github.com/hasura/graphql-engine/blob/21c41c8/install-manifests/docker-compose/docker-compose.yaml.

Compose file from the app repository.

Install

  1. Docker with the Compose plugin (github.com/hasura/graphql-engine/blob/21c41c8/install-manifests/docker-compose/docker-compose.yaml)

    A host with Docker and the Docker Compose plugin. This entry runs from a compose file.

  2. Save the compose file as docker-compose.yaml (github.com/hasura/graphql-engine/blob/21c41c8/install-manifests/docker-compose/docker-compose.yaml)

    Use the compose file shown above.

  3. Start it (github.com/hasura/graphql-engine/blob/21c41c8/install-manifests/docker-compose/docker-compose.yaml)
    docker compose up -d
  4. Open the app (github.com/hasura/graphql-engine/blob/21c41c8/install-manifests/docker-compose/docker-compose.yaml)

    Open http://localhost:8080. The compose file publishes host port 8080 for the graphql-engine service.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

Signals

  • Open issues and pull requests: 2365
  • Last push: 2026-10-22 (0 days before this page was built)
  • Latest release: v2.51.1 on 2026-10-20 (1 days before this page was built)