diff --git a/apps/logicsrc-web/src/app/openserver/page.tsx b/apps/logicsrc-web/src/app/openserver/page.tsx index c474478..6b8d69c 100644 --- a/apps/logicsrc-web/src/app/openserver/page.tsx +++ b/apps/logicsrc-web/src/app/openserver/page.tsx @@ -105,10 +105,14 @@ export default function OpenServerPage(): ReactNode { reader agrees on, so an offer can be found instead of scraped.
- Status: 0.1. It covers cloud, VPS, dedicated and bare-metal servers, colocation, + Status: 0.2. It covers cloud, VPS, dedicated and bare-metal servers, colocation, hardware for your own premises, shared and managed hosting, platforms, functions, - storage, GPU, edge and peer-to-peer markets. The first directory reading it is the hosting - collection at nichedb.dev. + storage, GPU, edge and peer-to-peer markets. Since 0.2 the provider also says how a + developer drives it: the official CLI with its install commands as the vendor's own guide + prints them, the API docs, the Terraform provider and the GitHub organisation. The first + directory reading it is the hosting collection at{" "} + nichedb.dev, which lists every host with a CLI + at /f/hosting-cli.
diff --git a/docs/openserver.md b/docs/openserver.md index 73d40ad..b830cd1 100644 --- a/docs/openserver.md +++ b/docs/openserver.md @@ -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