Skip to main content

Net-Sift

CI PyPI License: AGPL v3 Python 3.10+ Linting: Ruff

Net-Sift sweeps many sources for everything being said about a topic, ranks it, removes duplicates, and reports what it could not reach. The gap report is part of the answer, not an afterthought. Login-walled platforms are reached through your own logged-in Chromium browser, so there is no cookie copying and no private-API reverse engineering.

Table of contents

Why Net-Sift

Most research tools return a handful of links or a synthesized answer. Net-Sift returns a corpus with an explicit account of coverage: what was retrieved, what hit a ceiling, and what was out of reach. It is built for topic surveys, sentiment sweeps, competitor and discourse monitoring, and literature-style scans where a single search would under-serve the answer.

Features

  • Many sources in one sweep, keyless by default (Bluesky, Hacker News, GitHub, arXiv, Polymarket, StockTwits, Mastodon, and more).
  • Walled platforms (Twitter/X, Reddit, Instagram, Facebook, Bilibili, Xiaohongshu) through your logged-in Chromium browser via OpenCLI.
  • Relevance ranking with head-entity grounding, CJK-aware tokenization, a recency boost, and engagement weighting.
  • A gap-closing driver that bisects the time window to recover tails a source would otherwise hide.
  • Per-source near-duplicate collapse, so repeats do not inflate the corpus while cross-platform coverage is preserved.
  • Context-lean by design: the agent receives summaries, coverage, gaps, and the top results, never the raw corpus.
  • Saved sessions you can continue later, deleted only on your confirmation.

How it works

query
  |
  v
sources (keyless)          access (walled, via OpenCLI + your browser)
  \_________________  _________________/
                    \/
         gap-closing driver (bisect on ceiling)
                    |
            dedup + ranking
                    |
         session on disk  --->  summary + coverage + gaps  --->  agent

Keyless sources call public endpoints directly. Walled platforms are reached by shelling to opencli <site> <command> against your logged-in browser. Results are normalized to one record shape, deduplicated, ranked, and written to a session. Only the summary returns to the caller.

Install

Install from source (not yet on PyPI):

uv tool install git+https://github.com/ali-rajabpour/Net-Sift.git
# or: pipx install git+https://github.com/ali-rajabpour/Net-Sift.git

Then run the setup wizard:

net-sift install              # guided: clients, OpenCLI, browser; add --yes for unattended

net-sift install is a wizard. It registers the MCP server and status bar with the clients it finds (Claude Code, Codex), installs OpenCLI automatically through npm with your consent, and walks you through connecting a Chromium browser, rechecking as it goes. Each step asks before it changes anything. Restart your client afterward so it picks up the server.

Quickstart

net-sift doctor               # what can be reached right now
net-sift search "topic" --platforms github,arxiv --max 50

In an MCP client, call deep_search:

deep_search(query="post-quantum cryptography adoption", since="2026-01-01")

You get a summary with per-source counts, a coverage map, the gap list, the top ranked items, and the corpus path.

Walled platforms

Twitter/X, Reddit, Instagram, Facebook, Bilibili, and Xiaohongshu need a logged-in Chromium browser and OpenCLI. See net_sift/guides/setup-opencli.md. Short version:

  1. Install Node 20.18.1+ and @jackwener/opencli (or OpenCLIApp).
  2. Use a Chromium browser (Chrome, Edge, Brave, Arc, Comet, and so on) with the OpenCLI Browser Bridge extension. Safari and Firefox cannot load it.
  3. Log into the platforms you want in that browser.
  4. Run net-sift doctor to confirm.

Desktop only. There is no headless or server path for walled platforms.

Sources

Full table in net_sift/guides/sources.md. Keyless sources are on by default; walled sources appear once OpenCLI is connected.

MCP tools

Tool Purpose
deep_search run a sweep, return a summary and the corpus path
resume continue an earlier search
list_sessions list saved searches
cleanup delete a saved search (after user confirmation)
doctor what is reachable and how to connect walled platforms
status compact connectivity snapshot
fetch readable text for one page

Configuration

Variable Effect
GITHUB_TOKEN higher GitHub Search API rate limit
NET_SIFT_HOME session storage location (default ~/.net-sift)
NET_SIFT_OPENCLI_BIN path to the opencli binary if not on PATH

All configuration is read from the environment. Net-Sift stores no credentials.

Sessions and privacy

Each search is written to ~/.net-sift/sessions/<id>/ as corpus.jsonl and meta.json. Nothing is sent anywhere. After a search, Net-Sift reminds you the corpus is kept so you can resume it, and deletes it only when you call cleanup. Walled platforms use your own browser session; Net-Sift never reads or copies your cookies.

Development

git clone https://github.com/ali-rajabpour/Net-Sift.git
cd Net-Sift
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
ruff check net_sift tests && pytest

See docs/architecture.md for the design.

Contributing

See CONTRIBUTING.md. Net-Sift is read-only research: it does not post, comment, or bypass authentication, and contributions stay within that scope.

Security

See SECURITY.md. Report vulnerabilities privately through GitHub.

License

GNU AGPL-3.0-or-later. See LICENSE. If you run a modified version as a network service, the AGPL requires you to offer users its source. This project includes code adapted from Agent Reach (MIT, a permissive license compatible with AGPL); that attribution is kept in NOTICE.

Acknowledgements

  • OpenCLI for logged-in browser access.
  • Agent Reach for the onboarding and doctor patterns.

Metadata

Release files for net-sift 0.3.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 net-sift 0.3.2
File Size Uploaded
net_sift-0.3.2.tar.gz 664.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for net-sift 0.3.2
File Interpreter ABI Platform
net_sift-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 716.6 kB

Release files / net_sift-0.3.2.tar.gz

Download URL net_sift-0.3.2.tar.gz
Size 664.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6882d4bb160f61ec11077b5f46e304c04769f47be1df2c24184b6395027291c1
BLAKE2b-256 checksum
How to use checksums
ff8015b1ad194f1d319d2aff9824bfa7722c919f472d1e81a7942db8d75a59e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / net_sift-0.3.2-py3-none-any.whl

Download URL net_sift-0.3.2-py3-none-any.whl
Size 51.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0bea25e732dce255d358f38d56001963f78fe732c4390ae656a83216b0ad48d
BLAKE2b-256 checksum
How to use checksums
ab80ad7ae86d31bc9703ae44b5ac06f38ed2099915d0e7977b023d3300c3dda8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

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