the-guild-org / conductor

Conductor is a cutting-edge, open-source GraphQL Gateway, fully compliant with the GraphQL specification and designed to supercharge any API with powerful features and proxy flows.
https://the-guild.dev/graphql/gateway
MIT License
98 stars 3 forks source link
federation fusion gateway graphql proxy rust

GraphQLConf 2024 Banner: September 10-12, San Francisco. Hosted by the GraphQL Foundation

 
Conductor
 

[!IMPORTANT] Conductor gateway is still under development, and currently available as alpha.

Please use it with caution. Feedback and Contributions are always welcome!

Conductor: MIT open-source GraphQL Gateway

GitHub Actions Workflow Status unsafe forbidden GitHub License

GraphQL Rust Cloudflare Docker

Conductor is a cutting-edge, open-source GraphQL Gateway, fully compliant with the GraphQL specification and designed to supercharge any GraphQL API with a number of powerful features and proxy flows. Crafted entirely in Rust, it offers unparalleled performance and a great developer experience, making it an ideal choice for projects requiring advanced GraphQL capabilities.

 
Conductor
 

Key Features

Configuration Overview

Conductor's configuration can be defined in both YAML and JSON formats. The config file contains several key sections:

Configuration File Example (YAML)

server:
  port: 9000

logger:
  filter: error

sources:
  - type: graphql
    id: my-source
    config:
      endpoint: https://my-source.com/graphql

endpoints:
  - path: /graphql
    from: my-source
    plugins:
      - type: cors
        config:
          allowed_origin: "*"
      - type: graphiql

Configuration File Example (JSON)

{
  "server": {
    "port": 9000
  },
  "logger": {
    "filter": "error"
  },
  "sources": [
    {
      "type": "graphql",
      "id": "my-source",
      "config": {
        "endpoint": "https://my-source.com/graphql"
      }
    }
  ],
  "endpoints": [
    {
      "path": "/graphql",
      "from": "my-source",
      "plugins": [
        {
          "type": "cors",
          "config": {
            "allowed_origin": "*"
          }
        },
        {
          "type": "graphiql"
        }
      ]
    }
  ]
}

Running Conductor

Conductor can be ran via the docker image, and it can even be ran via npx for quick and convenient usage. It also fully supports running as a WASM on Cloudflare Workers, providing flexibility in deployment options.

npx @graphql-conductor/bin ./conductor.config.yaml

Or, locally:

cargo run --bin conductor ./conductor.config.json

If config is not provided as the first argument, Conductor will try to read config.json from the root by default. For more details on setting up and running Conductor, refer to our documentation.

Contributions

Contributions, issues and feature requests are very welcome. If you are using this package and fixed a bug for yourself, please consider submitting a PR!

And if this is your first time contributing to this project, please do read our Contributor Workflow Guide before you get started off.

Code of Conduct

Help us keep Conductor open and inclusive. Please read and follow our Code of Conduct as adopted from Contributor Covenant

License

GitHub license

Conductor is open-source software licensed under MIT.