Light Dark Auto

Core Services

Changelogs for each core service


4.5.3 (November 23rd, 2022)


  • Updated gpal to v0.2.0

  • Updated GSL to v1.0.1


  • Init edge manifest template no longer creates a namespace.


  • Fixed memory leak in sync

  • Hyphens in service names now get sanitized into underscores

  • greymatter sync --dry-run now returns on an error and doesn't partially render.

  • TCP init templates no longer output an incorrect schemax

4.5.2 (November 15th, 2022)


  • updated help text for sync and init

  • generated sync manifest with example flag uses examples namespace

  • example services use exam

  • Version info is now based on git describe.

  • the mesh name is no longer defaulted to an empty string, which will break if a user doesn't set it


  • greymatter --version now displays tag properly.

  • Edge name no longer adopts the last example service when using the example flag.

  • Removed invalid field from lambda init template.



  • Upgrade gpal pkg to 0.1.1

  • Upgrade gsl to 1.0


  • Default sync container is now v4.5.1.

  • Respect namespace argument and don't sanitize k8s manifests

  • Init templates match changes in GSL spec


  • Sync config file overriding flags on startup.

4.5.0 (November 1st, 2022)


  • greymatter sync now has a --dry-run flag which performs config evaluation in a greymatter project.


  • Hyphens are now sanitized out of names in init.

  • greymatter sync now intelligently pushes on change from git repos

  • Updated the generated by greymatter init with CUE Crash Course content.

  • Changed allowable characters in service name to allow -, which is removed in the generated CUE package name.

  • greymatter sync will now block/stop sync iterations when it loses connection to redis.

  • Deprecated sync http clone flags since git removed http based cloning.

  • Sync --evaluate flag is now hidden since GSL only ever unifies to exports.


  • Resiliency when talking to redis for state updates during a sync iteration. Sync would get confused during a special case in deletes when communication with Redis was dropped.

  • greymatter sync crashing on failures when communicating with greymatter catalog/control.

4.4.0-rc.8 (September 29th, 2022)


  • greymatter init sync now defaults the redis host to greymatter-datastore.greymatter.svc.cluster.local:6379


  • greymatter list proxies no longer panics due to missing client

  • greymatter create sharedrules now returns a required list of flags

  • Fixed get and delete commands not working for the sharedrules object type

4.4.0-rc.7 (September 26th, 2022)


  • Support for arm based binaries

  • Support for windows based binaries

  • greymatter init now outputs a sync.yaml file in the manifests directory.

  • greymatter init now has a --example flag which outputs the grocerylist application.

  • Added a greymatter init service subcommand that generates service templates given a service type.

  • init service subcommand can generate services off the following types: tcp, http, lambda, mongo, redis.

  • greymatter init + init service now support mTLS configurations which can be disabled with --insecure


  • greymatter sync k8s is now greymatter init sync.

  • greymatter init sync now defaults the container version to 4.3.0.

  • greymatter init now uses an internal template engine for rendering an end to end example for registering services in a mesh.

  • greymatter init sync template now uses a direct in-cluster redis url instead of localhost.

  • Upgraded urfavecli/v2 to v2.16.3

  • Updated instances of 'Grey Matter' in the repo to 'greymatter'


  • greymatter init sync no longer creates a templated secret through flags, users must set one independently.

4.3.0 (July 25th, 2022)


  • greymatter sync now handles cleaning up objects in a mesh that are deleted in a remote git-ops repository.

  • Mesh state is now managed in redis and tracked with a commit hash in the context of greymatter sync.

  • Redis connection flags for greymatter sync. Check greymatter sync --help for more info.

  • greymatter sync k8s now accepts a --branch flag.

  • Scheduled CI builds.


  • greymatter sync k8s --expression is now --evaluate.


  • Fixed bad JSON unmarshal errors from when keys were missing in the remote APIs.

  • Improved missing ssh key error when running greymatter sync k8s.

  • Fixed creating zones with keys using greymatter create zone.

4.2.0 (July 13th, 2022)


  • init now builds a full Grey Matter CUE directory structure.

  • init now supports fetching a remotely located intermediates.cue file.


  • init is no longer an x (experimental) command.

  • greymatter sync cue subcommand is now just greymatter sync

  • host config options for Control and Catalog are now url.

  • CI/CD now pushes to quay instead of nexus.


  • Enhanced user feedback when invalid URLs are provided for Control and Catalog.

  • CLI missing fields from Control API OpenAPI schema.


  • Removed support syncing a legacy JSON mesh structure tree.

  • The greymatter k8s subcommand no longer exists.

4.1.2 (June 29th, 2022)


  • Fixed namespace not getting populated in auto generated sync secret

4.1.1 (June 7, 2022)


  • --api and --catalog flags for base greymatter command that allow URL overriding for Control and Catalog APIs.


  • Submodule cloning when syncing a repo with submoduled CUE.

  • Fixed missing templates flags for greymatter sync k8s with CUE.


  • Removed stale annotations from k8s sync templates.

4.1.0 (June 2, 2022)


  • greymatter sync k8s now takes an -expression flag that allows users to specify which configs to watch in an EXPORT.cue file during the stateful set deployment.

  • New greymatter sync cue subcommand that triggers CUE evaluation for GitOps sync. This accepts a -e flag which specifies a specific value to evaluate at the top-level package.

  • Added greymatter sync -report flag that generates a full detailed report of all configs applied in a sync iteration.


  • -cue-package is no longer a hidden field on sync.

  • Syncing with CUE now expects an array of mesh objects of various kinds rather than a top-level object with specific fields e.g. proxy, domain, etc. This enables targeted GitOps sync pipelines for application specific updates rather than "whole repo" changes.


  • Logs are no longer misleading when a configuration failure occurs.

  • Log levels now successfully apply. Previously only supported trace level.


  • Sync no longer accepts a --cue flag. Please use the subcommand greymatter sync cue.

4.0.7 (May 13, 2022)


  • A new x subcommand namespace introduced for experimental commands without user interface stability guarantees.

  • A new x init subcommand that initializes a cue.module in the current directory, or a configured directory.

  • Object get, edit, delete, create, and modify commands now accept a short flag -k for their primary key, instead of only a long flag like --listener-key, --route-key, etc.


  • The cuetypes submodule now includes Envoy types generated from go-control-plane


  • Fix some crashes when users pass plurals (and other aliases) to subcommands.

4.0.6 (Februrary 10, 2022)


  • Merge shared rules into route rules in json_to_cue migration script


  • Update dependency on to v0.3.3. Note that this update breaks existing compatibility with previous versions of the operator. When running k8s operator, the --image tag specified must be >=0.3.3. If using a previous version of the operator, you should use CLI version 4.0.3.


  • Fixed bug in json_to_cue migration script that was merging route and domain configs together

4.0.3 (January 19th, 2022)


  • Extended sync command to support catalogmesh and catalogservice objects.

  • If --forever is passed, do a test request and retry connections continuously until a maximum retry delay of 5 minutes.

  • Added migration script to convert tree of mesh JSON to CUE


  • API clients are no longer created if they are not needed by the executed command.

  • Set HTTP client request timeout to 30 seconds

  • Add -extldflags "-static" flags to every build

4.0.2 (January 6th, 2022)

This release contains a new kubernetes focused sync container that can be deployed into a remote cluster for GitOps integration.


  • Introduced a new command greymatter k8s sync to generate kubernetes resources for sync container stateful set.

  • Introduced internal log levels.

  • Greymatter sidecar injection for kubernetes sync container.


  • Namespaces all kubernetes related subcommands to greymatter k8s.

4.0.1 (December 3, 2021)

This release has bug fixes for CLI flags, and imports bug fixes from Control API's OpenAPI spec.


  • Update dependency on to v0.1.2; this changes --password and --username flags to --registry-password and --registry-username in the k8s-operator subcommand


  • Update Secret field forward_client_cert_details to string with latest codegen

  • Fix parsing error for CORSConfig allowed_origins field with latest codegen

  • Fix misreading of --service-id when delete catalogservice is run

4.0.0 (November 24, 2021)

This release is a complete rewrite with breaking changes galore. It is known to work against gm-control-api versions 1.6 and 1.7, and 1.3 support might work as well, but is untested.

The only acceptable config file is now ~/.config/greymatter/config.toml, but the location can be set with GREYMATTER_CONFIG.

Use the improved interactive help, check out the docs site, or ask in chat for help on setting up this CLI rewrite.


  • Add --cue and --cue-package flags to the sync command; CLI now supports sync of a single CUE "instance" of a package to Control API

  • Added experimental k8s-operator subcommand; prints kubernetes manifests to stdout that can be piped to a file or kubectl to install the Grey Matter operator


  • Release tarballs only contain the targeted build artifacts

  • Removed CircleCI, CI/CD pipeline is now Buildkite

  • Config format is now TOML only

3.0.4-rc.1 (September 28th, 2021)


  • Fixed the CI release process producing incorrectly formatted binaries for their target OS.

3.0.3 (August 30th, 2021)


  • Removed the nautls library dependency

3.0.2 (August 23rd, 2021)


  • upgraded library to 0.5.10

3.0.1 (August 18th, 2021)


  • Added CI workflow triggered by tag for releases


  • Fixed bug deleting instances from a cluster on edit

3.0.0 (June 21, 2021)

This release requires v2.0.0 (or greater) of gm-catalog.


  • Support for CA Certs via api.ssltrust and catalog.ssltrust

  • CLI now has context switching: greymatter context default

  • Support for SOCKS5 proxying via socks5.protocol, socks5.address, socks5.username, and socks5.password config options

  • Config file now supports env vars (both $ENV_VARS and ${ENV_VARS}

  • Certs can now be raw strings


  • Support for SOCKS5 proxying via socks5.protocol, socks5.address, socks5.username, and socks5.password config options

  • Add HTTP content-type header to outgoing create/update requests

  • Optimized string building throughout the app

  • Removed uneccessary API config variables

  • CLI now uses a config file in ~/.config/greymatter/config.toml

  • Using urfave/cli library instead of spf13/cobra / viper

  • greymatter configs is now greymatter config

  • Replaced Catalog v1 support with Catalog v2 via catalog-mesh and catalog-service objects


  • internal Catalog client now uses the API client configuraion for unset fields where possible


  • was renamed to api_url

  • api.ssl was removed

  • api.prefix was removed

  • api.version was removed

  • (along with all catalog config var counterparts)

3.0.0-rc.1 (May 18, 2021)

This release requires v2.0.0 (or greater) of gm-catalog.


  • Support for CA Certs via api.ssltrust and catalog.ssltrust

  • Enable building with BoringSSL by setting ENABLE_BORINGSSL=1


  • Replaced Catalog v1 support with Catalog v2 via catalog-mesh and catalog-service objects

2.0.2 (March 30th, 2021)


  • Improve search functionality for list commands (#149)

  • Cleanup inline docs and add examples (#173)


  • Stop pruning instance field on edit (#162, #149)

  • Fix summary listing output by converting json.rawmessage back to strings

  • Improve error message if protocol scheme is provided in GREYMATTER_API_HOST (#140)

2.0.1 (January 20th, 2021)


  • Update core cli help text description (#148)

  • Adding response body to the error message (#146)

2.0.0 (December 2nd, 2020)


  • Complete re-write using Cobra (spf13/cobra) framework.

  • Synchronization mechanisms for GitOps

  • Templating functionality

  • Tab completion

  • Support for Catalog API object CRUDs


  • Removed dependency to a specific version of gm-control-api

1.4.2 (Jul 8th, 2020)


  • import-zone now works properly with the output of export-zone

  • deep delete now works on all objects

  • summary format now works on all objects

1.4.1 (May 15th, 2020)


  • Pin to gm-control-api v1.4.1

1.4.0 (May 7th, 2020)


  • Pin to gm-control-api v1.4.0

1.3.0 (April 15th, 2020)


  • Pin to gm-control-api v1.3.0

1.2.1 (March 11th, 2020)


  • Pin gm-control-api to v1.2.1


  • Remove un-implemented commands and add in missing listener object from help messages

  • Environment variables now always parse from GREYMATTER regardless of the binary name

1.2.0 (March 11th, 2020)


  • Pin gm-control-api to v1.2.0

1.1.0 (November 4th, 2019)


  • Pin gm-control-api to v1.1.0

1.0.1 (October 16th, 2019)


  • Pin gm-control-api to v1.0.1

1.0.0 (October 15th, 2019)

Initial Version 1.0 release!


  • Documentation on CLI usage under the /docs folder


  • Pin gm-control-api to v0.8.1

0.5.0 (August 29th, 2019)


  • Pin gm-control-api to v0.8.0

0.4.1 (August 13th, 2019)


  • Pin gm-control-api/api to v0.7.1

0.4.0 (August 13th, 2019)


  • Pin gm-control-api/api to v0.7.0

0.3.0 (August 7th, 2019)


  • Pin gm-control-api/api to v0.6.0

0.2.0 (August 5th, 2019)


  • Secrets to clusters and proxies

  • Introduced go module vendoring

  • Create binaries for multiple platforms


  • Specification of trust file in domain SSL config

  • Specification of cert/key pairs in cluster SSL configs

0.1.0 (Beginning of Time)


  • Initial port

  • Deliver osx, windows, linux binaries to nexus


  • Pin to gm-control-api v0.3.0


1.7.0 (November 24, 2021)

This release corresponds with token refresh work that landed in gm-proxy 1.7.0 and includes all of the changes from the 1.7.0 release candidates.


  • 2.0 work: Add an etcd cache implementation for the next generation of our xDS server.

  • Add Redirect array to Route object schema

1.7.0-rc.3 (October 7, 2021)

Note: 1.7.0-rc.2 was unreleased, to keep proxy and control in sync.


  • Updated dependency on gm-proxy to 1.7.0-rc.3

1.7.0-rc.1 (September 8, 2021)


  • Added GM_CONTROL_2=yes feature flag for unreleased 2.0 features

  • Added version command to check apiversion, git hash, and go version


  • Update go dependency on gm-proxy to incorporate gm-oidc-validation TLSConfig changes see gm-proxy changes

  • Check in generated docs instead of building them inside Docker

  • Copy nonstdlib dependency directly into project

  • Go 1.16 is now required for builds, because we use the new stdlib "embed" package to serve our OpenAPI docs.


  • Restore serving OpenAPI docs from root "/" path


  • Removed GM Data persister. The Redis persister is recommended.

  • Removed the Marathon service discovery mechanism

  • Removed serving gm-control-api docs as YAML. Only HTML is supported.

  • Removed experimental explorer UI

1.6.4 (August 19, 2021)


  • Remove spam log when api and client version don't match

1.6.3 (unreleased)


  • Log correct api version

1.6.2 (unreleased)


  • Back port tag release ci scripts from main


  • Suppress 'filter not supported' warnings if node extension list doesn't exist



  • Control EDS exposes the metrics receiver connection string



  • Sidecar announcement Node information is passed to all resource Adapters

  • Filters set by users that are not supported by a sidecar will now be skipped with a warning

  • Set default XDS_INTERVAL to 5s

  • Traffic shadowing avilable via the rule.constraint.dark field

  • Docker image for gm-control-api contains the greymatter cli for easier debugging

  • Discovery manager to restart service discovery through admin API

  • pprof for debugging available from /admin API

  • goreportcard reports in CI

  • guidelines

  • Support for updated network filters

  • EDS updates to set health status for endpoints

  • network logger filter enabled by default

  • Adapter for sending catalog-specific XDS resources

  • Control API gRPC server implementation


  • Moved to xDS V3 protocol

  • CSB server now creates resource watches on a per stream basis

  • Cerebro logging now more human readable

  • API active filter arrays will now accept both periods and underscores in filter names


  • Fixed redirects with trailing slash routes

  • Fixed service discovery not pulling in platform updates

  • Fixed CSB deadlocking when bulk requests come in

  • Fixed segmentation fault caused by connection close with resolve DNS set


  • --xds-disabled from control

  • No longer support xDS V2 resources

  • codeclimate no longer runs in this repo

1.5.3 (December 8th, 2020)


  • Protocols reported to EDS include encryption scheme with each protocol description

1.5.2 (December 7th, 2020)


  • Fixed fatal config error when building retry policy with missing backoff policy

1.5.1 (November 30, 2020)


  • Replaced stale names for route-based filters

  • Updated stale implementation of ServeHTTP function for the REST handler

  • Made Kubernetes namespace polling sequential rather than in parallel

  • Evaluate protocols reported to EDS for each configured listener

1.5.0 (October 20, 2020)


  • Configurable request/response headers to routes

  • Support for inline listeners on api proxy object

  • Configurable access loggers to listener object

  • Support for prometheus backend for ALS stats

  • Route level redirect functionality

  • Per route filter configuration options for routes

  • REST support

  • Load balancer configuration options for clusters

  • Configurable timeouts for listeners and routes

  • Certificate revocation lists on listener and cluster ssl configurations

  • Configurable HTTP and HTTP2 protocol options on clusters

  • ACL Token to consul plugin configuration

  • Support for ECS discovery from all ECS task network modes


  • Upgraded to go-control-plane v0.9.7

  • Updated logger to gm-control/console logging


  • Replaced deprecated regex route header matcher with saferegex

  • Namespace failure causing service discovery failure from all namespaces

  • TLS on listeners not including cert key pairs or cipher suites

  • Kubernetes plugin more threadsafe

1.4.2 (May 15th, 2020)


  • Add port to route redirect configuration

  • Specify AllowOriginStringMatch in CORS configuration

1.4.1 (May 7th, 2020)


  • Updated dependency on version 1.4 of gm-control-api

1.4.0 (May 6th, 2020)


  • Support for Local Ratelimit, Client TLS, External Authentication, SNI Cluster, and Echo filters

  • Experimental support for Kafka Broker and Dubbo Proxy filters


  • Ensure filter chains are unique per Listener configuration

  • Use SafeRegex string matcher in place of deprecated Regex string matcher

1.3.0 (April 14th, 2020)


  • Upgraded to go-control-plane v0.9.4

  • Moved protobuf library to golang/protobuf


  • Unit tests that were associate with the golang/protobuf switch

1.2.0 (March 11th, 2020)


  • Resolve IPs of proposed Cluster changes to prompt a change and send new snapshots to GM Proxy

  • Support for configuring Cluster load balancing policies configuration

  • Allow one-way TLS by making a Domain's SSLConfig trustfile optional

  • Support all Envoy Network and HTTP filters in go-control-plane up to v0.8.6

  • Healthcheck endpoint for accomodating environments where one is required

  • Support specifying unique filter configurations per route


  • Default all Clusters to use the same HTTP protocol passed by its downstream connection

  • Specify Cluster TransportSocket rather than TlsContext to support GM Proxy

  • Omit the retry policy if the user sets the num_retries to 0 to get around an issue discussed in discussed in envoyproxy/envoy#9552


  • Use each Listener's API-configured IP address rather than defaulting to

  • Prevent filter configuration overwrites by clearing each protocol buffer after parsing

  • Only set validation context if a cafile is specified to prevent errors in GM Proxy

  • Prevent nil pointer references made to a Domain's SSLConfig's optional SNI field

1.1.0 (November 4th, 2019)


  • Added full TLS support to Controls gRPC server (supports 1-way SSL and mutual 2-way SSL)

  • Added TLS support when setting Kafka Observables options on proxy filters

  • Added support for Websocket connection upgrades


  • Fixed protocol options and cipher suites in TLS clusters throughout Control

1.0.2 (October 16, 2019)


  • Fixed build using older pin of gm-control-api

1.0.0 (October 15, 2019)

Version 1.0 Release


  • Added and enhanced documentation for all features


  • Fixed Kubernetes discovery plugin tests where results were inconsistent based on cluster order

0.5.1 (September 10th, 2019)


  • Lowered log levels for less significant logs to enhance debugging and performance


  • Fixed polling in Kubernetes discovery plugin for receiving future pod updates for each namespace

0.5.0 (September 5th, 2019)


  • Kubernetes discovery plugin now has the ability to watch multiple namespaces across a k8s cluster (enables service segregation)


  • Kubernetes plugin now accepts a comma delimited list of namespaces to watch GM_CONTROL_KUBERNETES_NAMESPACES

  • Set resolving DNS default to true (gm-control auto resolves docker hostnames)

  • No longer add an endpoint if it fails to poll


  • Fixed old tests that were breaking with instance polling

0.4.0 (August 29th, 2019)


  • Added Envoy's RBAC filter support for the HTTP connection manager in listener objects


  • Changed gm-control-api import paths by removing the nest /api


  • SNI being overwritten when setting cluster certs or secrets

  • Removed envoy config deprecation warnings by moving to gogo/protobuf

0.3.1 (August 16th, 2019)


  • Set custom headers from Domains

  • Pinned gm-control-api/api to v0.7.1

0.3.0 (August 13th, 2019)


  • Ingress secrets now reside in the Listener object

  • Pinned gm-control-api/api to v0.7.0

0.2.2 (August 13th, 2019)


  • Removed forced SNI in listener domain

  • Modified multi-line logs to single-line


  • Missing artifacts in tarbal

0.2.0 (August 7th, 2019)


  • Updated gm-control-api/api to v0.6.0


  • Fixed diffing algorithm zeroing fields when applying instance patches to clusters

0.1.0 (August 5th, 2019)


  • Added support for Envoy's Aggregate Discovery Service

  • Support for route prefix rewriting

  • Secrets in Cluster objects

  • Secrets in Proxy objects

  • mTLS and CA specification in domains

  • Cluster cert/key pairs


  • Updated go-control-plane to v0.8.3

  • Updated gm-control-api/api to v0.5.0

  • Access logs now go to stdout as well as the rpc server


  • Fixed xds_cluster name

  • gm-control dying if gm-control-api does not exist



  • Support for various linux based containers

  • go modules


  • dep


6.0.2 (September 28, 2022)

This is a security fix release.


  • Added a persistence layer that supports SQLite or Postgres

  • Added basic (username/password) authentication flow

  • Added email confirmation workflow during user registration

  • Added new mix task cli.register to auto-register a user on app start

  • Added RUN_DATABASE_MIGRATIONS env var to opt-in running migrations on app startup

  • Added logic to request CLI token via NATS request to Control

  • Added ability for users to resend confirmation emails



    • Alpine images updated to mitigate container security vulnerabilities

    6.0.0 (November 23, 2021)


    6.0.0-rc.3 (November 16, 2021)


    • inline documentation not rendering plaintext OpenAPISpec (#3986) (19eb4e8)

    6.0.0-rc.2 (September 24, 2021)


    6.0.0-rc.1 (September 3, 2021)



    5.1.1 (July 21, 2021)


    5.1.0 (July 9, 2021)



    5.0.0 (June 23, 2021)



    5.0.0-rc.1 (May 18, 2021)

    This release requires v2.0.0 (or greater) of gm-catalog and gm-slo. For more information on enabling features marked as "EXPERIMENTAL", refer to the README.



    • display active filters regardless of whether active_http_filters or active_network_filters use dot or underscore as the delimiter (#3884) (6d62074)

    • config pane now renders selected service (685ad77)

    • ignore defaults in url state (c4bf503)

    4.0.2 (January 13, 2021)


    • Selected listener filter moved to URL state (#3804) (53d1c4f)

    • Bump axios from 0.18.1 to 0.21.1 (8cb0314)

    4.0.1 (December 16, 2020)


    4.0.0 (October 20, 2020)



    3.4.2 (June 2, 2020)



    3.4.1 (May 14, 2020)



    • 3483 high cardinality (#3571) (7c8ea0d), closes #3568

    • 3484 authorized users (#3519) (6197996)

    • accepting array as prop type to configuration section (#3569) (d7648d8)

    • add forever@2.0.0 to resolve braces security alert (7f0886c)

    • remove cause of floating footer in safari (#3535) (22749e8)

    • remove cause of squishing panel items in config pane (#3534) (9ef8702)

    • reset page number when new service is clicked (#3513) (4d8debb)

    • security alerts (1fd8bc8)

    • tooltip rendering like others in toolbar (e993fb4)

    • update minimist version (8f7d71c)

    • updated versions of sub packages (bc4ea27)

    3.4.0 (April 6, 2020)



    3.3.2 (March 13, 2020)


    • add getPreferredColorScheme (53e693d)

    • add slight border between appheader and app in dark mode (1eebae9)

    • add toggle (65c0609)

    • add tooltip to toggle (713eb02)

    • card footer icons use more consistent style (98066fd)

    • fix internal links and services list (f8cba94)

    • improved color for the configuration pane (585c3ae)

    • improved service cards styling (b55e019)

    • initial fixes for some card styles (8799d99)

    • minor improvement to nav tabs alingment (49acd6b)

    • minor polish to explorer (0181be1)

    • minor polish to service view cards (d36e124)

    • minor polish to victorycharts (f2be1d2)

    • minor tweak to select box backgrounds (03a2f57)

    • modify local theme (d81b7d4)

    • polished service view cards (f6ffb45)

    • sense suggestion buttons use light mode for better contrast (3cf126e)

    • tweaking dark theme line styles for better contrast (737b24b)

    • use default border colors for tooltips (76269a2)

    • use different background for config pane (71be21f)

    • use non-solid border colors for select boxes (20a57db)


    3.3.1 (January 23, 2020)


    3.3.0 (January 17, 2020)



    3.2.0 (November 1, 2019)



    3.1.0 (August 16, 2019)



    3.0.0 (July 25, 2019)


    • Control plane integration with gm-control, gm-catalog, and oldtown APIs

    • Service configuration with new slide-out panel

    • SLO configuration re-design, moved to configuration slide-out panel

    • Business Impact re-design, moved to configuration slide-out panel

    • Integrated gm-ui-components@1.0 with new theme, icons, and design polish


    2.5.4 (May 24, 2019)


    • fetch prom metrics even if fetchObjectives fails (#3036) (f1e013e)

    • remove margins from line chart toolbar (#3032) (8b8b744)

    2.5.3 (May 17, 2019)


    2.5.2 (May 10, 2019)



    2.5.1 (May 3, 2019)



    2.5.0 (April 10, 2019)



    2.4.6 (February 14, 2019)


    • fix sorting of gm-catalog services (f923f85)

    2.4.5 (February 12, 2019)


    • bug when setting thresholds on charts with no data (#2764) (bbb4495)

    • comment out RouteLatencyChart header val and update tooltip (e3b83f0)

    2.4.4 (February 11, 2019)



    2.4.3 (February 5, 2019)


    2.4.2 (February 4, 2019)


    2.4.1 (January 28, 2019)



    2.4.0 (December 14, 2018)


    • brighter card colors (3947a26)

    • stronger colors for fabric card states (aa34b41)

    2.3.0 (December 12, 2018)



    2.2.0 (November 30, 2018)



    2.1.0 (November 2, 2018)


    • allow customers to disable external footer links (3ed5fa2)

    • extract env variable and template env vars in dev (9249abf)

    • normalize runtime string (63e5761)

    • objectives form feedback (#2474) (936e527)

    • optinally link to changelog docs (accdf08)

    • show vertical line on data point and update tooltip text (#2483) (2deabdd)

    • update to gm-ui-components@0.7.0 (#2463) (21dfea6)


    2.0.0 (October 11, 2018)


    • wire up sla service updates (#2199) (9ddbf8b)

    • 2165 route cards tooltips (#2272) (e36f092)

    • add badges and fix memory queries (ed81737)

    • add error rate warning and violation thresholds (#2298) (b619f12)

    • add Icons to service view (5addde8)

    • add latency SLOs for routes and aggregate (#2301) (3fbdcd4)

    • add thresholds to CPU utilization chart (#2319) (49fac3c)

    • add thresholds to routes error rate chart (#2314) (eb141d2)

    • add warning threshold lines to request rate chart (#2290) (f62244e)

    • additional time range options (29443a1)

    • adds icons to SLO table and form (#2225) (783f96c)

    • better error readout colors (#2400) (5d93959)

    • chart tooltips (#2334) (5fb0dae)

    • discover prometheus job via discovery service (4575d80)

    • first pass wiring up SLO cards (6cdd0f4)

    • implement availability and uptime (67f86d6)

    • implement Card and ListCard (b9ae978)

    • implement client-side tools to compose Prometheus results (016d218)

    • implement initial pass of time controls and dynamic promql charts (d55fb1f)

    • implement request rate and error rate charts (2d6f55a)

    • implement service routes table (480a6ae)

    • initial implementation of aggregate slo table components (#2188) (20dbe7a)

    • initial implementation of ListCard (8cee13f)

    • initial implementation of promql utils (b5ab183)

    • initial implementation of violation badge logic (a887704)

    • initial pass at ServiceViewLineChartCart (493d340)

    • initial render of PromQL data on chart (1712c81)

    • internationalized Uptime (8b7da41)

    • latency on summary, request and error rates on routes (fa9788b)

    • load first series thresholds (#2324) (d3e3c7a)

    • multi line thresholds (#2302) (910d869)

    • new SLO form (#2194) (28360ef)

    • override axios error throwing to log Prometheus error messages (d3c3cb0)

    • refactor chart legend (#2410) (b2b986f)

    • render threholds on mem utilization chart (#2308) (e413164)

    • render violations on chart (#2297) (b462150)

    • request rate threshold (#2285) (e20f8ee)

    • rewrite prometheus query logic (ca91c85)

    • show contiguous groupings of threshold spikes (#2295) (423e472)

    • SLO form validation UX (#2240) (ac44e7f)

    • SLO routes table (#2243) (1751222)

    • start of work to fetch prom data (d95b4ee)

    • switch positions of routes table and usage charts in summary view (#2413) (439ba4f)

    • total count of aggregate slo violations (8e060d4)

    • use sensible select values; automatically select single values (d740f45)

    • wire up highest and lowest latency charts (b83205f)

    • wire up mem and cpu and refactor our charts (#2281) (b9b7034)

    • wire up most and least used routes (793a576)


    • fix: use div instead of react.fragment as chart wrapper(0540746)

    • 2263 zero sla values (#2269) (3a957f8)

    • add sw popup control (#2407) (55d9c44)

    • address console log errors (6182394)

    • correct bugs on service instance view (#2306) (8c41a26)

    • correct getNonZeroDataInTimeRange from filtering out good data (58db7ad)

    • correct misnamed section (84509c8)

    • correct PromQL queries for violations (32e606d)

    • correct TimePicker snapshot (bce498d)

    • defensive coding when Prometheus is down (#2328) (758ecdf)

    • defensively code around prometheus results (fdbd98d)

    • disable set to rolling on mount (477b031)

    • display average value of of timeseries in chart headers (63d5c02)

    • filter zero timeseries and set default domain (#2401) (d000e3a)

    • fix p95 chart (#2362) (263c5e4)

    • form validation (#2384) (db66e70)

    • improve logic for setting timeStart and timeEnd on view load (93cd3e8)

    • lazy load settings view following fix of Webpack bundling issue (#2189) (24a904b)

    • make bodyHeight always a string (b001fcd)

    • match values to unit and limit to one decimal point (2e0379e)

    • modify start_time to startTime to match discovery service (49254e7)

    • multi-line chart auto-select (#2374) (94e9949)

    • omit warningThreshold from POST body if no value has been set (#2405) (dc35a2c)

    • only fetch thread metrics when threaded is true (#2389) (2ebed91)

    • only render a single multi chart line at a time (bbe96ac)

    • pass hasNestedCollapse to proper component (10300a9)

    • remove ability to clear and search select (0567e70)

    • resolve PromQuery charts not loading on app start (c3bd5c1)

    • resolve React console warnings (e34da93)

    • routes service view card (#2266) (a93efe4)

    • service routes view table filter (#2279) (ad984cf)

    • shallow render for SettingsView snapshot (7981ef1)

    • show top val in table too (06576a7)

    • SLO configuration view loading bug (#2181) (fae5543)

    • smooth accordion animation by setting hasNestedCollapse prop (#2271) (7b6313c)

    • support alternate operator direction on chart overlay (1a87928)

    • title undefined (#2300) (0a41326)

    • update regex in generateGithubDraft (#2388) (7313f8c)

    • update RoutesObjectives following PromQuery refactor (#2284) (513e305)

    • uptime component (#2387) (5012c8b)

    • use camel case prometheusJob key (f386997)

    • when selected service changes then fetch objectives via Jumpstate (#2360) (9a7e053)

    • wipe service worker if appConfig request fails. (#2359) (851ba74)

    1.2.0 (October 1, 2018)



    1.1.8 (August 2, 2018)


    • fix bug that caused USE_SERVICE_WORKER environment variable to always evaluate to true (00753fa)

    1.1.7 (July 31, 2018)



    • disable lazy loading of SettingsView (1253302)

    • do not force redirect in SPA when actual microservice instance being monitored goes down (#2017) (8609eb3)

    • explorer responsiveness (#2046) (2b48dd1)

    • give charts more height on smaller viewports (#2073) (150a1b2)

    • memoize on name-version and hug version against status icon (#2139) (51db49e)

    • NaN on instance dashboard summary readouts in spanish/german (#2069) (849cb81)

    • only template if environment variable is passed to Node process (2944b25)

    • rename index files and exclude them from test coverage (#1982) (2edc521)

    • vertical align (#2078) (ffb522a)

    1.1.6 (June 7, 2018)


    • do not normalize Owner headers in Fabric View (aed09b3)

    1.1.5 (May 7, 2018)


    • show loading states when waiting for API responses (#1848) (bbf2967)

    1.1.4 (May 1, 2018)



    1.1.3 (April 6, 2018)



    1.1.2 (March 27, 2018)


    1.1.1 (March 27, 2018)



    • adjust color of a running service card to be a bit less green (#1719) (5f749e3)

    • fix checker is not a function proptype error (#1712) (bdd16da)

    • correct orientation of linechart error message (#1704) (1a9eb6c)

    • hide sort by status when group by status is selected (#1713) (a19717e)

    • restore e2e tests following summary cards refactor (#1728) (19b205f)

    1.1.0 (March 8, 2018)



    1.0.6 (February 22, 2018)



    • ⚙️   fix instance polling in settings (#1505) (3cef656)

    1.0.5 (February 10, 2018)



    1.0.4 (January 16, 2018)


    • allow users to access service view for service with no metrics (#1360) (57d9f1a)

    • make react select searchable (#645) (0ffcd22)

    • add Storybook stories for Table(#1278) (e393fa1), notfounderror(#645) (0ffcd22), and layoutsection (#1288) (cff948b)

    • add unit tests for AppHeader, Uptime, dygraph utils, Button, Notification, Selectors, Loading, Glyph, DygraphWrapper, InstanceView

    • Add copyright text and update footer responsiveness behavior (#1342) (1084a27)

    • Deleted functionality to run without a discovery-service instance

    • Cleaned up our README and other docs

    • Updated dependencies

    • modify our CircleCI behavior to filter branches (#1335) (cac5b21) and run with Circle CI 2.0 workflows

    • lint commit msgs and automate changelog (#1340) (85e2051)

    • Simplify the dev workflow. Now just run npm start and get coding!


    1.0.3 (December 14, 2017)


    • Added a user guide

    • Added styled-component tests

    • Added support for Storyshot testing

    • Created a reusable Table component


    • Improved JVM Threads view with sorting and grouping options

    • Refactored all remaining SCSS logic into styled-components

    • Fixed bugs in IE11, Edge, and Safari 10.1

    • Improved modal accessibility

    • Updated dependencies


    • Removed SCSS tooling

    • Removed UIKit

    1.0.2 (December 4, 2017)


    • Added more unit tests

    • Added PropType shapes as nested PropTypes validation

    • Added a skeleton for a user guide


    • Refactor filenames and imports to be search-friendly

    • Refactored SCSS files into Styled Components

    • Fixed bugs in IE11 and Safari 10.1

    • Improved visual interaction without affecting accessibility features


    • Removed SCSS stylesheets

    1.0.1 (November 22, 2017)


    • Added more unit tests

    • Updated build version of Node to 8.x LTS

    • Moved form styles into a styled-component


    • Updated status icons in JVM service instance threads table

    • Fixed various IE11 issues

    • Fixed keyboard tab navigation in Firefox 52 (ESR)

    • Fixed service view sort case sensitivity

    • Fixed toggle asc/desc order in Service view

    • Improved handling of metrics keys


    • Removed form SASS styles

    1.0.0 (November 16, 2017)


    • New styles for modals and notification

    • Added more unit tests

    • Implemented code splitting at the route level


    • Updated npm dependencies

    • Updated README with demo

    • Updated error text and bar colors

    • Updated publish script

    • Added auto restart to docker image


    • Removed sourcemaps from production bundle

    0.9.1 (November 9, 2017)


    • Implemented a new custom icon system

    • Added more unit tests for utility functions

    • Improved user experience for invalid services and service instances


    • Fixed spaces in service names in url bar

    • Increased net change calculations to three decimal points

    • App Header in Service View now has a tab

    • Updated appearance for polling settings

    • Refactored SCSS into Styled Components

    • Fixed various cross-browser issues


    • Removed all UIKit icons

    • Removed jQuery

    0.9.0 (November 3, 2017)


    • New App Header Nav

    • Improved keyboard nav support

    • Improved use of ARIA tags

    • Added HTTP verb to JVM routes dashboard

    • Serving JS bundle with gzip compression

    • Added detail icons to Fabric Card View

    • Added Enzympe tests using Jest Snapshots


    • Implemented support for new gm-fabric-go process memory utilization metrics

    • Updated npm dependencies

    • Fixed various IE11 issues

    • Refactored SCSS into Styled Components

    • Storybook stories now live alongside the components they cover

    • Began refactoring UIKit icons to a new custom Icon system


    • Removed old sidebar components

    • Removed scss stylesheets

    0.8.1 (October 30, 2017)


    • Color coded error rates

    • Added HTTP verb to JVM routes dashboard


    • Implemented support for new discovery-service API

    • Updated npm dependencies

    • New HTTP verb label component

    • Refactored SCSS into Styled Components


    • Removed gradients to improved Fabric dashboard performance with 150+ cards

    • Removed scss stylesheets

    0.8.0 (October 26, 2017)


    • Fabric Dashboard controls now route driven

    • Added routes visualization to Go dashboards


    • Various IE11 fixes

    • Modified mock-sds to be dynamic

    • Refactored SCSS into Styled Components

    • Updated Docs

    • Fixed spelling errors

    • Replaced Mathjs with smaller tool


    • Removed scss stylesheets

    0.7.1 (October 18, 2017)


    • Implemented a service dashboard, which currently only is used to navigate to microservice instance dashboards.

    • Linked the fabric dashboard nav elements to the new service dashboards


    • Increased uptime precision

    • General keyboard and a11y improvements, including a link to skip to main content

    • Fixed group by capability and group by owner bugs


    • Removed scss stylesheets that have been decomposed into styled-components

    0.7.0 (October 12, 2017)


    • App renders cleanly on IE11. Hooray for the Enterprise!

    • App is navigable by keyboard

    • Services landing page now has a route driven search

    • New Publish script simplifies Docker deployment process


    • Massive bug bash. Greater stability throughout the app

    • Further internal refactoring from SCSS towards Styled-Components

    • Updated dependencies

    0.6.0 (October 3, 2017)


    • Added support for polling of groups from the "Fabric Server" discovery service

    • Implemented Phase 0 Services view, including searching and filtering

    • Implemented an interim solution for selection of instances from the table view.

    • Added unit tests for trimID

    • Improved in-line comments throughout the app

    • Created production-ready Docker image to facilitate new Docker-based deployment process.


    • Implemented React Storybook for development of UI components in isolation from the larger app

    • Began process of refactoring sass into Styled-Components based React components

    • Updated dependencies, including React 16.0 and Enzyme 3.

    0.5.0 (September 15, 2017)


    • Improved dashboard support for the gm-fabric-go microservice metrics API

    • Added support for backed "Fabrics Server" discovery service support behind a flag. This includes UI components and routing to allow a single dashboard to monitor a fabric of microservices.

    • Added interim Docker container tooling for the dev pipeline. This will be improved in the future.


    • Disabled local storage persistence of dashboards pending further work on dashboard customization tools

    • External Web fonts are new embedded into the app to render in environments with no Internet connectivity

    • Fixed URL import support in sass files, inlcuding mesh image in sidebar footer

    • Reorganized source files according to runtime and responsibility

    0.4.0 (September 8, 2017)


    • Experimental support for gm-fabric-go microservices


    • Updated dependencies

    • Simplified use of Webpack Dev Server proxy

    • Substantial internal refactoring to separate out runtime-specific components into modules

    0.3.3 (September 1, 2017)


    • Minor style changes

    • Updated dependencies

    0.3.2 (August 23, 2017)


    • Improved style and responsiveness


    • Refactored AJAX web worker for improved error handling

    • Improvement deployment process to help us prepare for new features

    • Improved use of History API by Explorer component

    0.3.1 (August 18, 2017)


    • Colors! The app now has sass through the use of sophisticated SCSS mixins and functions. This is implemented on the Summary page and provides us a strong foundation for expanded use of colors in the future.

    • Created a new Inspector element for the explorer view that is React Fiber ready and allows faster searching across a large corpus of metrics. Search time has gone from ~3 seconds to near instant.

    • The Explorer is now route driven to allow users to send each other specific views by copy/pasting the URL.

    • The edge port now properly shows 443 or 80 depending on if TLS is used.

    • Large numbers are not styled appropriately based on operating system and browser locale settings. For example, this means that one thousand point one is 1,000.1 in the US and 1.000,1 in Germany.


    • Modified Webpack config to use prepacked UglifyJS

    • Improved the mock GM-Fabric-JVM endpoint, including fixing the threads endpoint, adding a single randomized element to ensure that the threads components were dynamically updating as expected, and providing a means to simulate a microservice not reporting any known HTTP/HTTPS routes

    • Updated numerous dependencies. Most significantly, this including updating to React 16.0.0-beta.5 to allow us a means to troubleshoot UI components that are incompatible with the new React Fiber architecture.


    • Removed dependencies on JSON-Inspector and UglifyJS

    0.3.0 (August 10, 2017)


    • Significant amounts of UX polish

    • Added footer

    • Back button in sidebar can now be configured to point to a target URL via the backButtonUrl head attribute

    • Added numerous heads-up vitals to the summary component


    • Fixed a Local Storage Bug

    • Significantly changed the routes component to make it easier to diagnose issues and dive in for a closer look

    • Set the default polling rate to 5 seconds

    • Changed the default runtime to JVM, as this is the only currently supported runtime


    • Although moving and resizing grids was pretty cool, this functionality has been disabled until we have further enhanced the tools to create, edit, and delete dashboards, including defining new charts.

    0.2.1 (August 4, 2017)


    • Implemented Prettier for CSS

    • Added Dygraphs, Worker-Loader, PromiseWorker, node-sass, sass-loader


    • Modified Graphite and other components in docker-compose infrastructure

    • Ejected from Create React App

    • Updated WebPack to 3.x and a bunch of other minor point releases

    • Refactored stylesheet source from from less to scss

    • Reimplemented LineChart using dygraphs

    • Reimplemented AJAX and LocalStorage functionality as Web Workers

    • Substantially refactored utils to use the simpler native dygraph structure

    • Set nav cards to open by default if drawer exists

    • Fall back to Hash History to preserve JS source maps.


    • Removed Prometheus from docker-compose infrastructure

    • Removed Stylelint, Recharts

    0.2.0 (January 28, 2017)


    • Added preliminary docker-compose infrastructure for developing against Envoy and a timeseries database

    • Added breadcrumbs and a new bar at the top of the main view

    • Added summary and instance links (currently mocked out) at the top of the new sidebar


    • Replaced horizontal nav with vertical sidebar style nav

    • Nav cards now place metrics and sparklines in a drawer that can be collapsed or opened

    • Nav cards now can render icons from UIKit 3

    • Moved settings to an icon at the new bar at the top of the main view

    • Restored active nav highlighting regression introduced by React Router v4 update

    • Updated README with new information about use of Docker during development

    0.1.1 (July 21, 2017)


    • Added Prettier with default settings, refactored all source JS code, and set a pre-commit hook for Prettier and stylelint

    • Add text to README about a workaround if Jest fails test unexpectedly


    • Updated the CircleCI config to follow version 2 standards

    • Changed from jest-junit-reporter to jest-junit an alternate junior formatter for Jest test results

    • Changed the production build process and tooling to fix issues with deep React Router routes interfering with JS bundle loading

    • Updated react-scripts to 1.0.10

    • Resolved outstanding ESLINT errors


    • Removed static React components built for Grey Matter Fabric Go microservices

    • Removed ESLint rules that are now handled by Prettier

    0.1.0 (July 18, 2017)


    • Generated app using Create React App, adding Redux, React-Redux, React-Router, Jumpstate, UIKit 3, Recharts, Sparklines, less, stylelint

    • Added scraper to ingest metrics from a Finagle metrics.json file complete with user configurable period.

    • Created various utility functions to manipulate timeseries data.

    • Created a system for generating dashboards from state persisted as JSON

    • Created a general purpose grid system that allows resize-able drag-and-dropable chart

    • Created a handful of generate purpose charts

    • Created hand-crafted charts and dashboards for summary metrics, routes, and stack traces

    • Created a general-purpose Explorer that displays a line chart for any arbitrary metric

    • Wrote several unit tests

    • Created a CircleCI CI pipeline with JUNIT reporting and Istanbul code coverage reporting

    • Created BASH deployment scripts that allow for nesting in a deep route

    • Wrote a README explaining how to use the dashboard


    1.7.0 (November 24, 2021)

    This release collects the fixes and changes of the 1.7.0 release candidates.


    • CircleCI builds are removed. Prefer Buildkite.

    1.7.0-rc.4 (October 15, 2021)


    • Check for authn cookie regardless of USER_DN

    1.7.0-rc.3 (October 7, 2021)


    • Support for refresh tokens in oidc-authentication filter

    1.7.0-rc.2 (September 29, 2021)


    • Store access token in correct authn variable

    1.7.0-rc.1 (September 8, 2021)


    • Release containers are created from Dockerfiles generated by ./scripts/cibuild

    • Add one way TLS support for gm-oidc-validation filter

    • gm.keycloak filter looks for incomingUserDN in cookie if not found in header

    • Inject randomly-generated nodeid into static config


    • Ensure curl is installed in release containers

    • gm.keycloak filter support for checking RSA certs

    1.6.3 (July 16, 2021)


    • Update Envoy build to 1.16.4

    • Update GO Version to 1.15.5

    • Update Bazel to 4.0.0

    • Update bazel_skylib to 1.0.3

    • Update gazelle to 0.23.0

    • Removed separate build image base


    • Concurrent map write bug in matrix code should be fixed.



    • When the metrics filter is enabled, it can now scrape itself periodically and send timestamped metrics to a "metrics receiver" pub-sub channel controlled by a new metrics_receiver config parameter. Currently supports Redis and NATS, with others to follow.

    • Exposed envoy bindings for proxy localInfo to get nodeid and cluster name

    • Added timestamp comment to metrics content, e.g. # TIME 1622836887

    • Add policy http filter for request/response allow/deny via rego and OPA.


    • Update Envoy build to 1.16.4

    • Update GO Version to 1.15.5


    • Fixed concurrent map read and write bug in stats implementation


    • Remove Zookeeper features: announcement, health checks, gm-config file

    • Remove istio from the build



    • JWT Security TCP filter

    • Observables network filter (support for Kafka and file storage)

    • Replaced deciphernow with greymatter-io in go imports, docs, and build files.

    • Metrics TCP filter (with experimental support for Kafka)

    • TCP logger filter

    • JWT Keycloak filter

    • Exposed envoy bindings for and added HTTP & TCP metrics to /stats admin endpoint


    • Blacklist and whitelist terms changed to allow list and deny list

    • Clean up logging and version output

    • Added a direct means for copying/adding all headers from one header map to another.

    • Default Go toolchain is now the BoringSSL fork. Unofficial, but maintained by the core team.

    • network filters renamed as<filtername>

    • HTTP Observables EventChain field will now be populate with all eventIDs in the HTTP transaction chain

    • tcp and http metrics filters have path defaults and allow turning off the server

    • HTTP Observables now detect websocket upgrades and emit observables on every websocket frame.


    • Use interface types in header map constructors

    • Fixed a bug where some header values were not being copied completely (e.g. only one cookie could be set via the Set-Cookie header).

    • Fixed crash on setting headers in Decoder filter routines

    • Fixed memory leak of header map objects

    • Bazel configuration: test size set explicitly to prevent test warnings and errors

    • Avoid nil pointer dereference in oidc-validation filter

    • Jwt filter defaulting to 0 timeout and no cache

    • Fixed handling of setting duplicated headers, refactor header map handling

    1.5.0 (October 20, 2020)


    • Configuration options for jwt filter token cache

    • Per route filter configuration options for gm filters

    • REST support

    • TCP and UDP network filter ability


    • Moved to envoy version 1.15.1


    • HTTP2 protocol options for trace template

    1.4.4 (July 15th, 2020)


    • JWT-Security filter cache now respects token expiration, limit max cache size

    1.4.3 (July 6th, 2020)


    • Support for FIPS compliant build


    • Moved to envoy version 1.13.3


    • Fixed envoy deprecation warning on cluster hosts

    • Fixed cookie path default to /

    1.4.2 (June 9th, 2020)


    • Moved envoy build to 1.13.2 to address CVE-2020-11080

    1.4.1 (June 3rd, 2020)


    • Support Go version 1.14.3


    • Addressed segfault resulting from combination of RBAC and observables

    • Addressed segfault from --help flag

    1.4.0 (May 6th, 2020)


    • Support tracing drivers for Instana, OpenCensus, Datadog, and Lightstep


    • Use 'depth' as the default for the metrics key function

    1.3.0 (April 14th, 2020)


    • Integration tests for proxy static configuration


    • Moved to Envoy Version 1.13.1

    • Changed protobuf dependency back to golang/protobuf to align with go-control-plane v0.9.4


    • Fixed broken CI builds when testing against a stable release that isn't dev

    1.2.2 (March 27, 2020)


    • Jwt filter supports retries, timeouts, and caching of tokens


    • Listener drain time lowered to 20 seconds from 10 minutes


    • Safer handling of header maps

    1.2.1 (March 25, 2020)


    • Updated spelling of struct for gm.jwt-security filter

    • Check for nil pointer reference in Observables filter

    • Improve logger filter initialization to avoid segmentation fault

    1.2 (March 10, 2020)


    • Trace config support

    • Admin endpoint can now be configured and disabled through environment variables at startup

    • Filters now support per-route metadata and configurations

    • gm.oidc-authentication filter

    • gm.oidc-validation filter

    • gm.ensure-variables filter

    • gm.jwt-security filter


    • Inheaders filter will now return 403 if certificates are not present


    • Observables TLS and mTLS support now working properly

    • Filters no longer dropping T and ST in USER_DN fields

    • Removed frame when outputting observables to file that created invalid json


    • None

    1.1.1 (November 14th, 2019)


    • enabled TLS within the underlying Kafka client when configured via the filter

    1.1.0 (November 4th, 2019)


    • Added the ability to encrypt observable objects using AES GCM compliant encryption methods

    • Added ability to upgrade connections to Websockets

    • Added support for TLS communication to Kafka when emitting observables

    • Added support for TLS communication when using GM Control and xDS


    • Now allowed to specify a zone in our static templates


    • Fixed stdout observables polluting logs

    1.0.0 (October 15, 2019)

    Version 1.0 Release


    • allow configurable logging levels for observables filter #534

    • allow observables filter to write to a configurable file system or device #534


    • fixed observables filter failure to log full request body #528

    • fixed observables maximum retries for enforcing audits to lower value #532

    0.9.1 (September 4th, 2019)


    • fixed proxy failures when accessing admin endpoint caused by filter descriptors #524

    0.9.0 (August 29th, 2019)


    • Fixed envoy config deprecation warnings by moving to gogo/protobuf

    0.8.2 (August 21st, 2019)


    • Initial OpenID filter #467


    • retain option for legacy support of announcing to gm-xds #511

    • performance and memory fixes for observables filter #503

    0.8.1 (August 14th, 2019)


    • bindings: add logging facility for filters (#497)

    • Spire MTLS (#470)

    • add pprof (#464)


    • use id, cluster, region more appropriately (#434)

    • Make metrics filter reentrant (#499)

    • Update oauth filter stub (#496)

    • Receive metrics filter configuration fully through envoy (#492)

    • Configure observables filter from Envoy config only (#485)

    0.8.0 (July 19th, 2019)


    • Allow configuration of Web Sockets

    • Allow configuration of SDS and SPIRE

    • TCP health checks on service

    • X-Forwarded-For added to Observables GEM


    • Observable topic and Kafka topic can now be set independently


    • INHEADERS filter should omit EXTERNAL_SYS_DN if empty

    • OBSERVABLES filter data buffering errors

    0.7.2 (May 3rd, 2019)


    • Regex matching to OAuth filter for domain assertion

    • Environment variables for Envoy admin path, address, and port


    • Access to private repositories via Docker SSH forwarding during build process

    0.7.1 (April 10th, 2019)


    • Fixed segfault when Observables attempt to emit and the service in unresponsive

    0.7.0 (April 8th, 2019)


    • Upgraded istio to 1.12.0

    • Integrated Envoy security fixes in 1.10

    0.6.4 (March 19 2019)


    • Set timeout durations


    • Observables filter topic

    • Accept HTTP2 by default

    0.6.3 (February 20 2019)


    • Remove ZK* from SERVICE_HOST and SERVICE_PORT

    0.6.2 (February 15 2019)


    • Fixed conflicting package names in filter protobuf stubs

    0.6.1 (February 15 2019)


    • filter config support through ZX/xDS


    • Observables Omit Full Response won't panic and fail

    0.6.0 (February 1 2019)


    • depth' key function in the metrics filter

    • IP Address headers in inheaders filter


    • Switched announcement to new discovery package


    • update template to use STRICT_DNS

    0.5.4 (February 1 2019)


    • dynamic announcement template



      • fix HeaderMap.Replace - this should address some impersonation issues with DN

      0.5.2 (January 21 2019)


      • filter inheaders: ingress impersonation headers


      • non-root docker images


      • Report metrics HTTP status correctly

      • force the net package to use native go over cgo

      0.5.1 (January 9 2019)




          • Use gm-fabric-go 0.3.0 (in place of 0.2.0) to fix metrics bug

          0.5.0 (December 6th, 2018)


          • Integration with Istio

          • Additional Envoy filter bindings


          • Use Alpine as default docker image base

          • Add -ubuntu and -alpine docker images


          • Bug in Envoy config template when setting Egress TLS certs from environment variables

          • Header propagation in ACL filter is now functional

          0.4.1 (October 11th, 2018)


          • Set bazel build memory limit in CI pipeline

          0.4.0 (October 11th, 2018)


          • TLS communication with proxied service

          • Alpine docker container

          • Configuration option for envoy DNS resolution


          • Revamped CI process

          • Defaults in config template


          • Zookeeper announcement with blank string

          • Kafka direct connection not retrying when failed

          • Template boolean logic

          • 426 HTTP error code when proxying HTTP 1.0

          0.3.0 (September 26th, 2018)


          • Prometheus support for metrics

          • Cloudwatch support for metrics

          • Emitting Observables to Kafka

          • Add option to host metrics endpoints behind TLS

          • Add setting envoy and configs from base64 encoded env vars

          0.2.0 (September 7th, 2018)


          • GM Fabric Go SDK Metrics

          • Zookeeper metrics announcement

          • Full support for GM Fabric Dashboard


          • Exposed new header information in Envoy go bindings

          0.1.0 (August 29th, 2018)


          • Base observables structure

          • CI/CD integration


          • Exposed more request information the Go Bindings


          • Mac OS Build

          0.0.1 (Beginning of Time)


          • Zookeeper announcement structure

          • ACL Impersonation filter


          3.0.0 (December 10 2021)


          • Initial GraphQL schema and boilerplate

          • Wired up ElasticSearch to GraphQL server

          3.0.0-rc.3 (September 23 2021)


          • Support for exponential backoff retries for connecting to metrics receivers


          • Addressed regression where old Redis environment variables were being overlooked in favor of a REDIS_URL environment variable

          3.0.0-rc.2 (September 17 2021)


          • Deprecated CONFIG_SOURCE environment variable in favor of using Redis by default if configured

          3.0.0-rc.1 (September 10 2021)


          • Metrics extension for subscribing to metrics snapshots to compute and report service health

          • Anomalies, feedback, pause, retrain, and threshold passthroughs for LAD extension


          • Generate all documentation files in development and commit to repo using Git hook

          2.0.0 (May 18 2021)


          • Support for Istio mesh service discovery

          • Reporting of instance health statuses, including non-responsive instances

          • Expose all instance metadata reported from xDS, including the instance address

          • Extensions per mesh for data aggregation from various services (e.g. LAD)

          • Labeling of mesh assets with arbitrary key-value pairs

          • Ability to seed initial data via configured JSON or YAML file

          • Enable building with BoringSSL by setting ENABLE_BORINGSSL=1


          • Updated catalog structure to support multi-zone in multi-mesh

          • Generalized API to support multiple mesh types (e.g. Istio)

          • Updated API fields to use snake case over camel case formatting

          • Support consuming xDS v3 resources from Control

          • Make configuring a specific discovery cluster (i.e. edge) optional

          1.2.2 (December 2 2020)


          • Bug causing main thread to block when updating an existing xDS server configuration

          • Validates incoming server configuration data coming from persisters (e.g. Redis)

          1.2.1 (November 30 2020)


          • API cluster response bodies always include deprecated meshID and clusterID fields

          • OpenAPI specification documents required request body types

          • OpenAPI specification documents the following deprecated endpoints and fields:

            • Services and instance hash metrics endpoints
            • Summary meshes field
            • Cluster meshID, clusterID, metricsTemplate fields

          1.2.0 (November 20 2020)


          • Enhanced xDS server configurations to make TLS connections

          • Added ability to dynamically set log level

          • Added ability to analyze performance with pprof

          1.1.0 (November 5 2020)


          • Add Redis as the configuration store for the data model to enable scaling the service

          • Add enum field businessImpact to Cluster for rating a service's business impact

          • Add read-only enum field status to Cluster, computed from minimum/maximum requirements for running instances

          • Add read-only field protocols to Cluster, retrieved from an xDS server

          • Add Cluster template for each Zone, retrievable and editable via /zones/{zoneName}/template

          • Add descriptive metadata fields to Zone and Cluster


          • Expand PUT /zones handler to modify xDS server configurations in Zone objects

          • Update API responses to return the object created, modified, or deleted

          • Upgrade Swagger to OpenAPI specification with ReDoc UI


          • Include Allow header in responses with a 405 Method Not Allowed status

          • Prevent unnecessary resetting of instance data when updating instance metrics availability

          • Remove ResponseNonce field from initial DiscoveryRequest to xDS server

          1.0.7 (May 27 2020)


          • Package swagger UI file in with binary


          • Address memory leak caused by periodic reset of xDS stream

          • Prevent overwriting recently updated services stored in gm-data

          • Handle panic from a metrics server that is missing a system/start_time

          1.0.6 (April 07 2020)


          • Make DiscoveryRequests compatible with 1.2 control plane

          • Refresh xDS streams every 30 seconds to get new updates

          • Refresh an xDS stream if there is a request timeout

          • Prevent any xDS stream restarts from configuration updates

          • Allow HOST to be specified on startup

          1.0.5 (April 05 2020)


          • Force new release to regenerate stale artifacts

          1.0.4 (March 31 2020)


          • Restart xDS streams for any Zone with configuration updates

          • Watch for batch configuration updates and only restart an xDS stream once

          • Lock map writes for instance endpoint removals

          1.0.3 (December 6 2019)

          NOTE: Updating to this version will require explicitly configuring each instance of gm-proxy with an XDS_ZONE environment variable. This value must match the name of a Zone configured in Catalog.


          • Specify Locality.Zone rather than Locality.Region in each DiscoveryRequest to xDS servers.

          • Less greedy polling defaults per xDS server, sidecar, and metrics server

          • Delegate instance deletion to xDS reporting; use direct polling if xDS connection is down

          • Updated documentation with basic usage guide and dependencies chart


          • Validate new xDS server configurations to prevent current connections from being dropped

          • Default each configured xDS server configuration's request cluster name to 'edge'

          • Validate against empty string values for Owner and Capability fields in the Catalog summary object

 (March 5 2020)


          • Parse the "USER_DN" header from incoming request headers rather than the response headers

          • Prohibited access of unauthorized users to metrics endpoints via REST

          • Lower-cased the "USER_DN" header value and the "authorized_users" value sourced in environment

          1.0.2 (August 22 2019)


          • Updated Swagger to match most up-to-date model using zone and cluster fields

          • Configured packaging Swagger documentation along with each release binary

          • Optimized opening and closing of XDS streams and deregistering silent instances


          • Disabled browser caching of Swagger documentation static assets

          • Logging for instance polling interval and max silence for each XDS server

          1.0.1 (August 9 2019)


          • Performance optimizations for data access methods


          • Re-configured gm-data as backing store for updated model

          1.0.0 (August 2 2019)


          • Re-implemented service discovery for compatibility with gm-control (breaking change)

          • Modified services model to refer to zones and clusters (retained old JSON keys)

          • Enhanced instances model to use health checks without metrics filters

          • Updated documentation for configuration and REST API


          • Default values for zones and clusters created via POST

          • Addressed race conditions with gm-control and sidecar metrics servers on startup

          0.5.0 (June 7 2019)


          • Multiple gm-xds servers for multi-mesh configurations

          • New mesh layer to wrap around services model, mapped using meshID and clusterID

          • Queryable clusters and clusterID REST endpoints for retrieving and updating service clusters

          • Meshes and meshID REST endpoints for collecting metadata pertaining to each mesh

          • New metrics REST endpoint for requesting metrics via clusterID and instanceID


          • Removed PUT, PATCH, DELETE from services REST endpoint

          • Updated documentation of REST endpoints

          0.4.0 (May 3 2019)


          • Eliminated unused JSON keys

          • Changed the form of some JSON keys (breaking change)

          • Improved documentation of REST Endpoints


          • bug returning nil for Instances

          0.3.7 (April 26 2019)


          • Update gm-dashboard, gm-slo docker-compose configs

          • Use gm-data for backing store

          • Drop Zookeeper as a source of active services (gm-xds only now)

          • Enable REST changes to known services

          0.3.6 (March 1 2019)


          • updated internal cluster name to match xds with service:version

          • requests for metrics run in parallel

          • add logging for grpc connections

          0.3.5 (February 20 2019)


          • bug fixes for instance reporting

          0.3.2 (February 14 2019)


          • bug fixes for metrics collection

          0.3.0 (February 1 2019)


          • get services from gm-xds (not handling metrics yet)

          JWT Security



          • Initial Boring support

          • Ability to set the log level from the API


          • Serve docs as text/plain instead of text/html



          • Use RFC3339 timestamps for logging

          • Doc assets are bundled and using open api 3.0

          1.1.1 (June 3 2020)


          • Serve swagger UI and document

          1.1.0 (June 2 2020)


          • Add ability to set ISS field in JWT Tokens, defaults to

          1.0.2 (May 26 2020)


          • Package swagger file in with binary

          1.0.1 (November 4 2019)


          • Allow Redis to be an optional dependency. Set REDIS_HOST= to indicate that Redis isn't used

          1.0.0 (October 16 2019)

          Version 1.0 Release

          0.2.1 (August 2 2019)


          • Added LDAP backend functionality, configure the jwt service to get its token values form an ldap user search

          • Added More debug logs and configurable logging levels

          • Checks users.json on startup for valid json format


          • Readme typo

          0.2.0 (April 9 2019)

          - Auth flow allows user to go directly to gm-data without being forwarded in through jwt


          • Added swagger Docs at root

          • Configurable redis DB Name (int 0 - 15)

          • Send back 403 Forbidden when a userDN is not found by the auth provider instead of giving anonymous tokens

          • Support userDN as userpolicyid


          • Bug where if 2 jwt servers shared the same redis, the tokens would be shared between the two, causing unintentional impersonation

          0.1.0 (Feb 13 2019)


          • Root Privilege

            • Allow users.json to specify a privilege field where root can be entered. The user can then request a root token that gives them all permissions on all objects in gm-data
          • token time specification

            • Allow the user to request a token that lasts x amount of time, maximum time is determined by an environment variable
          • added tokens and policies endpoint along with a redis cache for tokens that have been generated

          • Enable TLS for the connection to the API


          • UserDNs and entries in users.json were not matching