ynqa
sig
Rust

Interactive grep (for streaming)

Last updated Jul 6, 2026
755
Stars
13
Forks
1
Issues
+1
Stars/day
Attention Score
62
Language breakdown
No language data available.
โ–ธ Files click to expand
README

sig

ci

Interactive grep

|sig.gif|sig.static.gif| |---|---|

Features

  • Interactive grep (for streaming)
- sig allows users to interactively search through (streaming) data, updating results in real-time.
  • Re-execute command
- If --cmd is specified instread of piping data to sig, the command will be executed on initial and retries. - This feature is designed to address the issue where data streams past while the user is fine-tuning the search criteria. In other words, even if the data has already passed, executing the command again allows the retrieval of the data for re-evaluation.
  • Archived mode
- In archived mode, since there is no seeking capability for streaming data received through a pipe, it is not possible to search backwards without exiting the process. Therefore, in sig, the latest N entries of streaming data are saved, and it is possible to switch to a mode where you can grep through these N entries based on key inputs at any given moment. - For static data such as files, sig automatically switches to archived mode when the input reaches EOF. - like ugrep with -Q option.

Installation

Homebrew

brew install ynqa/tap/sigrs

Cargo

cargo install sigrs

X-CMD

If you're an x-cmd user, you can install it with the following command:

x install sig

Arch Linux

pacman -S sig

Nix (flakes)

Add it as an input to your flake:

inputs = {   sig.url = 'github:ynqa/sig/<optional-ref>' }

Create a shell with it:

nix shell github:ynqa/sig

Or run it directly:

cat README.md | nix run github:ynqa/sig

Nix (classic)

Fetch the source and use it, e.g. in your shell:

let
  # At the time of writing this, pkgs need to be unstable for the package to build properly
  # (requires Rust 1.74, stable has 1.73)
  pkgs = import <nixpkgs-unstable> {};

sig = pkgs.callPackage (pkgs.fetchFromGitHub { owner = "ynqa"; repo = "sig"; rev = "<revision, e.g. master/v0.1.0/etc.>"; hash = ""; # Build first, put proper hash in place }) {}; in pkgs.mkShell { packages = [sig]; }

Examples

stern --context kind-kind etcd |& sig

or

sig --cmd "stern --context kind-kind etcd" # this is able to retry command by ctrl+r.

or static input (switches to archived view after EOF)

cat README.md |& sig

Keymap

| Key | Action | :- | :- | Ctrl + C | Exit sig | Ctrl + R | Retry command if --cmd is specified | Ctrl + S | Pause/Resume stream ingestion | Ctrl + F | Enter Archived mode | โ† | Move the cursor one character to the left | โ†’ | Move the cursor one character to the right | Ctrl + A | Move the cursor to the start of the filter | Ctrl + E | Move the cursor to the end of the filter | Backspace | Delete a character of filter at the cursor position | Ctrl + U | Delete all characters of filter

(Archived mode)

| Key | Action | :- | :- | Ctrl + C | Exit Archived mode | โ† | Move the cursor one character to the left | โ†’ | Move the cursor one character to the right | Ctrl + A | Move the cursor to the start of the filter | Ctrl + E | Move the cursor to the end of the filter | Backspace | Delete a character of filter at the cursor position | Ctrl + U | Delete all characters of filter

Usage

Interactive grep (for streaming)

Usage: sig [OPTIONS]

Examples:

$ stern --context kind-kind etcd |& sig Or the method to retry command by pressing ctrl+r: $ sig --cmd "stern --context kind-kind etcd"

Static input (switches to archived view after EOF): $ cat README.md |& sig

Options: --retrieval-timeout <RETRIEVALTIMEOUTMILLIS> Timeout to read a next line from the stream in milliseconds. [default: 10] --render-interval <RENDERINTERVALMILLIS> Interval to render a line in milliseconds. -q, --queue-capacity <QUEUE_CAPACITY> Queue capacity to store lines. [default: 1000] -i, --ignore-case Case insensitive search. --cmd <CMD> Command to execute on initial and retries. -Q, --query <QUERY> Initial query. -c, --config <CONFIG_FILE> Path to the configuration file. -h, --help Print help (see more with '--help') -V, --version Print version

Configuration

The following settings are available in config.toml

# Style for matched substrings
highlight_style = "fg=red"

[streaming.editor]

Query prompt while streaming

prefix = "โฏโฏ " prefix_style = "fg=darkgreen" activecharstyle = "bg=darkcyan" inactivecharstyle = ""

lines =

[streaming.keybinds] exit = ["Ctrl+C"] goto_archived = ["Ctrl+F"] retry = ["Ctrl+R"] toggle_pause = ["Ctrl+S"]

[streaming.keybinds.editor] backward = ["Left"] forward = ["Right"] movetohead = ["Ctrl+A"] movetotail = ["Ctrl+E"] erase = ["Backspace"] erase_all = ["Ctrl+U"]

[archived.editor]

Query prompt in archived mode

prefix = "โฏโฏโฏ " prefix_style = "fg=darkblue" activecharstyle = "bg=darkcyan" inactivecharstyle = ""

lines =

[archived.listbox] cursor = "โฏ "

activeitemstyle =

inactiveitemstyle =

lines =

[archived.keybinds] exit = ["Ctrl+C"] retry = ["Ctrl+R"] up = ["Up", "ScrollUp"] down = ["Down", "ScrollDown"]

[archived.keybinds.editor] backward = ["Left"] forward = ["Right"] movetohead = ["Ctrl+A"] movetotail = ["Ctrl+E"] erase = ["Backspace"] erase_all = ["Ctrl+U"]

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท ynqa/sig ยท Updated daily from GitHub