lljz66 commited on
Commit
4c221b9
Β·
verified Β·
1 Parent(s): 5bf6ce1

devnet: README with source table and ceilings

Browse files
Files changed (1) hide show
  1. README.md +66 -19
README.md CHANGED
@@ -1,30 +1,77 @@
1
  ---
2
- title: LeadGen
3
- emoji: 🎯
4
  colorFrom: blue
5
- colorTo: blue
6
  sdk: docker
7
- app_port: 7860
 
8
  ---
9
 
10
- # LeadGen
11
 
12
- Find people actively asking for solutions like yours.
13
 
14
- ## Tech Stack
 
15
 
16
- - Frontend: HTML/CSS/JS
17
- - Backend: Python (FastAPI) β€” coming soon
18
- - Database: Supabase (PostgreSQL)
19
- - AI: Jev AI (classification + scoring)
20
 
21
- ## Project Structure
 
 
 
 
 
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  ```
24
- /
25
- β”œβ”€β”€ frontend/ # Static HTML/CSS/JS
26
- β”‚ └── index.html # URL input page
27
- β”œβ”€β”€ backend/ # Backend folder (ready for use)
28
- β”œβ”€β”€ Dockerfile # Python HTTP server on port 7860
29
- └── README.md # This file
30
- ```
 
 
 
 
 
1
  ---
2
+ title: devnet
3
+ emoji: πŸ›°οΈ
4
  colorFrom: blue
5
+ colorTo: gray
6
  sdk: docker
7
+ pinned: false
8
+ license: mit
9
  ---
10
 
11
+ # devnet β€” developer internet for AI agents
12
 
13
+ One interface to the places builders use: **PyPI, GitHub, Hacker News, and any RSS/Atom feed**.
14
 
15
+ The point is not access β€” an agent already has `curl`. The point is **ground truth instead of
16
+ guessing**: exact versions, yanked releases, real issue threads, searchable discussions.
17
 
18
+ ## Interfaces
 
 
 
19
 
20
+ | | |
21
+ |---|---|
22
+ | MCP | `https://lljz66-api.hf.space/mcp` |
23
+ | REST | `https://lljz66-api.hf.space/v1/...` |
24
+ | Health | `https://lljz66-api.hf.space/health` |
25
+ | OpenAPI | `https://lljz66-api.hf.space/docs` |
26
 
27
+ ## Tools
28
+
29
+ | tool | answers |
30
+ |---|---|
31
+ | `pypi_package(name)` | current version, deps, yanked releases, release history |
32
+ | `github_repository(owner, name)` | stars, language, license, topics, last push |
33
+ | `github_issues(owner, name, state?, limit?)` | real issue threads (PRs filtered out) |
34
+ | `hackernews_search(query, limit?, kind?)` | what builders are actually saying |
35
+ | `rss_read(url, limit?)` | any engineering blog, changelog or AI-lab feed |
36
+
37
+ The join is the product: `pypi_package("httpx")` + `github_issues(...)` + `hackernews_search(...)`
38
+ answers *"why is this package broken at this version?"* in one round trip.
39
+
40
+ ## Source status
41
+
42
+ | source | auth | rate limit | cost | commercial | verified |
43
+ |---|---|---|---|---|---|
44
+ | PyPI JSON | none | undocumented, be gentle | free | metadata is public | ⚠️ unverified |
45
+ | GitHub REST | optional token | 60/hr anon, 5000/hr token | free | GitHub API ToS, attribution | ⚠️ unverified |
46
+ | HN (Algolia) | none | generous | free | public API, no restriction | ⚠️ unverified |
47
+ | RSS | none | per publisher | free | **inherits each publisher's terms** | ⚠️ unverified |
48
+
49
+ ⚠️ Nothing here has been executed yet. `smoke.py` must pass before launch, and the license/terms
50
+ column must be re-verified against each vendor's current terms. This table is not legal advice.
51
+
52
+ ## Configuration
53
+
54
+ | env | effect |
55
+ |---|---|
56
+ | `GITHUB_TOKEN` | optional, raises GitHub from 60 to 5000 req/hr |
57
+ | `DEVNET_KEYS` | comma/space separated keys for the `X-Key` header |
58
+ | `DEVNET_OPEN=1` | disable the key check (demo only) |
59
+
60
+ With no `DEVNET_KEYS` set the service is open, which is fine for a smoke test and unsafe in public.
61
+
62
+ ## Check it
63
+
64
+ ```bash
65
+ PYTHONPATH=src python smoke.py
66
  ```
67
+
68
+ ## Deliberate ceilings
69
+
70
+ | simplification | ceiling | upgrade |
71
+ |---|---|---|
72
+ | in-process TTL cache | one container, lost on restart | Redis |
73
+ | one shared `X-Key` | cannot rotate per customer | DB-backed keys |
74
+ | sync `requests` | fine to low thousands req/min | `httpx` async |
75
+ | no database | no history, no quota accounting | SQLite/Postgres |
76
+ | RSS 2.0 + Atom only | no RSS 1.0/RDF, no podcast enclosures | branch per real feed |
77
+ | no GitHub search tool | repo/issues only | add when an agent needs it |