Skip to main content

🚀 gulp-cli

A modern, powerful command-line interface for gULP — manage forensic document ingestion, querying, enrichment, and collaboration entirely from your terminal.

✨ What can you do?

  • 🔐 Authentication — secure login with token persistence
  • 📥 Ingestion — ingest files (single/batch/wildcard), optionally compressed before upload, with concurrent uploads
  • 🔍 Querying — raw OpenSearch queries, Sigma rules, external plugins
  • 🏷️ Enrichment — enrich documents, tag/untag, update fields
  • 👥 User Management — create users, manage permissions (admin only)
  • 📋 Operations — create/list/manage operations and contexts
  • 🔌 Plugins — list/upload/download plugins and mapping files
  • 🗺️ Enhance Maps — map document fields (e.g., gulp.event_code) to glyph/color per plugin
  • 🖼️ Glyphs — create/list/update/delete custom glyphs
  • 🧩 Dynamic Extensions — load custom CLI commands from internal or user extension folders
  • 📊 Stats — monitor ingestion and query requests
  • 🎯 Collaboration — manage notes, links, highlights

All with beautiful terminal output, automatic tab completion, and async-first design.


🚀 Quick Start

Installation

# from pip
pip install gulp-cli

# or install local portable-build tooling
pip install 'gulp-cli[portable]'

# or, for the latest development version:
python3 -m venv ./.venv
source ./.venv/bin/activate
git clone https://github.com/mentat-is/gulp-cli
cd gulp-cli && pip install -e .

# Verify installation
gulp-cli --help
gulp-version

Portable Bundles

For offline use from a USB stick, prefer the OS-specific portable bundles built with PyInstaller instead of pip install.

  • Each target OS needs its own bundle: Linux, Windows, macOS Intel, macOS Apple Silicon.
  • Portable bundles keep config and external extensions in a local data/ directory next to the executable.
  • You can override that location with GULP_CLI_HOME or --config-dir.

See Portable Usage for the layout, local build command, and CI artifact details.

Basic Usage

for the cli to work, set "ws_ignore_missing": true (should be default in the v1.6.51 backend, though ...) in your gulp_cfg.json to prevent the backend from halting operations when the CLI disconnects its websocket after sending an async request!

# Login to your gULP instance
gulp-cli auth login --url http://localhost:8080 --username admin --password admin

# Check who you are
gulp-cli auth whoami

# List operations
gulp-cli operation list

# Ingest files with wildcard (per-file progress is on by default; use --no-show-per-file-progress to hide it)
gulp-cli ingest file my_operation win_evtx 'samples/win_evtx/*.evtx'

# Query documents
gulp-cli query raw my_operation --q '{"query":{"match_all":{}}}'

📚 Documentation


Metadata

Release files for gulp-cli 2.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gulp-cli 2.0.2
File Size Uploaded Provenance
gulp_cli-2.0.2.tar.gz 108.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gulp-cli 2.0.2
File Interpreter ABI Platform
gulp_cli-2.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 179.7 kB

Release files / gulp_cli-2.0.2.tar.gz

Download URL gulp_cli-2.0.2.tar.gz
Size 108.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9528af2e25ab48f85e7821abe04e9708d4147257446dd1e1c8858f8365368706
BLAKE2b-256 checksum
How to use checksums
dc14151a6d8e822d52a7d9e9bc587ed46fbdcd6ddc5ad9eedf5577d9065b1fde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / gulp_cli-2.0.2-py3-none-any.whl

Download URL gulp_cli-2.0.2-py3-none-any.whl
Size 70.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78037bacd8f439c41f00758844bf22a92ca51591b16dcf4d0fe0bedf240abaef
BLAKE2b-256 checksum
How to use checksums
30d77e2555ee2410c29f8c08a37dad43e0f3021dfdfc7ff0d709367332f75497
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Security for gulp-cli 2.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page