Workflows and Components
For details on how each type of component integrates with Clutch please visit the Architecture reference.
Frontend
Frontend workflows are written using React and registered and configured in the frontend config file at build time.
Workflow Packages
@clutch-sh/audit
@clutch-sh/dynamodb
@clutch-sh/ec2
@clutch-sh/envoy
@clutch-sh/experimentation
@clutch-sh/k8s
@clutch-sh/kinesis
@clutch-sh/project-catalog
@clutch-sh/project-selector
@clutch-sh/redis-experimentation
@clutch-sh/server-experimentation
@clutch-sh/sourcecontrol
Backend
Backend components are written in Go and registered and configured in the backend config file at runtime.
Services
clutch.service.audit
Persists events emitted from the audit middleware. Other components can also use this service directly for advanced auditing capabilities.
clutch.service.audit.sink.logger
Logs audit events to the Gateway's logger.
clutch.service.auditsink.slack
Posts events to a configured Slack workspace and channel.
clutch.service.authn
Produces tokens for the configured OIDC provider.
clutch.service.authn.storage
Stores tokens from the auth provider(s) in the database.
clutch.service.authz
Evaluates the configured RBAC policies against user and resource pairs.
clutch.service.aws
Multi-region client for Amazon Web Services.
clutch.service.bot
Maps a bot command to a Clutch API call, returning the endpoint data as the bot's reply
clutch.service.chaos.experimentation.store
Chaos Experimentation Framework - Data layer to handle all database operations
clutch.service.chaos.experimentation.termination
Chaos Experimentation Framework - Performs termination of experiments based on certain given criteria
clutch.service.db.postgres
Provides a connection to the configured PostgreSQL database.
clutch.service.envoyadmin
Executes remote queries against the Envoy Proxy admin interface.
clutch.service.feedback
Stores feedback submissions in the database.
clutch.service.github
GitHub client that combines the REST/GraphQL APIs and raw git capabilities into a single interface.
clutch.service.k8s
Multi-clientset Kubernetes interface.
clutch.service.project
clutch.service.shortlink
clutch.service.sourcegraph
clutch.service.temporal
Workflow client for temporal.io.
clutch.service.topology
Modules
clutch.module.assets
Simple API to execute gRPC middleware on blob requests. Required for assets to be served from the Go binary.
clutch.module.audit
Returns audit event logs from the database.
clutch.module.authn
Registers login and callback endpoints for OAuth 2 flows.
clutch.module.authz
Exposes an endpoint for RBAC policy checks on arbitrary resources and users.
clutch.module.aws
Endpoints for interacting with resources in the Amazon Web Services (AWS) cloud.
clutch.module.bot.slackbot
Receives bot events from the Slack Events API
clutch.module.chaos.experimentation.api
Chaos Experimentation Framework - Supports a CRUD API for managing experiments.
clutch.module.chaos.experimentation.xds
Chaos Experimentation Framework - Envoy Discovery Service (xDS) implementation that delivers chaos experiment values to subscribed Envoys.
clutch.module.chaos.redisexperimentation
Chaos Experimentation Framework - Supports Redis specific experiments.
clutch.module.chaos.serverexperimentation
Chaos Experimentation Framework - Supports transformation of data from database to be UI ready
clutch.module.dynamodb
clutch.module.envoytriage
Remote debugging APIs for Envoy Proxy.
clutch.module.featureflag
clutch.module.feedback
Exposes endpoints to return survey questions for feedback components and to submit feedback submissions.
clutch.module.healthcheck
Simple healthcheck endpoint.
clutch.module.k8s
Endpoints for interacting with Kubernetes resources.
clutch.module.kinesis
clutch.module.project
clutch.module.proxy
clutch.module.resolver
Exposes registered resolvers and their schemas for use in structured or free-form search.
clutch.module.shortlink
clutch.module.sourcecontrol
Creates repositories in a source control system.
clutch.module.topology
Resolvers
/clutch.resolver.v1.ResolverAPI/Search
clutch.resolver.aws
Locates resources in the Amazon Web Services (AWS) cloud.
clutch.resolver.k8s
Locates resources in Kubernetes.
Middleware
clutch.middleware.accesslog
Logs gRPC requests and responses, optionally filtered by status code.
clutch.middleware.audit
Emits audit events from requests and responses based on annotations.
clutch.middleware.authn
Validates authentication headers using the authn service and adds claims to the request context.
clutch.middleware.authz
Extracts resource information from requests and passes it to the authz service to allow or deny access.
clutch.middleware.errorintercept
Allows services to register error interceptors in order to rewrite errors with additional information.
clutch.middleware.stats
Emits latency, success, and error stats after each request.
clutch.middleware.validate
Enforces input validation annotations from the proto definition on incoming requests.