Read Nulltap cybersecurity and AI articles from a terminal.
Project description
nulltap
Read Nulltap from a terminal. Browse recent cybersecurity and AI articles, search the feed, filter by topic, and choose the full or 1-minute version without opening a browser.
Install
Python 3.10 or newer is required. pipx keeps the command in its own environment:
pipx install nulltap
To upgrade an existing installation:
pipx upgrade nulltap
A regular pip installation also works: python -m pip install nulltap.
Start here
nulltap # browse recent articles
nulltap latest --days 7 # articles published in the last seven days
nulltap topics # list every topic and its article count
nulltap topic identity # browse one topic
nulltap search "token theft" # search titles, summaries, and topic tags
nulltap read 2 # read the second result in the terminal
nulltap read 2 --short # read its 1-minute version
Interactive lists show five articles at a time. Enter a result number to read it, n or p to change pages, and q to leave. Use --page-size N if you want a different page size.
Articles open in the terminal pager with headings, lists, quotations, code blocks, image descriptions, links, and primary sources formatted for the console. Press q to return to the article list.
Reading modes
Full articles are the default. Add --short to use the 1-minute version when you read from a list, search result, topic, or direct read command:
nulltap search "token theft" --short
nulltap read 2 --short
Set the NULLTAP_READING_MODE environment variable to short if you want that behavior by default. The --full flag overrides the environment for one command. Nulltap stops with a clear message instead of silently showing the full article when a requested 1-minute version is unavailable.
Topics
Nulltap currently publishes under these topics:
endpoint
cloud
network
identity
appsec
AI
threats
nulltap topics reads the catalog from nulltap.sh and shows every topic, including topics that do not have a published article yet. Topic IDs are case-insensitive.
Search and recent filters
Search runs locally over the feed already downloaded from nulltap.sh. Search words are not sent to Nulltap or another service.
Every search word must match the title, summary, or a topic tag. Title matches rank first, followed by topic and summary matches. Publication date breaks ties.
Use --days N with browsing, topics, or search to limit the downloaded feed by publication time:
nulltap search ransomware --days 30
nulltap topic cloud --days 14
nulltap topics --days 90
Automation
Use --json for structured output or --plain for stable text without menus, color, or a pager:
nulltap latest --days 7 --json
nulltap search ransomware --json
nulltap topics --plain
Redirected output automatically uses non-interactive mode. Article IDs and slugs remain accepted by read for scripts, but ordinary browsing does not require them.
Network and privacy
Listing and search commands make one read-only request to the public feed. Reading an article makes one additional request for its text. The client has no analytics, account, background process, or local database. Feed and article text are stripped of terminal control sequences before display.
Contributor setup, local feed overrides, and release checks are documented in CONTRIBUTING.md.
Licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nulltap-0.2.0.tar.gz.
File metadata
- Download URL: nulltap-0.2.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5cbd4dff0ffc282e2b7179ca204cfa786472a2b52596c318f956145ba0cdc14
|
|
| MD5 |
0dac46212c59247eed9fd9f82a5f167f
|
|
| BLAKE2b-256 |
b8f2648e671d1bbf973008f03d86ce7a781f401bb274a930f52f1fba3da22f40
|
Provenance
The following attestation bundles were made for nulltap-0.2.0.tar.gz:
Publisher:
publish-to-pypi.yml on JustinHowe/nulltap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nulltap-0.2.0.tar.gz -
Subject digest:
a5cbd4dff0ffc282e2b7179ca204cfa786472a2b52596c318f956145ba0cdc14 - Sigstore transparency entry: 2256414276
- Sigstore integration time:
-
Permalink:
JustinHowe/nulltap@5c6f17b0e1aff4a52d3bb5f0a275defab010942b -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/JustinHowe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@5c6f17b0e1aff4a52d3bb5f0a275defab010942b -
Trigger Event:
release
-
Statement type:
File details
Details for the file nulltap-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nulltap-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d95d7a6331ac0b24e375df30cf0275f5df23335ca47fbb1b5aac752e4c13205
|
|
| MD5 |
fab949e68cfee57bf713c135cc5298f2
|
|
| BLAKE2b-256 |
08db574c4ecf1c1dc1eddb49c7216819124de261141500a8d83186fdc19b3e5f
|
Provenance
The following attestation bundles were made for nulltap-0.2.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on JustinHowe/nulltap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nulltap-0.2.0-py3-none-any.whl -
Subject digest:
2d95d7a6331ac0b24e375df30cf0275f5df23335ca47fbb1b5aac752e4c13205 - Sigstore transparency entry: 2256414281
- Sigstore integration time:
-
Permalink:
JustinHowe/nulltap@5c6f17b0e1aff4a52d3bb5f0a275defab010942b -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/JustinHowe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@5c6f17b0e1aff4a52d3bb5f0a275defab010942b -
Trigger Event:
release
-
Statement type: