mickamy/sql-tapPublic

Watch SQL traffic in real-time with a TUI

AI summary: Real-time SQL traffic viewer and proxy daemon with interactive TUI and web client.

Stars
1.6K
Forks
49
Watchers
6
Open issues
0
Open PRs
0
Contributors
~2
Commits
187
Branches
1

GoMITCreated Feb 14, 2026Last push 1mo agoLatest release v0.3.2+5 this month

Star history

since Feb 8, 2026
05001K1.5KFeb 2026Apr 2026Jun 2026Aug 2026
1.6K stars as of Aug 7, 2026, tracked back to Feb 8, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-02: 0 commits2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 25 commits2026-02-14: 38 commits2026-02-15: 4 commits2026-02-16: 0 commits2026-02-17: 5 commits2026-02-18: 3 commits2026-02-19: 1 commit2026-02-20: 16 commits2026-02-21: 13 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 1 commit2026-02-25: 0 commits2026-02-26: 1 commit2026-02-27: 1 commit2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 1 commit2026-03-03: 3 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 12 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 7 commits2026-03-12: 25 commits2026-03-13: 5 commits2026-03-14: 1 commit2026-03-15: 1 commit2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
164 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What sql-tap does

sql-tap acts as a proxy between your application and database (PostgreSQL, MySQL, TiDB). It intercepts and captures every query in real-time. Without requiring any code changes, it allows developers to inspect queries, visualize transactions, and execute EXPLAIN plans. The tool provides both a terminal user interface and a web client for accessible monitoring and debugging of database interactions.

Backend developers and database administrators who need real-time insight into database traffic. It is especially useful for teams using complex ORMs where the exact executed SQL is difficult to predict.

  • Proxy daemon: intercepts traffic directly between the app and the database.
  • Interactive TUI: visualizes real-time queries in a terminal interface.
  • Web client: offers an alternative graphical view for analyzing database traffic.
  • Zero-code instrumentation: works without needing modifications to your application.
  • Multi-database support: compatible with PostgreSQL, MySQL, and TiDB.

Where teams use it

Query debugging

Inspect failing or slow queries exactly as they are sent from the application.

Transaction monitoring

Visualize the lifecycle of transactions to identify deadlocks or inefficiencies.

Performance profiling

Run EXPLAIN directly from the captured query log to analyze execution plans.

Local development

Understand how ORMs and application layers are translating code into SQL.

Getting started: brew install mickamy/tap/sql-tap

README

main branch

sql-tap

Sponsor

Real-time SQL traffic viewer — proxy daemon + TUI / Web client.

sql-tap sits between your application and your database (PostgreSQL, MySQL, or TiDB), capturing every query and displaying it in an interactive terminal UI. Inspect queries, view transactions, and run EXPLAIN — all without changing your application code.

tui web

Installation

Homebrew

brew install mickamy/tap/sql-tap

Go

go install github.com/mickamy/sql-tap@latest
go install github.com/mickamy/sql-tap/cmd/sql-tapd@latest

Build from source

git clone https://github.com/mickamy/sql-tap.git
cd sql-tap
make install

Nix

Using the flake directly

nix profile install github:mickamy/sql-tap

In a devenv.sh project

Add sql-tap as a flake input in devenv.yaml:

inputs:
  sql-tap:
    url: github:mickamy/sql-tap

Then reference it in devenv.nix:

{ inputs, pkgs, ... }:
{
  packages = [
    inputs.sql-tap.packages.${pkgs.system}.default
  ];
}

Docker

FROM alpine:3
ARG SQL_TAP_VERSION=0.0.1
ARG TARGETARCH
ADD https://github.com/mickamy/sql-tap/releases/download/v${SQL_TAP_VERSION}/sql-tap_${SQL_TAP_VERSION}_linux_${TARGETARCH}.tar.gz /tmp/sql-tap.tar.gz
RUN tar -xzf /tmp/sql-tap.tar.gz -C /usr/local/bin sql-tapd && rm /tmp/sql-tap.tar.gz
ENTRYPOINT ["sql-tapd"]

Run as a sidecar alongside your database:

# PostgreSQL
docker run --rm --network=host sql-tap \
  --driver=postgres --listen=:5433 --upstream=localhost:5432 --grpc=:9091

# MySQL
docker run --rm --network=host sql-tap \
  --driver=mysql --listen=:3307 --upstream=localhost:3306 --grpc=:9091

Quick start

1. Start the proxy daemon

# PostgreSQL: proxy listens on :5433, forwards to PostgreSQL on :5432
DATABASE_URL="postgres://user:pass@localhost:5432/db?sslmode=disable" \
  sql-tapd --driver=postgres --listen=:5433 --upstream=localhost:5432

# MySQL: proxy listens on :3307, forwards to MySQL on :3306
DATABASE_URL="user:pass@tcp(localhost:3306)/db" \
  sql-tapd --driver=mysql --listen=:3307 --upstream=localhost:3306

# TiDB: proxy listens on :4001, forwards to TiDB on :4000
DATABASE_URL="user:pass@tcp(localhost:4000)/db" \
  sql-tapd --driver=tidb --listen=:4001 --upstream=localhost:4000

2. Point your application at the proxy

Connect your app to the proxy port instead of the database port. No code changes needed — sql-tapd speaks the native wire protocol.

3. Launch the TUI

sql-tap localhost:9091

All queries flowing through the proxy appear in real-time.

Usage

sql-tapd

sql-tapd — SQL proxy daemon for sql-tap

Usage:
  sql-tapd [flags]

Flags:
  -config    path to config file (default: .sql-tap.yaml if exists)
  -driver    database driver: postgres, mysql, tidb (required)
  -listen    client listen address (required)
  -upstream  upstream database address (required)
  -grpc      gRPC server address for TUI (default: ":9091")
  -http      HTTP server address for web UI (e.g. ":8080")
  -dsn-env   env var holding DSN for EXPLAIN (default: "DATABASE_URL")
  -nplus1-threshold  N+1 detection threshold (default: 5, 0 to disable)
  -nplus1-window     N+1 detection time window (default: 1s)
  -nplus1-cooldown   N+1 alert cooldown per query template (default: 10s)
  -slow-threshold    slow query threshold (default: 100ms, 0 to disable)
  -version   show version and exit

Set DATABASE_URL (or the env var specified by -dsn-env) to enable EXPLAIN support. Without it, the proxy still captures queries but EXPLAIN is disabled.

Config file

Instead of passing flags on every invocation, you can create a .sql-tap.yaml in your project directory:

driver: postgres
listen: ":5433"
upstream: "localhost:5432"
grpc: ":9091"
http: ":8080"
dsn_env: DATABASE_URL
slow_threshold: 100ms
nplus1:
  threshold: 5
  window: 1s
  cooldown: 10s

sql-tapd automatically loads .sql-tap.yaml from the current directory. Use -config to specify a different path. CLI flags override config file values.

Web UI

Add --http=:8080 to serve a browser-based viewer:

DATABASE_URL="postgres://user:pass@localhost:5432/db?sslmode=disable" \
  sql-tapd --driver=postgres --listen=:5433 --upstream=localhost:5432 --http=:8080

Open http://localhost:8080 in your browser to view queries in real-time. The web UI supports:

  • Real-time query stream via SSE
  • Click to inspect query details
  • EXPLAIN / EXPLAIN ANALYZE
  • Text filter
  • Copy query (with or without bound args)
  • N+1 detection (toast + row highlight)
  • Timeline view (Gantt-chart style query visualization)

sql-tap

sql-tap — Watch SQL traffic in real-time

Usage:
  sql-tap [flags] <addr>

Flags:
  -ci       run in CI mode: collect events until SIGTERM/SIGINT or stream ends, then report and exit
  -version  Show version and exit

<addr> is the gRPC address of sql-tapd (e.g. localhost:9091).

CI mode

Run sql-tap -ci to detect N+1 and slow queries in your test suite. It connects to a running sql-tapd (see Quick start for setup), collects events, and exits with code 1 if any problems are found.

# Start sql-tap in CI mode (background)
sql-tap -ci localhost:9091 &
CI_PID=$!

# Run your tests through the proxy
DATABASE_URL="postgres://user:pass@localhost:5433/db?sslmode=disable" go test ./...

# Stop sql-tap — prints report and exits 0 (clean) or 1 (problems found)
kill "$CI_PID" 2>/dev/null || true
wait "$CI_PID" 2>/dev/null || true

Example output:

sql-tap CI Report
=================
Captured: 142 queries

Problems found:
  [N+1]  SELECT * FROM comments WHERE post_id = $1  (detected 12 times)
  [SLOW] SELECT * FROM users JOIN ...  (avg 523ms, 3 occurrences)

Exit: 1 (2 problems found)

Keybindings

List view

Key Action
j / Move down
k / Move up
Ctrl+d / PgDn Half-page down
Ctrl+u / PgUp Half-page up
/ Incremental text search
f Structured filter (see below)
s Toggle sort (chronological/duration)
Enter Inspect query / transaction
Space Toggle transaction expand / collapse
Esc Clear search / filter
x EXPLAIN
X EXPLAIN ANALYZE
e Edit query, then EXPLAIN
E Edit query, then EXPLAIN ANALYZE
a Analytics view
t Timeline view
c Copy query
C Copy query with bound args
w Export queries to file (JSON/Markdown)
q Quit

Inspector view

Key Action
j / Scroll down
k / Scroll up
x EXPLAIN
X EXPLAIN ANALYZE
e / E Edit and EXPLAIN / ANALYZE
c Copy query
C Copy query with bound args
q Back to list

Analytics view

Key Action
j / Move down
k / Move up
Ctrl+d Half-page down
Ctrl+u Half-page up
h / Scroll left
l / Scroll right
s Cycle sort (total/count/avg)
c Copy query
q Back to list

Timeline view

Key Action
j / Scroll down
k / Scroll up
Ctrl+d / PgDn Half-page down
Ctrl+u / PgUp Half-page up
q Back to list

Explain view

Key Action
j / Scroll down
k / Scroll up
h / Scroll left
l / Scroll right
c Copy explain plan
e / E Edit and re-explain / re-analyze
q Back to list

Filter syntax

Press f in the list view to enter filter mode. Filters support structured conditions that go beyond simple text search.

Syntax Meaning Example
d>100ms Duration greater than d>1s, d>500us
d<10ms Duration less than d<50ms
error Events with errors only
n+1 N+1 flagged queries alias: nplus1
slow Slow queries only
op:select SQL keyword prefix op:insert, op:update, op:delete
op:begin Protocol operation op:commit, op:rollback
(other) Text substring match users, WHERE id

Multiple tokens are separated by spaces and combined with AND logic:

op:select d>100ms

This shows only SELECT queries that took longer than 100ms.

Both / (text search) and f (filter) can be active simultaneously — the filter is applied first, then the text search narrows the results further.

N+1 query detection

sql-tap automatically detects N+1 query patterns — when the same SELECT template is executed many times in a short time window.

Detection is enabled by default and runs server-side, so both TUI and Web UI benefit:

  • TUI: alert overlay on first detection + N+1 marker in the Status column for every flagged query
  • Web UI: toast notification on first detection + yellow row highlight + N+1 in the Status column

Configuration

Flag Default Description
--nplus1-threshold 5 Number of executions to trigger detection (0 to disable)
--nplus1-window 1s Sliding time window for counting
--nplus1-cooldown 10s Minimum interval between alert notifications for the same query

Only SELECT queries are monitored. INSERT, UPDATE, DELETE, and transaction lifecycle commands (BEGIN, COMMIT, etc.) are excluded. Metadata queries — SELECT statements without a FROM clause, such as SELECT database(), SELECT @@version, or SELECT 1 — are also excluded, as they are typically driver health checks or system introspection calls rather than application data queries.

Once the threshold is crossed, all subsequent executions of the same template within the window are flagged. The cooldown only affects the notification frequency — the Status column marker always appears.

To disable detection entirely:

sql-tapd --nplus1-threshold=0 ...

Known limitations

Arrow key input in search / filter mode

Due to a limitation in the terminal input parser used by Bubble Tea v1, multi-byte escape sequences (such as arrow keys: ESC [ A/B/C/D) can occasionally be split across OS-level read() calls. When this happens, the remaining bytes ([A, [B, [C, [D, [F, [H) would appear as garbage text in the input field.

sql-tap includes a workaround that detects and discards these split sequences. As a side effect, the literal two-character strings [A, [B, [C, [D, [F, and [H cannot be typed in search or filter input. This is unlikely to affect real-world usage since these patterns rarely appear in SQL queries.

How it works

┌─────────────┐      ┌───────────────────────┐      ┌───────────────────────────┐
│ Application │─────▶│  sql-tapd (proxy)     │─────▶│ PostgreSQL / MySQL / TiDB │
└─────────────┘      │                       │      └───────────────────────────┘
                     │  captures queries     │
                     │  via wire protocol    │
                     └───────────┬───────────┘
                                 │ gRPC stream / SSE
                     ┌───────────▼───────────┐
                     │  sql-tap (TUI)        │
                     │  Browser  (Web UI)    │
                     └───────────────────────┘

sql-tapd parses the database wire protocol (PostgreSQL, MySQL, or TiDB) to intercept queries transparently. It tracks prepared statements, parameter bindings, transactions, execution time, rows affected, and errors. Events are streamed to connected TUI clients via gRPC.

See also

  • grpc-tap — Same concept for gRPC. Transparent HTTP/2 reverse proxy that captures every gRPC / gRPC-Web / Connect call with TUI + Web UI.

License

MIT

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

24 total
  1. v0.3.2v0.3.2Jul 7, 20261.3K downloads

    ## Changelog * bf8dc7fab6e1aca155973bfd0d27a97388a7a11d Merge pull request #35 from mickamy/fix/homebrew-formula-directory * db95d4dd90e53c89a777b2d1030fe8071c7baf22 fix: publish homebrew formula under Formula/ directory

  2. v0.3.1v0.3.1Jul 7, 20261 downloads

    ## Changelog * 057c04f707bc5874d6b16bbd81affc4f617d3ebf Initial plan * 0ac6aaf5b7db5c990dc1a0ea4b13f56aa446dbe5 Merge pull request #31 from mickamy/copilot/filter-out-noisy-n-plus-1-queries * 5afefe26544e19b519864381b5f6b3a9c7369a0e filter out noisy n+1 queries and add n+1/slow filter keywords * 1c985ec6e7a88fc8ffa52075bd429e0208c82412 fix: document FROM heuristic limitation and add nplus1 alias to README

  3. v0.3.0v0.3.0Mar 15, 202613.7K downloads

    ## Changelog * 057c04f707bc5874d6b16bbd81affc4f617d3ebf Initial plan * 0ac6aaf5b7db5c990dc1a0ea4b13f56aa446dbe5 Merge pull request #31 from mickamy/copilot/filter-out-noisy-n-plus-1-queries * 5afefe26544e19b519864381b5f6b3a9c7369a0e filter out noisy n+1 queries and add n+1/slow filter keywords * 1c985ec6e7a88fc8ffa52075bd429e0208c82412 fix: document FROM heuristic limitation and add nplus1 alias to README

  4. v0.2.9v0.2.9Mar 13, 2026195 downloads

    ## Changelog * cfcbe9c7f74c64e227f3835e3bb6fa11d9e7a63e Merge pull request #28 from mickamy/feat/config-file * 8c308ae3929e22e24458b55d99321276b405b2c8 Merge pull request #29 from mickamy/feat/timeline * ab3000752f64eae7469c25818e72a298eb3c7986 docs: add timeline view to README * 477a438a1e156afc2304b13f28e17df56ad31de5 docs: fix awkward line breaks in README * d82872ba71a7392e49323ba66536a82894ebe9aa docs: reformat README * 482da215ee81312fab2fe7221476b08e3a464c1a docs: update README * 768158f76ddc3a26fbdcb7835a063f9b982e1cf0 feat: add timeline view to WEB UI * 9d459bc5063af1c7b26dc8243437c7e37cf6ae9c feat: config file * c63d08fd1adfd50105856ad88932c28ec8730f7f feat: support timeline for TUI * bc775433709db1aafbf25c873af37b94422fb627 feat: use config file * c6cefe49878b8561407e1ea0f5133e1afe0a8b1e fix: cap timeline max rows based on device pixel ratio to stay within canvas limits * 6221638c2b51a094c4bb067590b63b46d139f4d1 fix: cap timeline rows to 1000 to prevent exceeding canvas size limits * 57a634b33230e336d39a03fe15a6cf92ec017c5f fix: clamp labelW to minimum 0 to prevent negative values on tiny viewports * 34bbba60e9354bc3d9fc83dd80be659e39d5586d fix: clamp timeline chart widt

  5. v0.2.8v0.2.8Mar 12, 2026103 downloads

    ## Changelog * 272ec8c5227585befa7858c11d18c43063740920 Merge pull request #26 from mickamy/feat/ci * fe72b94fa550194dbffb29ef9191ea303b3b496f Merge pull request #27 from mickamy/docs/ci-mode * c8811b4c0fd2046bceab6b8d90d02d054275c3bf docs: add CI mode section to README * 2eb1dc10f788fa33da5e7d84bf43c0a8b67ab7ca docs: add link to Quick start from CI mode section * 9a077c5b62fab4849058d4eaf2df0ae6bddb2e63 docs: add sslmode=disable to CI mode DSN example * 1f60381df8a35a649b12ebce5871bae5f6db9cce docs: make CI mode cleanup robust for set -e environments * 8ddbfd92e45d15bd7d9d69c042154564c88af86e feat: add CI mode to sql-tap client for automated N+1 and slow query detection * fd83936af7e914afd457f179d763d743708a7c65 fix: address review comments on CI mode * af8e09b8ceecc43bf0cb26f51285ec4adc80d7ab fix: use gRPC status codes instead of string matching in isStreamDone * 6096baaaa0e55ee826bd02787b093925d7eee6b4 lint: remove unused nolint directives in proxy tests * 30c2562041dd70580e11b02ab412c47004d95315 refactor: use streaming aggregation instead of storing all events in memory * 4384ae3d96c654d5e6cdb4fa1ab859670e4e7327 test: add integration tests for ci.Run with in-process gRPC server

Commits per week

last 52 weeks
630Week of 2025-08-02: 0 commitsWeek of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 63 commitsWeek of 2026-02-15: 42 commitsWeek of 2026-02-22: 3 commitsWeek of 2026-03-01: 16 commitsWeek of 2026-03-08: 38 commitsWeek of 2026-03-15: 1 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 1 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsAug 2, 2025Jul 26, 2026
164 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 0 commitsSun 12:00 — 2 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 2 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 0 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 0 commitsMon 16:00 — 0 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 4 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 0 commitsTue 15:00 — 0 commitsTue 16:00 — 5 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 1 commitsWed 9:00 — 2 commitsWed 10:00 — 7 commitsWed 11:00 — 0 commitsWed 12:00 — 0 commitsWed 13:00 — 0 commitsWed 14:00 — 0 commitsWed 15:00 — 0 commitsWed 16:00 — 1 commitsWed 17:00 — 0 commitsWed 18:00 — 0 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 3 commitsThu 9:00 — 2 commitsThu 10:00 — 5 commitsThu 11:00 — 1 commitsThu 12:00 — 9 commitsThu 13:00 — 0 commitsThu 14:00 — 0 commitsThu 15:00 — 6 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 0 commitsThu 19:00 — 1 commitsThu 20:00 — 0 commitsThu 21:00 — 0 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 4 commitsFri 9:00 — 7 commitsFri 10:00 — 4 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 3 commitsFri 14:00 — 3 commitsFri 15:00 — 1 commitsFri 16:00 — 11 commitsFri 17:00 — 11 commitsFri 18:00 — 3 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 2 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 1 commitsSat 10:00 — 21 commitsSat 11:00 — 10 commitsSat 12:00 — 8 commitsSat 13:00 — 5 commitsSat 14:00 — 1 commitsSat 15:00 — 1 commitsSat 16:00 — 7 commitsSat 17:00 — 9 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits179 (96%)
Community commits8 (4%)

187 commits in total over the last year.

DateListRankStars gained
Feb 14, 2026daily#8+220
  • avelino/awesome-go

    A curated list of awesome Go frameworks, libraries and software

    180.4K stars · Go

  • kubernetes/kubernetes

    Production-Grade Container Scheduling and Management

    124.3K stars · Go

  • usememos/memos

    Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

    62K stars · Go

  • hashicorp/terraform

    Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

    49.4K stars · Go

  • router-for-me/CLIProxyAPI

    Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini 3.1 Pro, GPT 5.6 Series, Grok 4.5, Claude model through API

    46.3K stars · Go

  • multica-ai/multica

    Assign issues to Claude Code, Codex, Cursor, and 17 more coding agents like teammates — open-source and self-hostable.

    44.7K stars · Go