Go Gherkin Other
Clone or download
rafaeljesus Merge pull request #345 from hellofresh/feature/request-id-as-tag-tra…

Add request id as a tag into tracing for seamlessly correlation in tracing UI
Latest commit 461a726 Aug 15, 2018
Failed to load latest commit information.
.github Added some documentation Nov 15, 2016
assets Fixed integration tests Jun 12, 2018
build Fixed app version injection with ldflags Jul 26, 2018
cmd Fixed server initialisation race condition Jul 19, 2018
docs Added Modify an endpoint quickstart docs Aug 3, 2018
examples Removed enable load balancing property May 23, 2018
features Get the empty list in the output when definitions list is empty Jul 27, 2018
pkg add request id as tag to tracing Aug 14, 2018
.editorconfig New indentation Jun 9, 2017
.gitignore Ignoring node stuff bc of gitbook Aug 3, 2017
.travis.yml Use stable version Jul 2, 2018
CHANGELOG.md add commit to changelog Aug 14, 2018
CODEOWNERS Fixed team name Nov 21, 2017
CONTRIBUTING.md Added some documentation Nov 15, 2016
Dockerfile Usgin the new cmd May 7, 2018
Gopkg.lock Fixed server initialisation race condition Jul 19, 2018
Gopkg.toml Fixed server initialisation race condition Jul 19, 2018
LICENSE Added license file Jan 10, 2017
Makefile Fixed server initialisation race condition Jul 19, 2018
README.md Updated features Apr 20, 2018
book.json Added code tabs plugins Aug 3, 2017
doc.go Moved to cmd pkg May 7, 2018
godog_test.go Removed read only May 11, 2018
janus-logo.png Add a nice logo Apr 12, 2017
janus.sample.toml Add web.credentials.timeout Jul 2, 2018
main.go Track upstream hosts usage stats and log upstream details Jun 12, 2018



Build Status codecov GoDoc Go Report Card Join us on slack

An API Gateway written in Go

This is a lightweight API Gateway and Management Platform that enables you to control who accesses your API, when they access it and how they access it. Janus will also record detailed analytics on how your users are interacting with your API and when things go wrong.

Go version 1.9 or later is required to build master, the current development version. Janus is officially supported on linux/amd64, linux/i386, linux/arm64, darwin/i386, darwin/amd64, windows/i386 and windows/amd64.

Why Janus?

In ancient Roman religion and myth, Janus (/ˈdʒeɪnəs/; Latin: Ianus, pronounced [ˈjaː.nus]) is the god of beginnings, gates, transitions, time, doorways, passages, and endings. He is usually depicted as having two faces since he looks to the future and to the past. Wikipedia

We thought it would be nice to name the project after the God of the Gates 😄

What is an API Gateway?

An API Gateway sits in front of your application(s) and/or services and manages the heavy lifting of authorisation, access control and throughput limiting to your services. Ideally, it should mean that you can focus on creating services instead of implementing management infrastructure. For example, if you have written a really awesome web service that provides geolocation data for all the cats in NYC, and you want to make it public, integrating an API gateway is a faster, more secure route than writing your own authorisation middleware.

Key Features

This API Gateway offers powerful, yet lightweight features that allows fine gained control over your API ecosystem.

  • No dependency hell, single binary made with go
  • REST API, full programatic access to the internals makes it easy to manage your API users, keys and API Configuration from within your systems
  • Hot-reloading of configuration. No need to restart the process
  • Graceful shutdown of http connections
  • OpenTracing support for Distributed tracing (Supports Google Cloud Platform and Jaeger)
  • HTTP/2 support
  • Circuit Breaker support that can be configured for each API
  • Retry mechanism to make your endpoints more resilient
  • Rate Limiting, easily rate limit your API users, rate limiting is granular and can be applied on a per-key basis
  • CORS Filter, enable cors for your API, or even for specific endpoints
  • Multiple auth protocols, out of the box, we support JWT, OAuth 2.0 and Basic Auth access methods
  • Small official docker image included


Note: All examples here and in the documentation will be using HTTPie for simplicity. But all requests can easily be converted to curl if needed.


The simplest way of installing Janus is to run the docker image for it. You can check our examples folder and you can find some good examples. All you got to do is:

cd examples/front-proxy

docker-compose up -d

Now you should be able to get a response from the gateway.

Try the following command:

http http://localhost:8081


You can get the binary and play with it in your own environment (or even deploy it where ever you like). Just go to the releases page and download the latest one for your platform.

Getting Started

Check out our quick start guide to get up to speed with Janus.


To start contributing, please check CONTRIBUTING.