Skip to main content

Read the nulltap.sh cybersecurity feed from a terminal.

Project description

nulltap

Nulltap in your terminal. This client reads the public nulltap.sh JSON feed and prints cybersecurity and AI coverage without requiring an account.

Install

Python 3.10 or newer is required. After the first PyPI release, install it with pipx:

pipx install nulltap

Until then, install the current version from GitHub with pipx install git+https://github.com/JustinHowe/nulltap.git.

Run nulltap --help after installation.

Commands

nulltap                         # paginated recent articles; type a number to read
nulltap browse                  # explicit form of the default command
nulltap latest -n 20            # browse the newest 20 articles
nulltap latest --topic identity
nulltap topics                  # choose a topic, then choose an article
nulltap topic ai                # paginated articles tagged AI
nulltap topic                   # choose a topic interactively
nulltap search                  # enter search words interactively
nulltap search "token theft"
nulltap search gateway --topic appsec
nulltap read 1                  # directly read the newest article
nulltap read                    # browse first when no number is supplied
nulltap --plain                 # print once; no prompts or pager

Interactive lists show five articles per page so a page fits a normal terminal window. Enter the displayed number to read an article, n for the next page, p for the previous page, or q to leave. Use --page-size N to change the page size.

Articles open in the terminal pager. Headings, lists, quotations, code blocks, images, inline links, and primary sources are formatted for terminal reading. Press q to leave the pager and return to the article list. No browser is required.

When output is redirected, nulltap automatically disables menus and the pager. --plain does the same thing explicitly. Article IDs, slugs, and URLs remain accepted as direct targets for scripts, but ordinary readers should not need them.

Search

Search belongs in the CLI because it is useful when the browser is not. It runs locally over article titles, summaries, and topic tags. Search terms are never sent to nulltap or another service.

Every word in the query must match. Title matches rank above tag and summary matches, with publication date breaking ties.

Scripts

Add --json to browse, latest, topics, topic, search, read, or show:

nulltap search ransomware --json
nulltap topics --json

Use a different compatible feed during development:

nulltap --feed http://127.0.0.1:4321/feed.json
# or
NULLTAP_FEED_URL=http://127.0.0.1:4321/feed.json nulltap

Listing and search commands make one read-only feed request. Reading an article makes a second request for that article's text. The client has no analytics, login, local database, or background process. Feed and article text are stripped of terminal control sequences before display.

Development

python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
python -m pip install -e .
python -m unittest discover -s tests -v

Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nulltap-0.1.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nulltap-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file nulltap-0.1.0.tar.gz.

File metadata

  • Download URL: nulltap-0.1.0.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for nulltap-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dfac82f111a2039b3ddd44499b328df0c016dc5283d747f979f938485c8d2f45
MD5 77369bc0a722254a2414fea01e9c0c52
BLAKE2b-256 122a741aa7db49c27738703519549104334809369145b65c393c8d51ce41781a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nulltap-0.1.0.tar.gz:

Publisher: publish-to-pypi.yml on JustinHowe/nulltap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nulltap-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nulltap-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for nulltap-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21334e0024a05fa6c7eb369308b21f3eeb2829338a9a7fe8dc78ec6f3c1f8983
MD5 c0670dc2ddea482456e982603f255af5
BLAKE2b-256 4486b5520824405776676c6855522579caf3d6954c1cd80b63843f8d31702a1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nulltap-0.1.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on JustinHowe/nulltap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page