LOL-GAI mark

LOL-GAI

Living Off Legitimate GenAI — a living-off-the-land catalog of GenAI tools on developer workstations and endpoints (named as a deliberate play on LOLBins: legitimate GenAI binaries, same detection problem). Detection-engineering oriented: binaries, attribution signals, artifacts, abuse recipes, and observable datapoints. Read the scope, install lab tools, or contribute a tool.

Tools tracked
Categories

Readiness grades measure how complete an entry is for detection work, not severity. Abuse recipes are for authorized defensive research on systems you own or may test, not operational attack guidance. Filter the catalog with the dropdowns below (Category, Capabilities, Functions, Ecosystem, Verified), or jump to full scope criteria.

Catalog

Binary Functions Type OS Verified Readiness

Scope

LOL-GAI (Living Off Legitimate GenAI) is a living-off-the-land catalog of GenAI-related binaries and tooling that may appear on developer workstations and endpoints as adoption grows — named as a deliberate play on LOLBins (legitimate GenAI tools, same class of problem). Oriented toward detection engineering: what runs, where it lives, how to attribute it, and how those surfaces can be abused.

In scope

  • Terminal / CLI binaries with an observable process name
  • Companion helpers (tunnels, updaters) when abuse or attribution differs
  • Install paths, config dirs, network destinations, and signing/origin signals
  • Documented abuse recipes and ranked attribution signals

Out of scope

  • IDE-only chat UIs with no distinct process (unless a binary ships)
  • Cloud SaaS with no host footprint
  • Generic language runtimes (python, node) without a GenAI-specific entrypoint

Catalog readiness (A/B/C)

The Readiness column is an editorial grade: how useful this YAML entry is for detection engineering, not how dangerous the tool is. It reflects binaries, host artifacts, abuse recipes, ranked attribution signals, and (for Grade A) whether you can reliably attribute the process on an endpoint.

GradeMeaning
A Detection-ready: full binaries, artifacts, recipes, and signals, plus strong attribution, usable signing (full / authenticode depth) or a high-reliability, product-specific signal (not shared VS Code Code Helper or generic process.name alone).
B Solid entry: binaries, paths, recipes, and attribution signals are present; attribution is usable but does not meet Grade A bar (weak signing, shared host, or corroboration-heavy signals).
C Partial or sparse: a useful catalog pointer; may lack lab depth, strong signals, or full artifact coverage.

Readiness ≠ Verified. The Verified column is VerificationLevel in YAML: how the entry was checked: Unverified (stub), Documented (official docs / --help), or Observed (lab host: paths, signing, or binary behavior). An Observed tool can still be Grade C if metadata is thin; a Documented stub can be Grade B if fields are complete.

Contribute

Source and pull requests: https://github.com/Mikaayenson/lolgai · Site: lolgai.io

See CONTRIBUTING.md for the full checklist.

One YAML file per tool (or per surface when abuse differs). Do not edit tools.json by hand; it is generated at build time.

  • Fork the repository and create a branch
  • Add yaml/<vendor>/<tool>.yaml from the template
  • Set Author to your GitHub handle; when editing an existing entry, keep the original Author and add yourself under Contributors
  • Include binaries, functions, abuse recipes, attribution signals, and artifacts
  • Do not submit vendor query languages or sample SIEM rules
  • Open a pull request. CI validates the schema
Name: Example Tool Id: example-tool Category: cli_agent Author: your-handle Details: Binaries: [example] Commands: - Command: example --yes … Description: … DetectionOpportunities: - Name: Example parented shell AttributionSignals: - Field: process.parent.name Value: example

About

Mika Ayenson

LOL-GAI (Living Off Legitimate GenAI) is a living-off-the-land catalog of GenAI binaries on developer workstations and endpoints — a deliberate play on LOLBins, not a mistype of “land.” Attribution signals, artifacts, abuse recipes, and observable datapoints for detection engineering.

Maintained by Mika Ayenson, who leads the Threat Research and Detection Engineering (TRaDE) team at Elastic with a focus on AI Security. With a background in Cyber Missions Operations at JHUAPL, Ayenson keeps LOL-GAI as a personal catalog as GenAI adoption maps to new endpoint and SIEM detection surfaces.

← Catalog

? Readiness ≠ severity
LOL-GAI · Apache-2.0
← Catalog

Lab install script

Cross-platform installer for GenAI CLIs and related tooling, useful for populating a lab host with the binaries in this catalog. Review the script before running it. Use --tool <id> for one tool or --all for the full catalog (--list shows IDs; group filters include --cli, --desktop, --mcp).

  • install-genai-tools.sh (GitHub Gist v1.9.2; canonical installer; examples below pin revision ce115bc9e0ca)
  • Supports macOS, Linux, and Windows (including WSL)
  • Tool IDs align with catalog Id fields (legacy installer aliases still work)

Supply-chain caution: Do not pipe remote shell scripts to bash without review. Open the Gist, read every line, verify the author, and pin a specific revision hash.

Download and inspect (recommended):

curl -fsSL -o install-genai-tools.sh \
  "https://gist.githubusercontent.com/Mikaayenson/3f05db683761ba604bec1575607dce0c/raw/ce115bc9e0ca59619269a7f670ce2a1a3e9c6bcc/install-genai-tools.sh"
less install-genai-tools.sh
bash install-genai-tools.sh --list

Install one tool (replace claude with any ID from --list):

bash install-genai-tools.sh --tool claude --yes

Install everything (skips unsupported platforms; use --check first):

bash install-genai-tools.sh --all --yes

Pipe from URL (pass flags after bash -s --; inspect first):

curl -fsSL https://gist.githubusercontent.com/Mikaayenson/3f05db683761ba604bec1575607dce0c/raw/ce115bc9e0ca59619269a7f670ce2a1a3e9c6bcc/install-genai-tools.sh | bash -s -- --all --yes

Pin a revision: …/raw/<commit-sha>/install-genai-tools.sh: get the SHA from the Gist history. The installer syncs tool metadata from a third-party registry; treat updates like any external dependency.

LOL-GAI · Apache-2.0
← Catalog

API

Static JSON and CSV under public/api/, generated at build time from yaml/. Replace ORIGIN with https://lolgai.io or http://127.0.0.1:8765 for local preview.

Files

Fetch one tool

curl -sS "ORIGIN/public/api/tools/claude.json" | python3 -m json.tool

Resolve an alias, then fetch

ID=$(curl -sS "ORIGIN/public/api/lookup.json" | python3 -c 'import json,sys; print(json.load(sys.stdin).get("claude",""))')
curl -sS "ORIGIN/public/api/tools/${ID}.json" | python3 -m json.tool

Search the catalog

Filter (observed + MCP support)

curl -sS "ORIGIN/public/api/tools.json" | python3 -c '
import json,sys
tools=json.load(sys.stdin)
out=[{"id":t["id"],"bin":t["bin"],"grade":(t.get("score") or {}).get("grade")} for t in tools
     if str(t.get("verificationLevel","")).lower()=="observed"
     and "mcp_support" in (t.get("filterCapabilities") or [])]
print(json.dumps(out, indent=2))
'

Optional: pipe JSON through jq instead of python3 -m json.tool. Filter field names match the catalog UI (filterCapabilities, filterEcosystem, verificationLevel, category).

LOL-GAI · Apache-2.0