Skip to main content

fossick

search finds sources. read turns a supported source into markdown with one result shape. fetch and to_md handle web pages, from plain HTTP through browser-backed requests. cdp_connect drives Chrome for authenticated or multi-step work. Dedicated readers handle YouTube, arXiv, GitHub, and PDFs.

Install

uv add fossick

Text/image/news search need no Docker. JS rendering, stealth fetch, and google() use a bundled headless browser.

Quick start

results = search('koshas github fts semantic code graph', method='flashrank', n=5)
for r in results: print(r['score'], r['engines'], r['title'], r['href'])
0.030536 ['brave', 'yahoo'] github.com › codegraph-ai › CodeGraphGitHub - codegraph-ai/CodeGraph: CodeGraph builds a semantic... https://github.com/codegraph-ai/CodeGraph
0.016129 ['yahoo'] vedicreader.github.io › kosha › graphgraph – koshas - vedicreader.github.io https://vedicreader.github.io/kosha/graph.html
0.015873 ['brave'] fts · GitHub Topics · GitHub https://github.com/topics/fts?o=desc&s=updated
0.016393 ['yahoo'] pypi.org › project › koshaskoshas · PyPI https://pypi.org/project/koshas/
0.015625 ['brave'] GitHub - colbymchenry/codegraph: Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, and Hermes Agent — fewer tokens, fewer tool calls, 100% local https://github.com/colbymchenry/codegraph
res = research('sqlite WAL mode vs journal mode', n=5)
print(res['digest'][:500])
print([s['href'] for s in res['sources']])
## Write-Ahead Logging
https://www.sqlite.org/wal.html

Write-Ahead Logging

Table Of Contents

# 1\. Overview

The default method by which SQLite implements atomic commit and rollback is a rollback journal. Beginning with version 3.7.0 (2010-07-21), a new "Write-Ahead Log" option (hereafter referred to as "WAL") is available.

There are advantages and disadvantages to using WAL instead of a rollback journal. Advantages include:

1. WAL is significantly faster in most scenarios. 
  2. WAL provid
['https://www.sqlite.org/wal.html', 'https://blog.sqlite.ai/journal-modes-in-sqlite', 'https://mohit-bhalla.medium.com/understanding-wal-mode-in-sqlite-boosting-performance-in-sql-crud-operations-for-ios-5a8bd8be93d2', 'https://til.simonwillison.net/sqlite/enabling-wal-mode', 'https://fly.io/blog/wal-mode-in-litefs/']
page = read('https://en.wikipedia.org/wiki/Web_scraping')
print(page.text[:400])
The legality of web scraping varies across the world. In general, web scraping may be against the terms of service of some websites, but the enforceability of these terms is unclear.[11]

In the United States, website owners can use three major legal claims to prevent undesired web scraping: (1) copyright infringement (compilation), (2) violation of the Computer Fraud and Abuse Act ("CFAA"), and (

One door

what_is classifies a target as dir, file, arxiv, youtube, github, ghfile, pdf, or web. read selects that reader and returns ok, kind, title, source, text, skipped, and meta.

target = str(repo_root()/'README.md')
assert what_is(target) == 'file'
result = read(target)
assert sorted(result) == ['kind', 'meta', 'ok', 'skipped', 'source', 'text', 'title']
assert (result.ok, result.kind, result.title) == (True, 'file', 'fossick')
assert '# fossick' in result.text and result.skipped is None
result.kind, result.title, result.ok

Directories and GitHub repositories are trees. Their result has a local path in meta and no text. Other successful readers return markdown in text. For PDFs, pages=True returns (page_number, text) pairs for page-level citations.

A recognized target can still fail to yield content. Bot walls, missing YouTube transcripts, and invalid PDF responses set ok=False and put the reason in skipped. Unsupported targets raise ValueError during classification.

Modules

notebook for
00_core fetch, to_md, crawl, readers (yt/arxiv/gh), hidden APIs
01_cdp Chrome over DevTools: snapshot, fill_form, act
02_search metasearch, RRF/BM25/flashrank, google, research
03_cli fossick CLI
04_mcp MCP server for agents
05_shop cart/checkout automation on a live page
06_quality plan, curate, authority, diversity

One-liners

search('query', n=10, region='auto', timelimit='y')
research('query', n=5)                    # search, read, and build a cited digest
fetch(url, auto=True)                     # escalate past bot walls
crawl(url, max_pages=5, same_domain=True)
google('query', n=10)                     # real Google via stealth browser
cdp_connect(); pg = await cdp.new_page(url); print(await pg.snapshot())

CLI: fossick search "q", fossick fetch URL --auto, fossick research "q". MCP: uvx fossick-mcp (or fossick-mcp --http).

Debug Chrome

Use a persistent Chrome profile for logged-in fetches (session=True) and CDP:

fossick cdp-install   # launch agent and keep-alive

Cookies survive restarts. Log in once by hand.

Download files

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

Source Distribution

fossick-0.1.16.tar.gz (99.8 kB view details)

Uploaded Source

Built Distribution

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

fossick-0.1.16-py3-none-any.whl (100.2 kB view details)

Uploaded Python 3

File details

Details for the file fossick-0.1.16.tar.gz.

File metadata

  • Download URL: fossick-0.1.16.tar.gz
  • Upload date:
  • Size: 99.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.1

File hashes

Hashes for fossick-0.1.16.tar.gz
Algorithm Hash digest
SHA256 8bdfa382e083b5f75d55e6aef2abf3eb0ac67807131226d2ff87d9ab5a43f811
MD5 3a3c535edc4ddfad3a37dcd682215e41
BLAKE2b-256 3f14c8f4a388e20498bdf3f7fc48b921bf1dc0c6edb4370410a188d03f4913ab

See more details on using hashes here.

File details

Details for the file fossick-0.1.16-py3-none-any.whl.

File metadata

  • Download URL: fossick-0.1.16-py3-none-any.whl
  • Upload date:
  • Size: 100.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.1

File hashes

Hashes for fossick-0.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 cc99a5cc17a3c7f4ba509bb0251c96012cd9e5d1b080eb8e6636df47382ea0bb
MD5 b1b71b1849528dfca130c153277e633a
BLAKE2b-256 dc959d93154bcdddbca8f258c57940fc0761e4653ec675535db47240eb96d963

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.17

2 files

This release

0.1.16 This release

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 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