Repository navigation
Storage + OpenDisk on by default, crawl.fetch, /v1/videos, honest plugins page; v0.2.67 - #141
Merged
Merged
Conversation
…t labels Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…buyer route; NAT result fetch fix Storage (on by default, peer to peer): - Every node with the storage role now serves the CIP-002 storage API on its gateway (reads open, writes ed25519-signed by the node's own key or storage.trusted_writers) plus /.well-known/opendisk.json (OpenDisk 0.1: identity key, live free/total space, price per GiB-month). - A node whose gateway announces a public https origin lists itself on d1sks at start and daily. Private-mode nodes and storage.opendisk=false opt out. - Capability ads carry the storage offer; /api/nodes shows it (sanitized). New: crawl.fetch workload (default role): static, robots.txt-aware, SSRF-guarded page fetch on the workflow.step HTTP client; jobs bridge accepts it; `c0mpute crawl fetch <url>`. Partials fixed: - transcode is a default role when ffmpeg is on PATH (was 0 workers). - video: POST /v1/videos on the buyer gateway (txt2vid, img2vid via image_base64), long deadlines, mp4 validation. - diffusion/any result fetch from a NAT'd worker: the worker dials the buyer before publishing its receipt, so the fetch rides that connection. - buyer bridges (speech/jobs serve, one-shot submits) use their own identity under <data_dir>/buyer instead of the worker's key, which made auctions fail with NoPeersSubscribedToTopic on any box that also runs a worker. Web: plugins page marks unbuilt plugins coming soon, partial ones partial, only real installers get install commands; WebMCP install tool reads the live listing. docs/storage-opendisk.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships storage+OpenDisk on by default, crawl.fetch, /v1/videos, transcode default with ffmpeg, separate buyer identity, honest plugins page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ThreatCrush Security Scan12 finding(s) HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 3
Snippets are redacted; ThreatCrush never prints matched credential material. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
An audit of c0mpute.com/plugins found 13 of 25 plugins were manifests with no code, 6 of 7 advertised
plugin installcommands 404'd, "installed by default" was printed for anythingin-process, and several real plugins were only partly usable.What
Plugins page:
status(available / partial / coming-soon) +status_note+ explicitbuiltinin every manifest. Coming-soon cards get a badge, no install command, nocli:line. Install commands only where aninstall.shexists. WebMCP install tool reads the live listing.Storage, on by default, peer to peer
storage.trusted_writers; anonymous PUT -> 401) and/.well-known/opendisk.json(OpenDisk 0.1: identity key, live free/total, price/GiB-month).gateway.announcelists itself on d1sks at start and daily. No central registry; private mode andstorage.opendisk = falseopt out./api/nodesshows it (sanitized). Docs:docs/storage-opendisk.md.New:
crawl.fetch(default role): static, robots.txt-aware page fetch on the SSRF-guarded workflow.step HTTP client. Jobs bridge accepts it;c0mpute crawl fetch <url>.Partials
POST /v1/videoson the buyer gateway (txt2vid; img2vid viaimage_base64), video-length deadlines, mp4 check.buyer_addrs, the worker dials it by peer id before the receipt.speech serve,jobs serve, one-shot submits) now use their own identity under<data_dir>/buyer. Reusing the worker's key on a box that also runs a worker made every auction fail withNoPeersSubscribedToTopic(reproduced live on dev2).Verified
cargo build --workspace --all-targets --locked+cargo test --workspace --no-fail-fast(isolated network): all green, incl. 10 new tests (crawl robots/spec/SSRF, opendisk capacity/descriptor/origin, storage offer sanitizer)./.well-known/opendisk.jsonvalidated by the live d1sks validator (ok: true, 0 errors, 0 warnings);/storage/v1/statusup; anonymous PUT 401.tsc --noEmitclean, 12/12 tests,next buildok.Next PR: hosting plugin (>=3 self-healing replicas, replica map gossiped, proxies on gateway nodes for Moshpit domains, fully p2p).
🤖 Generated with Claude Code