explaingit

ngaut/benthos

Analysis updated 2026-07-18 · repo last pushed 2018-08-15

GoAudience · ops devopsComplexity · 3/5DormantSetup · moderate

TLDR

A reliable data-streaming tool that reads, transforms, and routes messages between services like Kafka, S3, and Redis without losing data.

Mindmap

mindmap
  root((Benthos))
    What it does
      Reads data streams
      Transforms messages
      Routes to destinations
    Connects to
      Kafka
      AWS S3
      Redis
      Elasticsearch
      MQTT
    Reliability
      At-least-once delivery
      Crash resilience
      Optional buffering
    Deployment
      Standalone binary
      Docker container
      Go framework

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Clean up, filter, or route messages flowing through Kafka, HTTP, or RabbitMQ pipelines.

USE CASE 2

Connect data from one service like Kafka to another like Elasticsearch without writing custom code.

USE CASE 3

Deduplicate a stream of data, such as Twitter data, before writing it into Kafka.

USE CASE 4

Monitor stream health by sending metrics to Statsd or Prometheus.

What is it built with?

GoKafkaYAML

How does it compare?

ngaut/benthos42wim/fabio42wim/go-xmpp
LanguageGoGoGo
Last pushed2018-08-152018-02-042020-01-24
MaintenanceDormantDormantDormant
Setup difficultymoderatemoderatemoderate
Complexity3/53/53/5
Audienceops devopsops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Configured entirely through YAML files, stronger delivery guarantees require adding an optional buffer layer.

In plain English

Benthos is a tool for moving and transforming data streams between different services. Think of it as a reliable middleman that sits between your data sources and destinations, reading messages from one place, optionally modifying them, and sending them somewhere else, all while being rock-solid about not losing anything. The typical use case: you have messages flowing through your system (maybe from Kafka, an HTTP endpoint, or RabbitMQ), and you need to clean them up, filter them, or route them to multiple places. Benthos handles all that plumbing. It connects to a wide variety of popular services, Kafka, AWS S3, Redis, Elasticsearch, MQTT, and many others, so you can plug it into almost any existing pipeline. You write a simple configuration file describing where data comes from, what to do with it, and where it should go, then Benthos runs that configuration reliably. What makes Benthos stand out is resilience. By default, it's built to handle crashes gracefully. If your application restarts, Benthos won't lose messages, it ensures everything gets delivered at least once, even without extra infrastructure. If you need even stronger guarantees, you can add a buffer layer. You also get monitoring built in, with the ability to send metrics to Statsd or Prometheus so you can track what's happening in your stream. The project is straightforward to deploy. You can run it as a standalone binary, drop it in a Docker container, or use it as a framework if you're building custom stream processing in Go. Configuration is done through YAML files that you can parameterize with environment variables, making it easy to adjust settings for different environments without changing code. The README includes concrete examples and even a cookbook section with real-world use cases like deduplicating Twitter data into Kafka.

Copy-paste prompts

Prompt 1
Write a Benthos YAML config that reads messages from Kafka, filters them, and writes them to Elasticsearch.
Prompt 2
Show me how to deploy Benthos as a Docker container that connects an HTTP source to an AWS S3 destination.
Prompt 3
Explain how Benthos guarantees at-least-once message delivery without extra infrastructure.
Prompt 4
How do I parameterize a Benthos YAML config with environment variables for different deployment environments?

Frequently asked questions

What is benthos?

A reliable data-streaming tool that reads, transforms, and routes messages between services like Kafka, S3, and Redis without losing data.

What language is benthos written in?

Mainly Go. The stack also includes Go, Kafka, YAML.

Is benthos actively maintained?

Dormant — no commits in 2+ years (last push 2018-08-15).

How hard is benthos to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is benthos for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.