epic: content layer — Helia in the browser, Kubo as the platform node, Boxo where needed
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- data, distributed-systems, infrastructure
Research direction
Start with docs/HELIA_INTEGRATION.md and the linked child issues to understand the planned content layer; this epic groups browser Helia, platform Kubo, optional Boxo work, and separate Stripe work. The production host, Kubo version policy, and need for custom Boxo code are still open. Done means the scoped child issues are completed and those design questions are resolved.
Written by the indexing model from the issue text.
Description
Summary
Track the content layer for distributed-quantum: Helia in the browser for content addressing, Kubo as the always-on platform node, and Boxo (Go library) only where Kubo cannot meet a need. Also tracks Stripe stablecoin work as a separate group.
Source material: the Helia integration overview (docs/HELIA_INTEGRATION.md, added separately).
Design stance
- Compute and content stay separate planes. Content-layer failures never block or discard quantum execution.
- Prefer configuring Kubo over writing Go. Custom Boxo code needs a written justification (spike).
- Provider credentials move behind a server-side broker.
Open questions
- Where does the platform node run in production (hosting, who operates it)?
- Kubo version policy and upgrade cadence.
- Is a custom Boxo service justified? (see the Boxo spike)
Child issues
Tier 1 - good starting point (small, well-scoped, builds on existing code)
- #44
heliafix(vault): drain and replay the pin retry queue - #46
heliarefactor(vault-pinning): use the broker and remove NEXT_PUBLIC provider credentials - #47
heliachore(vault-pinning): remove the legacy nft-storage alias - #49
heliafeat(vault): publish circuits to the vault - #50
heliafeat(vault): versioned, validated record schemas - #51
heliafeat(vault): request persistent storage and warn about eviction - #53
heliatest(vault): unit tests for local-index and sync-queue - #56
heliadocs(helia): post the open design questions to the IPFS community and record answers - #68
kubotest(content-node): compose-based integration test for the Kubo client - #75
kubodocs(helia): add the content node to the architecture and target diagrams
Tier 2 - needs a new service, SDK or deeper design
- #45
heliafeat(vault): server-side pinning broker routes - #48
heliafeat(vault-pinning): pin original blocks as a CAR so the pinned CID equals the Helia CID - #52
heliafeat(vault): export and import the vault as a CAR file - #54
heliafeat(vault): open any CID from a link or paste, with trustless-gateway fallback - #58
heliafeat(vault): link runs to circuits with dag-json instead of a string field - #59
kubofeat(infra): run Kubo in docker-compose (server profile, pinned version) - #60
kubofeat(content-node): lock down the Kubo RPC API and gateway - #61
kubofeat(backend): async Python client for the Kubo RPC API - #62
helia/kubofeat(vault): platform Kubo node as a pinning provider - #64
helia/kubofeat(content-node): delegated-routing endpoint used by Helia - #65
kubofeat(content-node): reprovide only pinned content - #66
kubofeat(ops): Kubo storage limits, garbage collection and Prometheus metrics - #67
kubofeat(provenance): publish each provenance bundle to Kubo, best effort - #73
kubofeat(backend): Python gateway client that fetches by CID and verifies content - #74
kubofeat(provenance): IPFS storage adapter for bundle verification
Tier 3 - distinct stack or research; start with a small scoped deliverable
- #55
heliaspike(vault): one Helia node per browser (SharedWorker vs Web Locks) - #57
heliaspike(vault): large artefacts with UnixFS in an IndexedDB blockstore - #63
helia/kubofeat(content-node): browser-reachable multiaddrs for Helia nodes - #69
kubospike(content-node): Kubo pubsub bridged to py-libp2p GossipSub - #70
kubospike(vault): IPNS author feeds with Kubo-held keys - #71
boxospike(content-node): what Kubo cannot do, and whether a custom Boxo service is justified - #72
boxofeat(content-node): CID allowlist and takedown denylist for the public gateway
Ground rules: testnet-first, no secrets in the repo, tests and docs with every PR.
- Dominant language
- Python
- Stars
- 2
- Forks
- 4
- Avg merge
- 6h 54m
- Merged PRs (30d)
- 7
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from QMeshPy/distributed-quantum
-
enhancement good first issue helia storage tier-1
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QMeshPy/distributed-quantum#53 ·
Maintainers usually reply within 1 day
-
chain-integration enhancement payments research-spike tier-2
Difficulty 4/5 3-5 days Newbie friendliness 55/100
QMeshPy/distributed-quantum#78 ·
Maintainers usually reply within 1 day
-
chain-integration enhancement payments research-spike tier-2
Difficulty 3/5 1-2 days Newbie friendliness 66/100
QMeshPy/distributed-quantum#77 ·
Maintainers usually reply within 1 day
-
chain-integration enhancement payments tier-2
Difficulty 5/5 Over a week Newbie friendliness 35/100
QMeshPy/distributed-quantum#76 ·
Maintainers usually reply within 1 day
-
documentation good first issue kubo storage tier-1
Difficulty 2/5 1-3 hours Newbie friendliness 42/100
QMeshPy/distributed-quantum#75 ·
Maintainers usually reply within 1 day
All issues in QMeshPy/distributed-quantum
Similar issues
-
[Bug]: Revit selector reads process ids 2000-2099 as years (flaky AgentClientTests.AYearOrAProcessIdSelectsTheHost)Possibly taken @Wurschdhaud claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
pyrevitlabs/pyRevit#3817 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
521xueweihan/HelloGitHub#4074 ·
-
follow-up
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Helm chart: allow setting ingressClassName on the IngressPossibly taken @commarla claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
pgadmin-org/pgadmin4#10658 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100