Skip to content

nid666/sift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sift

Strip noise from error output

Build Status Crates.io License HuggingFace

FeaturesInstallationUsage

sift takes raw error output: stack traces, build failures, cloud provider logs, and returns a clean, minimal version useful for AI agents, debugging, pasting into LLMs, or searching. Powered by a fine-tuned model running locally via llama.cpp. No API keys. No telemetry. No GPU required.

Note

The model (~500MB, Q4_K_M quantization) is downloaded automatically on first run and cached locally. Subsequent runs take ~1–2 seconds on CPU.

Features

  • Clean mode strips timestamps, UUIDs, absolute paths, IPs, internal stack frames, and other noise while preserving the actual error message, error codes, and causal chain
  • Search mode produces a short, Google/StackOverflow-optimized keyword query from the error
  • Heuristic pre-filter a fast deterministic stage that extracts signal lines before the model runs, keeping inference input under ~2000 characters regardless of log size
  • Clipboard copy output is automatically copied to the clipboard
  • TUI help screen running sift without piped input launches an interactive help screen
  • Fully offline everything runs for free locally and nothing leaves your machine

Installation

Download prebuilt binary

Grab the latest binary from GitHub Releases and put it on your PATH:

macOS (Apple Silicon)

curl -L https://github.com/nid666/sift/releases/latest/download/sift-macos-aarch64 -o sift
chmod +x sift
sudo mv sift /usr/local/bin/

macOS (Intel)

curl -L https://github.com/nid666/sift/releases/latest/download/sift-macos-x86_64 -o sift
chmod +x sift
sudo mv sift /usr/local/bin/

Linux (x86_64)

curl -L https://github.com/nid666/sift/releases/latest/download/sift-linux-x86_64 -o sift
chmod +x sift
sudo mv sift /usr/local/bin/

Build from source

Requires: Rust toolchain (stable), a C++ compiler (clang or gcc), and cmake.

git clone https://github.com/nid666/sift
cd sift
cargo build --release
cp target/release/sift ~/.local/bin/

Note

The first build compiles llama.cpp from source (vendored). This takes a few minutes but produces a fully self-contained binary with no runtime dependencies.

Usage

USAGE:
    some_command 2>&1 | sift [OPTIONS]
    sift [OPTIONS] < file.log
    sift                          (launches TUI help screen)

OPTIONS:
    -s, --search       Output a search query instead of cleaned error
    -v, --verbose      Output both cleaned error and search query
    -r, --raw          Skip heuristic pre-filter, send raw input to model
    -n, --no-model     Only run heuristic pre-filter, no model inference
        --no-copy      Don't copy output to clipboard
        --download     Force re-download of the model
    -h, --help         Print help
    -V, --version      Print version

Examples

# Clean a Python traceback
python app.py 2>&1 | sift

# Get a StackOverflow-ready search query
cargo build 2>&1 | sift -s

# Clean from a saved log file
sift < error.log

# See both cleaned error and search query
kubectl logs pod/my-pod 2>&1 | sift -v

# Run just the heuristic filter, skip model inference
sift --no-model < large-error.log

Example

Input (piped via stdin):

Traceback (most recent call last):
  File "/home/sid/projects/api/src/routes.py", line 42, in handler
    result = db.execute(query)
  File "/home/sid/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2308, in execute
    return self._execute_internal(
  File "/home/sid/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
    self.dialect.do_execute(
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "10.0.1.55", port 5432 failed: Connection timed out
    Is the server running on that host and accepting TCP/IP connections?

Default output (sift):

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server failed: Connection timed out
Is the server running on that host and accepting TCP/IP connections?

Search output (sift -s):

sqlalchemy psycopg2 OperationalError connection timed out PostgreSQL

Important

Only the cleaned error or search query is written to stdout. All progress bars, spinners, and status messages go to stderr, making sift safe to use in pipes, scripts, or as a tool for agents.

Model Storage

The GGUF model file is stored in your platform's standard data directory:

Platform Path
macOS ~/Library/Application Support/sift/
Linux ~/.local/share/sift/

To force a fresh download (e.g., after a corrupted file):

sift --download

About

A cli tool to remove the noise out of errors

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages