mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-10-01 20:33:50 +00:00
OpenServer 0.2: the provider says how to install its CLI (#171)
A directory that lists a host's plans is asked the next question at once: how do I drive this thing from a terminal? Every provider answers it on a page of its own, in its own words, and a reader that wants the install line has to find and read that page for each host. nichedb.dev's hosting collection just did exactly that for 46 providers, copying the commands off each vendor's guide, and the exercise is the argument for putting the facts in the descriptor. `provider.developer` names the official CLI, its install commands keyed by package manager and copied as the guide prints them, the install guide and source, the API docs, the Terraform provider and the GitHub organisation. A provider with no CLI says `"cli": null`, which is a fact, while a missing block means unknown. Commands are copied, never composed: a reader that invents `brew install <name>` sends a buyer to a formula that may not exist. c0mpute.md gains the same block for the compute market, with the one install line c0mpute.com prints, and the landing page says what 0.2 adds. Claude-Session: https://claude.ai/code/session_01Khk1C6Ese6xjdHAWLVstca Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
df57b54bde
commit
85426e2ae0
3 changed files with 50 additions and 6 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
OpenServer is one file a hosting provider serves about what it sells: every server, instance, box, rack, function and peer-market listing it offers, with the specs, the price, where it runs and whether it is in stock. A directory reads the provider's own file instead of scraping an aggregator, a buyer's agent reads it instead of a pricing page, and the provider stays the author of its own words. It covers cloud, VPS, dedicated and bare-metal servers, colocation, hardware sold to run on your own premises, shared and managed hosting, platforms, functions, storage, GPU, edge, peer-to-peer markets and the hybrids in between. It is maintained by Profullstack, Inc. as part of the LogicSRC open-standards surface.
|
||||
|
||||
Status: **0.1**. A description of a file a directory already reads, published so a provider can serve one and any directory can read it.
|
||||
Status: **0.2**. A description of a file a directory already reads, published so a provider can serve one and any directory can read it.
|
||||
|
||||
Slug: `openserver`
|
||||
|
||||
|
|
@ -32,7 +32,18 @@ A provider serves a JSON document at `/.well-known/openserver.json` on its own o
|
|||
"country": "NL",
|
||||
"support": "https://northwind.example/support",
|
||||
"status": "https://status.northwind.example",
|
||||
"legal": "https://northwind.example/terms"
|
||||
"legal": "https://northwind.example/terms",
|
||||
"developer": {
|
||||
"cli": {
|
||||
"name": "nwctl",
|
||||
"install": { "brew": "brew install northwind/tap/nwctl", "curl": "curl -fsSL https://northwind.example/cli/install.sh | sh" },
|
||||
"docs": "https://northwind.example/docs/cli",
|
||||
"repo": "https://github.com/northwind/nwctl"
|
||||
},
|
||||
"api_docs": "https://northwind.example/docs/api",
|
||||
"terraform": { "source": "northwind/northwind", "docs": "https://registry.terraform.io/providers/northwind/northwind" },
|
||||
"github": "https://github.com/northwind"
|
||||
}
|
||||
},
|
||||
"updated": "2026-09-13T06:00:00Z",
|
||||
"offers": [
|
||||
|
|
@ -120,7 +131,8 @@ The rules, and every one degrades:
|
|||
7. **`compute`, `storage`, `network`** describe the thing. Units are fixed: `ram_mb` and `vram_mb` in mebibytes, `size_gb` in gigabytes, `bandwidth_mbps` in megabits per second, `transfer_gb` per interval. `vcpu` is threads sold, `cores` is physical cores; a dedicated box states `cores`, a virtual one states `vcpu`, and one may state both. `arch` is `x86_64`, `arm64`, `riscv64` or the provider's own word. `storage` is a list, one entry per volume, so two drives are two entries. `ipv4` is a count, `ipv6` a boolean.
|
||||
8. **`price`** is one price. `amount` is a number, `currency` an ISO 4217 code, `interval` is `hour`, `month`, `year` or `once`. `setup` is a one-time amount on top. `commitment` is the shortest term a buyer signs for, in words the provider uses. An offer sold at several intervals is several offers with a shared prefix in `id`, or one offer at the interval the provider quotes first, and a reader shows what it was given.
|
||||
9. **`stock`** is `in_stock`, `out_of_stock`, `preorder` or `unknown`. Absent means `unknown`. A directory that shows stock shows when it was read.
|
||||
10. **Unknown keys are kept.** A provider says more than this document names, and a reader passes it through under the provider's own key.
|
||||
10. **`provider.developer`** is how a developer, or an agent acting for one, drives the provider without the website. `cli` names the official command-line tool: `name` is the binary, `install` is a map of package manager to the exact command line the provider's own guide prints (`brew`, `npm`, `pip`, `go`, `curl`, `apt`, `winget`, `scoop`, or the provider's own key), `docs` is the install guide and `repo` the source. `api_docs` is the API reference, `terraform` names the Terraform provider by registry `source` with its `docs`, `github` is the organisation. A provider with no CLI states `"cli": null`, which tells a reader to stop looking; a reader that finds no `developer` block at all reports the CLI as unknown, not absent. Commands are copied, never composed: a directory that invents `brew install <name>` sends a buyer to a formula that may not exist.
|
||||
11. **Unknown keys are kept.** A provider says more than this document names, and a reader passes it through under the provider's own key.
|
||||
|
||||
Serve it as `application/json`. The descriptor is a claim; that it came from the provider's own origin is the verification.
|
||||
|
||||
|
|
@ -206,6 +218,7 @@ By hand, from the same table the order form reads. A provider with a database ha
|
|||
- [OpenSwarm](/openswarm): the settlement and proof layer under a peer-to-peer offer; [c0mpute](https://github.com/profullstack/logicsrc/blob/master/docs/openswarm/c0mpute.md) is its compute marketplace and [OpenDisk](/docs/opendisk) its disk-for-rent peer, each listable here as an offer.
|
||||
- [OpenCPU](/docs/opencpu), [OpenMemory](/docs/openmemory), [OpenGPU](/docs/opengpu), [OpenBandwidth](/docs/openbandwidth): the resource blocks. An offer's `compute` (cpu and memory), `compute.gpu` and `network` may carry those specs' fields when the provider has them, and each can stand alone as an offer of its own.
|
||||
- [OpenProfile.md](/openprofile): the `operator` behind a provider.
|
||||
- [nichedb.dev/f/hosting-cli](https://nichedb.dev/f/hosting-cli): the first reader of `provider.developer`, which lists every host with a CLI and shows the install commands on the provider's page.
|
||||
- [OpenMCP](/openmcp): a directory that also serves its rows over MCP describes that door with an OpenMCP descriptor.
|
||||
- [OpenAccess](/openaccess): how a buyer's agent carries the credential it needs at the provider's order form, if the provider honours one.
|
||||
|
||||
|
|
@ -214,6 +227,7 @@ By hand, from the same table the order form reads. A provider with a database ha
|
|||
| Version | Date | Change |
|
||||
|---|---|---|
|
||||
| 0.1 | 2026-09-13 | First publication: the descriptor, fifteen kinds, four axes, peer-to-peer markets, discovery, what a directory owes a provider. |
|
||||
| 0.2 | 2026-09-13 | `provider.developer`: the official CLI with its install commands as the guide prints them, API docs, Terraform provider and GitHub organisation; `"cli": null` for a provider that has none. |
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,32 @@ OpenSwarm adds nothing to how a node joins or bids. It adds workload types
|
|||
the node can bid on, a second identity the node registers as a payee, and
|
||||
per-byte income that arrives without any auction.
|
||||
|
||||
## 1.1 The CLI, and how a directory learns it
|
||||
|
||||
c0mpute is CLI-first. The install line, as c0mpute.com prints it:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://c0mpute.com/install.sh | sh
|
||||
```
|
||||
|
||||
That installs the `c0mpute` binary and its module CLIs into `~/.c0mpute/bin`, each pulled from its own release feed. Source is [github.com/profullstack/c0mpute](https://github.com/profullstack/c0mpute).
|
||||
|
||||
A directory should not have to read this page to learn that. c0mpute.com is a peer-to-peer compute market, so it serves an [OpenServer](/docs/openserver) descriptor at `/.well-known/openserver.json` whose offers are the network's current asks, and since OpenServer 0.2 the `provider.developer` block carries the same facts in a shape every reader agrees on:
|
||||
|
||||
```json
|
||||
"developer": {
|
||||
"cli": {
|
||||
"name": "c0mpute",
|
||||
"install": { "curl": "curl -fsSL https://c0mpute.com/install.sh | sh" },
|
||||
"docs": "https://c0mpute.com/docs/cli",
|
||||
"repo": "https://github.com/profullstack/c0mpute"
|
||||
},
|
||||
"github": "https://github.com/profullstack"
|
||||
}
|
||||
```
|
||||
|
||||
The commands in that block are copied from the install page, never composed by the reader. The hosting collection at [nichedb.dev](https://nichedb.dev/c/hosting) is the first directory that shows them.
|
||||
|
||||
## 2. Node identity and payout
|
||||
|
||||
A node derives an OpenSwarm identity from its libp2p key:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue