Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 57aea41

Browse files
Test Userclaude
andcommitted
chore: add CI workflow, CHANGELOG, SECURITY.md, CI badge
- CI: pytest on push/PR across Python 3.11-3.13 - CHANGELOG.md: v1.0 through v1.3.1 from git history - SECURITY.md: supported versions, vulnerability reporting, SSRF - README: add CI workflow badge - GitHub topics: mcp-server, search-api, search-broker, web-search, etc. Co-Authored-By: Claude Opus 4.6 <[email protected]>
1 parent 597fc4a commit 57aea41

4 files changed

Lines changed: 156 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
python-version: ["3.11", "3.12", "3.13"]
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Set up Python ${{ matrix.python-version }}
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: ${{ matrix.python-version }}
22+
23+
- name: Install dependencies
24+
run: |
25+
python -m pip install --upgrade pip
26+
pip install -e ".[dev]"
27+
28+
- name: Run tests
29+
run: python -m pytest tests/ -v --tb=short

CHANGELOG.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.3.1] - 2026-04-09
9+
10+
### Added
11+
- DuckDuckGo search provider — zero-config free search, no API key, unlimited
12+
- `ddgs` package as core dependency
13+
14+
### Fixed
15+
- Duplicate SearXNG entry in RESEARCH mode preferences causing double-dispatch
16+
17+
### Changed
18+
- Documentation rewritten with free-first positioning and two deployment tiers
19+
- Hardware requirements table (Raspberry Pi, Mac Mini, laptop, cloud VM)
20+
- All credit claims corrected to standard signup amounts (not promo deals)
21+
22+
## [1.3.0] - 2026-04-08
23+
24+
### Added
25+
- 3 new search providers: Linkup, Parallel AI, You.com
26+
- 2 new extractors: You.com Contents API, Crawl4AI (local JS rendering)
27+
- Tier-based credit routing: Tier 0 (free) → Tier 1 (monthly) → Tier 3 (one-time)
28+
- Budget enforcement with per-provider query-count tracking on 30-day rolling window
29+
- `argus mcp init` command for MCP client configuration
30+
31+
### Changed
32+
- Provider routing now sorts by credit tier first, mode preference second
33+
- Override provider lists are also tier-sorted
34+
- DuckDuckGo added to all 4 search mode preference lists
35+
36+
## [1.2.1] - 2026-03-28
37+
38+
### Changed
39+
- Renamed PyPI package from `argus` to `argus-search`
40+
- Updated install commands across all documentation
41+
42+
### Fixed
43+
- MCP server sync with mcp 1.26.0 API changes
44+
45+
## [1.2.0] - 2026-03-25
46+
47+
### Added
48+
- Content extraction with quality gates — trafilatura, Playwright, Jina, Wayback, archive.is
49+
- `argus extract` CLI command for URL content extraction
50+
- `argus cookies import/health` commands for authenticated extraction
51+
- Cookie-based authenticated extraction for paywall domains
52+
- Quality gate system between extraction steps (paywall detection, soft 404s, minimum quality)
53+
- Docker multi-stage build with GHCR auto-publish on push/tag
54+
55+
### Changed
56+
- Extract response now includes `quality_passed`, `quality_reason`, `extractors_tried`
57+
58+
### Fixed
59+
- MCP server version kwarg removal and async fixes
60+
- Docker builder stage source copy
61+
62+
## [1.1.0] - 2026-03-20
63+
64+
### Added
65+
- Single retry for unhandled provider exceptions
66+
- Documented and configurable cost estimates
67+
68+
### Changed
69+
- Lazy extractor initialization (no SQLite trigger at import time)
70+
- Deduplicated `_extract_domain` across providers
71+
- UTC-aware timestamps throughout
72+
73+
### Removed
74+
- Docker files (replaced with direct install approach)
75+
76+
## [1.0.0] - 2026-03-15
77+
78+
### Added
79+
- 7 search providers: SearXNG, Brave, Serper, Tavily, Exa, You.com, SearchAPI
80+
- Tier-based routing policies (RECOVERY, DISCOVERY, GROUNDING, RESEARCH modes)
81+
- Reciprocal Rank Fusion (RRF) result ranking
82+
- URL deduplication with normalization (www, trailing slash, tracking params, case)
83+
- In-memory search cache with configurable TTL
84+
- Health tracker with failure threshold and cooldown
85+
- Budget tracker with 30-day rolling window
86+
- Multi-turn sessions with TTL, max turns, and context limits
87+
- Authenticated extraction for paywall domains via Playwright
88+
- HTTP API (FastAPI) with OpenAPI docs
89+
- CLI (Click) with search, health, budgets, extract commands
90+
- MCP server for LLM integration
91+
- PostgreSQL persistence layer
92+
- PyPI publishing pipeline
93+
94+
## [1.0] - 2026-03-12
95+
96+
### Added
97+
- Session TTL, max turns, max context chars, and delete endpoint
98+
- Runtime provider disable/enable/reset-health admin endpoints
99+
- Provenance fields on SearchResult model
100+
- Degraded-state test suite (14 tests)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-brightgreen)](https://www.python.org/downloads/)
44
[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
55
[![PyPI](https://img.shields.io/pypi/v/argus-search)](https://pypi.org/project/argus-search/)
6+
[![CI](https://github.com/Khamel83/argus/actions/workflows/ci.yml/badge.svg)](https://github.com/Khamel83/argus/actions/workflows/ci.yml)
67
[![MCP Server](https://img.shields.io/badge/MCP-server-purple)](https://modelcontextprotocol.io/)
78

89
Search companies give you free web searches — 5,000+ per month across 10 providers, plus two unlimited with no API key at all. Argus puts them all in one place and routes every query to the right one at the right time.

SECURITY.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Only the latest release is actively maintained. Check [PyPI](https://pypi.org/project/argus-search/) for the current version.
6+
7+
## Reporting a Vulnerability
8+
9+
If you find a security vulnerability, please open a [GitHub issue](https://github.com/Khamel83/argus/issues/new?template=bug_report.md) with the `security` label.
10+
11+
## What Argus Handles
12+
13+
- **SSRF protection**: All URL extraction blocks private/internal IP ranges (10.x, 172.16-31.x, 192.168.x, 127.x, ::1)
14+
- **Domain rate limiting**: 10 requests/minute per domain to prevent abuse
15+
- **No user data storage**: Search queries and sessions are stored locally by the user — nothing is sent to Argus servers
16+
- **API keys**: Keys are read from environment variables only — never logged, transmitted, or stored outside the user's config
17+
18+
## Dependencies
19+
20+
Argus relies on `httpx` for outbound HTTP requests. Keep dependencies updated:
21+
22+
```bash
23+
pip install --upgrade argus-search
24+
```
25+
26+
Dependabot is enabled on this repository for automated dependency tracking.

0 commit comments

Comments
 (0)