Cybersecurity & LLM-Powered Tooling

We build open-source CLI tools and libraries for incident response, threat intelligence, and LLM-powered automation. Everything is designed to be pipe-friendly, composable, and lightweight — small tools that do one thing well.

On macOS (Apple Silicon), most CLIs and GUI apps install straight from our Homebrew tap — Developer ID signed & Apple-notarized prebuilt binaries:

brew tap nlink-jp/tap
brew install nlink-jp/tap/<name>          # CLI tools
brew install --cask nlink-jp/tap/<name>   # GUI apps

Cybersecurity Workflow Tools

AI-augmented tools for threat intelligence, product risk assessment, and incident response analysis.

abuse-lookup

Go

Checks IP address reputation against the AbuseIPDB API (CLI + MCP) — abuse score, report history, usage type, and ISP, cached locally with a TTL; large report pages are file-mediated to an agent workspace. The online sibling of asn-lookup

ai-ir

Python

AI-powered incident response — analyzes Slack IR exports to generate summaries, activity reports, and reusable tactics

ai-ir2

Python

Next-gen IR analysis — one-stop Gemini pipeline producing Markdown, self-contained HTML, and knowledge documents

cti-graph

Python

Local-first attack graph analysis — STIX 2.1 ingestion, PIR-driven weighting, choke-point detection, FastAPI API

cti-primer

Python

Local-first CTI PIR generation — turns business context into Priority Intelligence Requirements via local LLMs or dictionary-only mode

doh-lookup

Go

Collects a domain's DNS records over DoH (CLI + MCP) — queries Cloudflare/Google out-of-band over HTTPS so investigative lookups stay distinguishable from ordinary DNS; forward profile + PTR reverse, bulk input, states the resolver/endpoint and DNSSEC AD in every result; no credentials. The DNS-resolution sibling of asn-lookup and whois-lookup

icloud-relay-lookup

Go

Reports whether an IP is an Apple iCloud Private Relay egress IP (CLI + MCP) — offline longest-prefix match from a cached copy of Apple's egress list, with its geo hints (country/region/city); ETag revalidation, no credentials. The Apple-side sibling of tor-exit-lookup

ioc-collector

Python

Research security incidents from URLs or CVE IDs — extracts IoCs into Markdown and STIX 2.1 bundles

ir-hub

Go

IR lifecycle hub — resident Slack ChatOps bot that opens a channel per case, tracks the response, and ingests messages for postmortems and knowledge reuse

ir-timeline

Go

IR timeline recorder — single-binary, browser-based tool for tracking events with text, images, and time deltas

ir-tracker

Python

Live IR tracker — continuous ingestion, segmented analysis, and timeline visualization via Gemini

mac-lookup

Go

Resolves a MAC address or BSSID to its manufacturer (CLI + MCP) — offline longest-prefix match (36/28/24-bit) against a cached copy of the IEEE registries, and classifies the address first: a randomized or otherwise locally administered address is reported as having no vendor to find, not as an unidentified device; conditional downloads, no credentials. The L2 sibling of asn-lookup

mail-triage

Python

GCS-based email triage — classifies eml/msg files with Gemini LLM and posts results to Slack

news-collector

Python

News collection agent — collects, tags, summarizes, translates, and delivers curated news digests

product-research

Python

Research products and services — outputs ToS, privacy, and data security analysis as structured reports

tor-exit-lookup

Go

Reports whether an IP is a Tor Exit node (CLI + MCP) — offline membership lookup from a cached copy of the Tor Project's torbulkexitlist, enriched with exit-addresses metadata; no credentials. The offline sibling of asn-lookup and abuse-lookup

urlscan-lookup

Go

Investigates a suspicious URL via the urlscan.io API (CLI + MCP) — an active scan submits the URL to urlscan's sandbox browser for its behaviour, verdict, observed IPs/domains, and screenshot (private by default; public must be requested explicitly), plus a passive search of the historical public-scan database; async job flow, TTL cache, free-plan API key. The URL-layer sibling that feeds the IP/domain-layer lookups

whois-lookup

Go

Looks up the registration data of a domain, IP, or AS number (CLI + MCP) — RDAP-first via the IANA bootstrap with a port 43 WHOIS fallback for RDAP-less ccTLDs (.jp), in-house IDN punycode, local TTL cache; no credentials. The registration-focused sibling of asn-lookup and abuse-lookup

Email Analysis

Suspicious email analysis with rule-based indicators and LLM content analysis.

MCP Servers & Tooling

Model Context Protocol servers that give AI agents new capabilities, plus the proxy that governs them.

LLM CLI & Libraries

Small, local-first CLI tools and libraries for LLM interaction, retrieval, classification, and analysis.

Generative Media

Image generation, local on Apple Silicon or hosted on Vertex AI.

AI Agents & Desktop Assistants

Agent workspaces, resident assistants, and the containers they run in.

Activity & Usage Analytics

Measure where your time, your tokens, and your machine actually go, from local signals only.

ChatOps & Slack

Pipe-friendly Slack tools for ChatOps automation and monitoring.

Service CLI Clients

Pipe-friendly, Unix-composable CLI clients for external services.

Data Processing Utilities

Pipe-friendly tools for data transformation, parsing, and visualization.

asn-lookup

Go

Local IP↔AS lookups from the IPinfo Lite database (CLI + MCP) — downloads the free Lite DB once and answers IP→ASN/country and ASN→prefixes fully offline; large reverse-lookup results are file-mediated to an agent workspace

json-filter

Go

Extract, validate, prettify, and repair JSON from arbitrary text streams

json-to-table

Go

Format JSON arrays into text, Markdown, HTML, CSV, PNG, or Slack Block Kit tables

json-to-sqlite

Go

Load JSON data into SQLite with automatic schema inference

jstats

Go

SPL-style stats aggregations — count, avg, p95, stdev, values, and more

jviz

Go

Visualize JSON arrays as interactive charts in the browser — bar, line, pie, table

lookup

Go

Enrich JSON/JSONL streams by matching fields against CSV/JSON data sources

csv-editor

Go/React

CSV/TSV editor GUI for macOS/Windows — UTF-8/Shift_JIS/CP932 auto-detect, virtual scroll for 100k+ rows, IME-safe edit, find/replace

csv-to-json

Go

Convert CSV data to a JSON array

eml-to-jsonl

Go

Parse .eml files and output structured JSONL — headers, body, attachments

msg-to-jsonl

Go

Parse Outlook .msg files and output structured JSONL

pptx-to-markdown

Python

Convert .pptx presentations to structured Markdown for LLM analysis

rex

Go

Extract fields from text using named regex capture groups — outputs JSON

sdate

Go

Calculate timestamps using Splunk-like relative time modifiers

markdown-viewer

Go

Single-binary local Markdown viewer — renders GFM, Mermaid, and syntax-highlighted code

webhook-relay

Go

Authenticated webhook receiver — writes payloads to GCS via Cloud Run with VPC isolation

share-mounter

Swift

macOS menu-bar app that auto-mounts SMB shares at login — mounts via NetFS with no Finder window, appearing in the sidebar as network volumes; multiple shares, per-share auto-mount, Keychain credentials, re-mount on wake/network recovery

url-shelf

Swift

macOS menu-bar shelf of URL notes kept as plain .webloc files — the folder tree is the classification, so Finder stays the editor and the records outlive the app; per-entry private-window opening with folder-inherited defaults, disabled rather than downgraded when no private browser is set, and no network access

IoT & Embedded

Sensor data collection and monitoring on M5Stack hardware.

Claude Code Skills

Claude Code Skills for development process automation.

Experimental

Works in progress. APIs and interfaces may change without notice.