Skip to content

lyft/clutch

Repository files navigation

An extensible platform for infrastructure management

License Slack react golang

Key FeaturesGetting StartedExtending ClutchDocumentationContributing

Key Features

Clutch provides everything you need to simplify operations and in turn improve your developer experience and operational capabilities. It comes with several out-of-the-box features for managing cloud-native infrastructure, but is designed to be org-agnostic and easily taught how to find or interact with whatever you run, wherever you run it.

  • 🔌 Highly extensible.
    • Extension points exist throughout the stack to allow custom integrations without rewrites.
    • Clutch is configuration-driven so it can be deployed and reconfigured for varied environments with ease.
    • Private extensions can be plugged-in without maintaining a fork.
  • 🔎 Built for discovery.
    • Resources have many common names. Clutch's Resolver pattern makes it easier than ever to locate resources.
    • The Resolver provides server-generated forms with one-line of frontend code, ensuring the API and frontend are always in sync.
  • 💻 Easy to develop, run, and maintain.
    • Developed with Go and Typescript, plus Protobuf for generated interfaces throughout.
    • Back-end abstractions ensure loose coupling and put feature development on rails.
    • Frontend components make it simple for developers with limited frontend experience to ship features.
    • Deployable as a single binary containing both backend and frontend resources.
    • Basic auditing, authorization, stats, and logging come for free with every endpoint.
  • 🔒 Secure and observable.
    • Single sign-on support.
    • Role-based access control (RBAC) engine for granular access control beyond what vendor IAM policies support.
    • Built-in auditing with sinks for Slack and more.
    • Extensive logging and stats capabilities.

Getting Started

So you want to run Clutch? That's great to hear! There are several supported methods of running Clutch, all of which are outlined in our Getting Started documentation to learn how to run Clutch in Docker or build it locally.

Clutch also has a mock server for testing and developing features in isolation from the systems they depend on.

Extending Clutch

Clutch ships with a default configuration and some out of the box workflows to make on-boarding as easy as possible. However, there are lots of use cases for Clutch, some of which may not be written yet and others which are not broadly applicable.

To get started developing new features or functionality within Clutch check out the development guides on how to develop each of the different pieces. While you're there, take a few additional minutes to read through the configuration documentation. This allows you to override the default configuration that ships out of the box with Clutch.

Documentation

Clutch has extensive documentation that can be found on our site clutch.sh.

If you're looking for the source of the hosted documentation both the content and the code for the website live within the docs/ directory.

Contributing

Thinking of contributing back to Clutch? Awesome! We love and welcome all contributions.

First things first, please read over our Code of Conduct and our guidelines before opening a pull request.

Want to contribute but not sure where to start? Check out the good first issue for tasks specifically scoped for those with less familiarity.

All contributions require that the author has signed the Lyft CLA. Login to the Lyft CLA Service with GitHub to review and sign the CLA. If you are contributing on behalf of an organization please reach out to clutch@lyft.com to have your company added.