HearthNet / docs /screenshots /README.md
GitHub Actions
docs: add local-node<->HF-Space connection proof (screenshots + make_proof.py)
c88a878
|
Raw
History Blame Contribute Delete
2.28 kB
# HearthNet — Local node ↔ live HF Space (connection proof)
These artifacts demonstrate a **local Python HearthNet node peering with the live
Hugging Face Space** and routing real capability calls over HTTPS through the
capability bus.
Space: https://build-small-hackathon-hearthnet.hf.space
## Screenshots
| File | What it shows |
| --- | --- |
| `01-hf-space-live.png` | The live HF Space UI (HearthNet mesh view). |
| `02-connection-proof.png` | A local node peered with the Space (38 remote capabilities routable) and a real `llm.chat` + `rag.list_corpora` routed to the Space. |
## Reproduce
```powershell
# Peer a local node with the live Space and route a real llm.chat call
python scripts/connect_to_hf.py --ask "In one sentence, how do I store water safely?"
# Regenerate the proof image from live calls
python scripts/make_proof.py
```
## How the connection works
1. The local node exposes `discovery.peer.add@1.0` (added in `hearthnet/discovery/service.py`).
2. `discovery.peer.add` fetches the Space's `/manifest`, registers all remote
capabilities into the local bus registry, and records the HTTPS endpoint.
3. When a capability (e.g. `llm.chat`) is only available remotely, the bus router
picks the remote peer and `HttpBusTransport` (`hearthnet/bus/http_transport.py`)
POSTs to the Space's `/bus/v1/call`.
4. The Space serves `/bus/v1/call`, `/manifest`, `/health`, and
`/bus/v1/capabilities` via FastAPI routes mounted into the Gradio app
(`_mount_bus_endpoints` in `app.py`).
## Notes / limitations
- **Sharing works:** `llm.chat`, `llm.complete`, `rag.query`, `rag.list_corpora`,
`rag.federated_query`, chat, market, file, evidence, civdef, OCR, translation,
STT/TTS, and image capabilities are all routable cross-network.
- **`embed.text` on the Space:** fails over the raw bus route with a ZeroGPU CUDA
error. GPU ops on HF ZeroGPU only run inside Gradio's `@spaces.GPU` event path,
not from a plain FastAPI route. This is an HF runtime constraint, not a bus bug;
embeddings work locally and on dedicated/CPU Spaces.
- **`invite redeem` / QR codes** are a separate *community-membership* flow
(`community.redeem`), not transport peering. Transport peering between nodes is
done via `discovery.peer.add` as shown here.