Netnyahoo
Mac용 실질적인 Chromium으로, Arc 사이드바와 Dia 폴리시를 갖추고 계정 없이 무료·오픈소스이며 광고·추적·소송에 면역이다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Iris – Wikipedia Pathfinding Engine
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Iris finds a path between any two Wikipedia pages by traversing their links.
You give it two page titles — say, "Banana" and "Shah Rukh Khan" — and it walks Wikipedia's link graph using BFS until it finds the connection. Results are visualized as an interactive graph you can drag around.
It uses bidirectional BFS (default) which searches simultaneously from both pages toward each other using Wikipedia backlinks, meeting in the middle for faster results. You can also use standard forward-only BFS if preferred. Redis stores the search state instead of holding everything in memory, which keeps it from blowing up on deep searches.
/?from=Banana&to=Shah%20Rukh%20Khan opens (or runs) that search, and unfurls in Slack, Discord or a social feed as an image of the routeflowchart LR
B[Browser] -- "POST /getPath" --> W[Flask / Gunicorn]
W -- "queue task" --> R[(Redis)]
R -- "task" --> C[Celery worker]
C -- "links + backlinks" --> WP[Wikipedia API]
C -- "frontiers, progress, caches" --> R
W -- "GET /tasks/stream/id (SSE)" --> B
R -- "task state" --> W
The web process never searches. It queues a Celery task and streams the task's state back to the browser. The worker runs one breadth-first search over one or two frontiers: forward from the start page through its links, and backward from the end page through its backlinks, always expanding whichever side is smaller. When a page turns up in both, the path is read back out of the parent pointers. Every piece of search state — queues, visited sets, parent pointers — lives in Redis, namespaced per search and deleted when it ends.
Link lists are cached in Redis. Hub articles (500+ links: countries, years, broad topics) are cached for a week rather than a day, because nearly every search passes through them.
The route found is the first one, not a proven shortest: Wikipedia caps how many links one request returns, and Iris follows at most three continuations per article.
Search time is Wikipedia's request latency times the number of requests in
flight, not computation. Measured with scripts/benchmark.py on 24 October
2026: bidirectional search, production settings, a cold cache, one run each,
from a developer laptop.
| Route | Time | Wikipedia requests | Pages explored | Path |
|---|---|---|---|---|
| Pizza → Byzantine Empire | 0.97 s | 2 | 1 | 2 pages |
| Mount Everest → Jazz | 2.79 s | 6 | 2 | 3 pages |
| Kangaroo → Fourier transform | 5.44 s | 33 | 22 | 4 pages |
| Pikachu → Quantum chromodynamics | 5.93 s | 37 | 22 | 4 pages |
| Taylor Swift → Photosynthesis | 7.37 s | 40 | 22 | 4 pages |
| Barack Obama → Mathematics | 8.70 s | 54 | 22 | 4 pages |
A repeated search is answered from the path cache in milliseconds. Run
uv run python scripts/benchmark.py (needs local Redis and network) to
measure your own; --compare prints before/after.
| Method | Path | Purpose |
|---|---|---|
POST | /getPath | Start a search: {start, end, algorithm?} → 202 with task_id |
GET | /tasks/stream/<id> | Progress and result as Server-Sent Events |
GET | /tasks/status/<id> | The same status body, polled |
DELETE | /tasks/<id> | Stop a search |
GET | /api/suggest?q= | Title suggestions |
GET | /api/context?from=&to= | The sentence in one article that links to the next |
GET | /api/og.png?from=&to= | Share image for a route |
GET | /health | Redis connectivity |
Full schemas are in Swagger at /api/docs. The API is public and
unauthenticated, so it is rate-limited per client: 10 searches a minute, 120
requests a minute to the lighter endpoints (429 with Retry-After beyond).
git clone https://github.com/mdhishaamakhtar/iris
cd iris
uv sync
./dev.sh
Then open http://localhost:9020.
Swagger docs at http://localhost:9020/api/docs.
| Script | When to use |
|---|---|
dev.sh | Local development — starts Redis (if needed), Flask, and Celery in one terminal |
entrypoint.sh | The Docker image's CMD — runs Gunicorn, or Celery when SERVICE_TYPE=worker |
uv run pytest # run tests
uv run pytest --cov=app --cov-report=term-missing # run tests with coverage
uv run pytest --cov=app --cov-report=html # generate HTML coverage report (open htmlcov/index.html)
uv run ruff format . # format
uv run ruff check . # lint
uv run ty check # type check
uvx pre-commit install # run format, lint and types on every commit
CI runs the same checks on every push and pull request, requires 95% test
coverage, and builds the Docker image. Tests run against fakeredis with only
Wikipedia stubbed, so the search, the Redis store and the HTTP API run for real.