GraphQL federation gateway
Upgrade to Go 1.18
Update depencies
execution: Use atomic.Int64


browse  log 



You can also use your local clone with git send-email.


Go Documentation builds.sr.ht status

Thistle is a GraphQL federation gateway which implements a subset of the Apollo Federation specification. It provides a simple and reliable way to combine multiple GraphQL APIs.


import "git.sr.ht/~adnano/thistle"

You'll need Go 1.16 or later.

#Supported features

The following features are supported:

  • @key directives
  • @requires directives
  • @external directives
  • @inaccessible directives
  • File uploads

The following features are not supported:

  • Multiple @key directives on the same object
  • Nested fields in @key or @requires directives
  • @inaccessible directives at locations other than field definitions
  • Other Federation directives (@extends, @provides, @link, @shareable, @tag, @override, @composeDirective)
  • Custom Query or Mutation types
  • Subscriptions

See federation.graphql for the exact definitions used.

#Comparison with other projects

Bramble and Nautilus are two other Go implementations of a GraphQL gateway, but they do not support Apollo Federation. Thistle began as a fork of Bramble.

Apollo Gateway and Apollo Router are non-free implementations of Apollo Federation in TypeScript and Rust. They are licensed under the non-free Elastic license.

graphql-go-tools is a Go implementation of Apollo Federation, but it is poorly documented, overcomplicated, and tries to do too much.