explaingit

rcoh/angle-grinder

Analysis updated 2026-07-03

3,730RustAudience · ops devopsComplexity · 2/5LicenseSetup · easy

TLDR

A fast command-line tool for querying and summarizing log files in real time, filter, group, count, and calculate percentiles on JSON, logfmt, or plain text logs at over a million lines per second.

Mindmap

mindmap
  root((angle-grinder))
    What it does
      Query log files live
      Filter and aggregate
      Real-time streaming
    Log Formats
      JSON
      logfmt
      CSV
      Plain text
    Aggregations
      Count and sum
      Average min max
      Percentile
      Distinct count
    Filtering
      Wildcards
      Boolean logic
      Time-based grouping
    Setup
      Homebrew macOS
      Cargo install
      Pre-compiled binary
Click or tap to explore — scroll the page freely

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

Stream a running application's JSON log output into angle-grinder and get a live count of errors grouped by endpoint as they happen.

USE CASE 2

Analyze a large historical log file to find the 95th-percentile response time per service, grouped into one-minute intervals.

USE CASE 3

Filter a logfmt log to lines containing a specific error string and count how many unique user IDs triggered it.

USE CASE 4

Replace a slow grep and awk pipeline with a single agrind query to extract and summarize structured fields from millions of log lines in seconds.

What is it built with?

Rust

How does it compare?

rcoh/angle-grinderrustaudio/cpalfindomain/findomain
Stars3,7303,7283,736
LanguageRustRustRust
Setup difficultyeasymoderatemoderate
Complexity2/53/53/5
Audienceops devopsdeveloperops devops

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

How do you get it running?

Difficulty · easy Time to first run · 5min

Install via Homebrew, Cargo, or a pre-compiled binary, no external service or config file needed.

Open-source, check the repository for the specific license, but freely available for personal and commercial use.

In plain English

angle-grinder is a command-line tool for analyzing log files without needing to set up a dedicated logging service. If you have log files sitting on a server or streaming in from a process and you want to count things, find patterns, calculate averages, or sort by a field, angle-grinder lets you do that interactively in your terminal with results that update as data flows in. The tool works by running queries against log lines. A query is a short expression that filters lines first, then applies a series of operations to transform and summarize the matching data. For example, a query can parse JSON-formatted log lines, group them by a field like log level, and count how many entries fall into each group. It also handles logfmt (a format used by Heroku and Splunk), plain text patterns, and comma-separated values. The aggregation options include count, sum, average, minimum, maximum, percentile, distinct count, and sort. These can be combined with time-based grouping, so you can see how a metric changes over time by slicing results into fixed intervals. Filters support wildcards and boolean logic, letting you narrow down to lines containing a particular string or matching several conditions at once. angle-grinder is designed to be fast. The README notes it can process over one million log lines per second for simple queries and up to five million for the most straightforward cases. This makes it practical for working with large log files where opening them in a text editor would be impractical. The tool is written in Rust and available through Homebrew on macOS, package managers on Linux and FreeBSD, and as a pre-compiled binary. It can also be installed via Cargo, Rust's package manager. The command is called agrind and supports a self-update flag to stay current without reinstalling.

Copy-paste prompts

Prompt 1
I have JSON logs where each line has fields 'level', 'endpoint', and 'duration_ms'. Write an angle-grinder (agrind) query that filters to level=error, groups by endpoint, and shows the average and 95th-percentile duration.
Prompt 2
Show me an agrind query that reads a logfmt log, filters lines where status >= 500, groups by path, and counts occurrences sorted descending.
Prompt 3
I want to pipe my Docker container logs into angle-grinder and see a live count of unique user IDs per minute. Write the shell pipeline and the agrind query.
Prompt 4
Give me an agrind query that parses a CSV log with columns timestamp, region, and error_code, and shows the count of each error_code grouped by region, updated in real time as the file grows.

Frequently asked questions

What is angle-grinder?

A fast command-line tool for querying and summarizing log files in real time, filter, group, count, and calculate percentiles on JSON, logfmt, or plain text logs at over a million lines per second.

What language is angle-grinder written in?

Mainly Rust. The stack also includes Rust.

What license does angle-grinder use?

Open-source, check the repository for the specific license, but freely available for personal and commercial use.

How hard is angle-grinder to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is angle-grinder for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub rcoh on gitmyhub

Verify against the repo before relying on details.