📄Encrypted, on-demand documentation backups with Plakar + Cloudflare R2

16 changed · 8 files unchanged (carried over intact from the previous snapshot)

changedgetting-started/installation.md
                      @@ -5,24 +5,30 @@  # Installing Nimbus -![Nimbus syncing across machines](./images/logo.jpg)+![The global Nimbus network](./images/logo.jpg) -Nimbus 0.5 is still a single binary, now published to Homebrew and a versioned-release feed.+Nimbus 1.0 is generally available. Install the CLI, or add the SDK to a project.++**CLI**  ```bash-brew install nimbus-# or pin a version-curl -fsSL https://get.nimbus.dev/install.sh | sh -s -- --version 0.5.0+brew install nimbus            # macOS / Linux+npm install -g @nimbus/cli     # any platform with Node 18+ ``` -Check the install:+**SDK**++```bash+npm install @nimbus/sdk+```++Verify:  ```bash nimbus --version-# nimbus 0.5.0+# nimbus 1.0.0 ``` -Upgrading from 0.1? The `sync` command still works, but projects now use a-`nimbus.toml` file. See [Configuration](../guides/configuration/).+1.0 is a stable release: the `nimbus.toml` schema and the CLI surface are now+covered by semantic versioning. 
                    
changedgetting-started/quickstart.md
                      @@ -5,39 +5,27 @@  # Quickstart -In 0.5 a project is described by a `nimbus.toml` file instead of command-line-arguments. Scaffold one:+New to Nimbus? Watch the two-minute tour, then follow along below.++<div class="embed embed-video"><iframe src="https://www.youtube.com/embed/jNQXAC9IVRw" title="Nimbus in two minutes" allowfullscreen loading="lazy"></iframe></div>+<p class="embed-caption">Placeholder video. Swap in your product walkthrough.</p>++Initialise and run a live sync that re-deploys on every change:  ```bash nimbus init+nimbus run --watch ``` -That writes:+`--watch` is new in 1.0: Nimbus watches the source, syncs incrementally, and+pushes to your remotes whenever a file changes. -```toml-# nimbus.toml-[project]-name = "docs"+Prefer code? The SDK does the same thing: -[[source]]-type = "local"-path = "./data"+```js+import { Nimbus } from '@nimbus/sdk' -[destination]-type = "local"-path = "./out"+const nimbus = new Nimbus({ key: process.env.NIMBUS_KEY })+await nimbus.watch({ source: './data', remote: 'edge-1' }) ``` -Then sync using the file, with no paths to remember:--```bash-nimbus sync-```--You can also push to a **remote** destination once you have added an API key-(see [Security](../guides/security/)):--```bash-nimbus deploy --remote edge-1-```-
                    
changedguides/configuration.md
                      @@ -5,34 +5,32 @@  # Configuration -![Nimbus configuration flows into every node](./images/architecture.jpg)+![Nimbus regions around the world](./images/architecture.jpg) -Nimbus 0.5 reads `nimbus.toml` from the project root. A fuller example:+1.0 adds **regions**: a remote can fan out to several locations. Declare them in+`nimbus.toml`:  ```toml [project] name = "docs"-concurrency = 4+concurrency = 8  [[source]] type = "local" path = "./data"-exclude = ["*.tmp", ".DS_Store"] -[destination]-type = "remote"-name = "edge-1"--[remote.edge-1]-url = "https://edge-1.nimbus.dev"+[remote.edge]+url = "https://edge.nimbus.dev"+regions = ["iad", "fra", "sin"] ``` -Any value can be overridden with an environment variable using the `NIMBUS_`-prefix and double underscores for nesting:+Deploys go to every listed region in parallel. Check what a config resolves to+before you ship it:  ```bash-NIMBUS_PROJECT__CONCURRENCY=8 nimbus sync+nimbus config show --resolved ``` -Environment variables win over the file, and command-line flags win over both.+As of 1.0 Nimbus refuses to start if `NIMBUS_KEY` is stored in a world-readable+file. Keep it in a secret manager or the environment. 
                    
changedguides/deployment.md
                      @@ -5,29 +5,25 @@  # Deployment -0.5 introduces remote destinations, so "deploy" now means pushing your synced-output to a Nimbus edge node.--Register a remote in `nimbus.toml`, then:+Deploy to every region of a remote with one command:  ```bash-nimbus deploy --remote edge-1+nimbus deploy --remote edge ``` -Run it from CI by setting the API key in the environment:+Or trigger a deploy over the new REST API, handy from a webhook: -```yaml-# .github/workflows/deploy.yml-jobs:-  deploy:-    runs-on: ubuntu-latest-    steps:-      - uses: actions/checkout@v4-      - run: curl -fsSL https://get.nimbus.dev/install.sh | sh-      - run: nimbus deploy --remote edge-1-        env:-          NIMBUS_KEY: ${{ secrets.NIMBUS_KEY }}+```bash+curl -X POST https://edge.nimbus.dev/run \+  -H "Authorization: Bearer $NIMBUS_KEY" \+  -H "Content-Type: application/json" \+  -d '{"source": "docs", "regions": ["iad", "fra"]}' ``` -There is a single node per remote for now. Multi-region rollout lands in 1.0.+Deploys are atomic per region: a region either serves the new manifest fully or+keeps the old one. Watch a rollout live: +```bash+nimbus deploy --remote edge --follow+```+
                    
changedguides/security.md
                      @@ -5,21 +5,27 @@  # Security -![The Nimbus deploy log](./images/dashboard.jpg)+![The Nimbus deploy dashboard](./images/dashboard.jpg) -Remote destinations need an API key. Create one in the dashboard and export it:+1.0 keys are scoped and auditable. Create a key limited to one remote and one+capability:  ```bash-export NIMBUS_KEY="nk_live_..."+nimbus keys create --remote edge --scope deploy ``` -Nimbus reads `NIMBUS_KEY` from the environment. Never put it in-`nimbus.toml`. That file is meant to be committed.--Keys are scoped to a single remote and can be rotated without downtime:+Every deploy is signed and recorded. List the audit log through the API:  ```bash-nimbus keys rotate --remote edge-1+curl https://edge.nimbus.dev/audit \+  -H "Authorization: Bearer $NIMBUS_KEY"+```++Rotating a key never interrupts serving. The old key stays valid for a grace+window:++```bash+nimbus keys rotate --remote edge --grace 24h ```  For the full history of security-relevant changes, see the
                    
changedguides/troubleshooting.md
                      @@ -5,22 +5,27 @@  # Troubleshooting -![Following a sync through the pipeline](./images/flow.jpg)+![Tracing a sync through the pipeline](./images/flow.jpg) -**`no nimbus.toml found`.** 0.5 needs a project file. Run `nimbus init` or point-at one explicitly:+**A region is stuck on the old manifest.** Deploys are atomic, so a region that+failed simply kept serving the previous version. Re-run with `--follow` to see+which region errored:  ```bash-nimbus sync --config ./path/to/nimbus.toml+nimbus deploy --remote edge --follow ``` -**`401 unauthorized` on deploy.** The API key is missing or wrong. Confirm it is-set for the current shell:+**`--watch` isn't picking up changes.** On some network file systems inotify+events are missed. Fall back to polling:  ```bash-echo "${NIMBUS_KEY:0:6}…"   # nk_liv…+nimbus run --watch --poll 2s ``` -**Deploy is slow.** Raise the worker count with `concurrency` in `nimbus.toml`-or `NIMBUS_PROJECT__CONCURRENCY`.+**Debugging the API.** Add `-v` to any command to print the HTTP requests it+makes: +```bash+nimbus deploy --remote edge -v+```+
                    
changedreference/api.md
                      @@ -5,19 +5,31 @@  # API reference -0.5 remotes expose a small management API. Authenticate with your API key as a-bearer token:+The 1.0 REST API is stable. All endpoints require a bearer token.++| Method | Path        | Description                    |+| ------ | ----------- | ------------------------------ |+| `GET`  | `/status`   | node health and last deploy    |+| `GET`  | `/manifest` | files currently served         |+| `GET`  | `/audit`    | signed deploy history          |+| `POST` | `/run`      | trigger a deploy               |++## Example: trigger a deploy  ```bash-curl https://edge-1.nimbus.dev/status \-  -H "Authorization: Bearer $NIMBUS_KEY"+curl -X POST https://edge.nimbus.dev/run \+  -H "Authorization: Bearer $NIMBUS_KEY" \+  -H "Content-Type: application/json" \+  -d '{"source": "docs", "regions": ["iad"]}' ``` -Available endpoints:+Response: -- `GET /status`: node health and last deploy time-- `GET /manifest`: the file list currently served by the node+```json+{+  "deploy": "dpl_5f3a",+  "regions": { "iad": "queued" },+  "manifest": "mf_91c2"+}+``` -There is no write API yet. Deploys go through the `nimbus` CLI. A full REST API-(including `POST /run`) arrives in 1.0.-
                    
changedreference/cli.md
                      @@ -6,19 +6,19 @@ # CLI reference  ```text-nimbus init                 scaffold a nimbus.toml-nimbus sync                 sync using nimbus.toml-nimbus deploy --remote <r>  push output to a remote-nimbus keys rotate          rotate a remote's API key-nimbus --version            print the version+nimbus init                    scaffold a nimbus.toml+nimbus run [--watch] [--poll]  sync, optionally continuously+nimbus deploy --remote <r>     deploy to every region of a remote+nimbus config show --resolved  print the fully resolved config+nimbus keys create|rotate      manage API keys ``` -## Global flags+## Common flags -| Flag           | Description                              |-| -------------- | ---------------------------------------- |-| `--config`     | path to a `nimbus.toml` (default: `./`)  |-| `--remote`     | target remote for `deploy`               |-| `--dry-run`    | show the plan without writing            |-| `--concurrency`| number of parallel workers               |+| Flag        | Description                                  |+| ----------- | -------------------------------------------- |+| `--watch`   | re-sync on every source change               |+| `--poll`    | use polling instead of file-system events    |+| `--follow`  | stream a deploy's per-region progress        |+| `-v`        | print the HTTP requests being made           | 
                    
changedreference/data/api-endpoints.json
                      @@ -1,9 +1,11 @@ {-  "version": "0.5.0",+  "version": "1.0.0",   "auth": "bearer",   "endpoints": [-    { "method": "GET", "path": "/status", "desc": "node health and last deploy time" },-    { "method": "GET", "path": "/manifest", "desc": "files currently served by the node" }+    { "method": "GET", "path": "/status", "desc": "node health and last deploy" },+    { "method": "GET", "path": "/manifest", "desc": "files currently served" },+    { "method": "GET", "path": "/audit", "desc": "signed deploy history" },+    { "method": "POST", "path": "/run", "desc": "trigger a deploy" }   ] } 
                    
changedreference/data/config-defaults.csv
                      @@ -1,8 +1,8 @@ key,default,description project.name,,project identifier-project.concurrency,4,number of parallel workers+project.concurrency,8,number of parallel workers source.type,local,source kind (local or remote)-source.exclude,,globs to skip-destination.type,local,destination kind (local or remote)-NIMBUS_KEY,,API key for remote destinations (env only)+remote.regions,,list of region codes to deploy to+run.poll,,polling interval when watching (e.g. 2s)+NIMBUS_KEY,,scoped API key (env or secret manager only) 
                    
changedreferences.md
                      @@ -5,19 +5,21 @@  # References and further reading -- The `nimbus.toml` schema reference-- API keys and how scoping works-- TOML, and why we chose it over YAML for the project file+- The Nimbus 1.0 REST API reference+- Regions and how atomic per-region deploys work+- The `@nimbus/sdk` TypeScript types  ## Spec sheet -The 0.5 spec sheet is captured in the backup and embedded below:--<div class="embed embed-pdf"><object data="./documents/spec-sheet.pdf" type="application/pdf"><a href="./documents/spec-sheet.pdf">Open the Nimbus 0.5 spec sheet (PDF) →</a></object></div>+<div class="embed embed-pdf"><object data="./documents/spec-sheet.pdf" type="application/pdf"><a href="./documents/spec-sheet.pdf">Open the Nimbus 1.0 spec sheet (PDF) →</a></object></div>  ## Downloads +Everything below is captured in the backup and retrieved from the snapshot on+demand:+ - [Spec sheet (PDF)](./documents/spec-sheet.pdf)+- [Release changelog (PDF)](./documents/changelog.pdf) - [Default configuration (CSV)](./reference/data/config-defaults.csv) - [API endpoints (JSON)](./reference/data/api-endpoints.json) ## Product screens
                    
changedtheme.css
                      @@ -1,61 +1,62 @@-/* Nimbus 0.5 docs theme: system sans, teal accent, boxed images. */+/* Nimbus 1.0 docs theme: clean sans, indigo accent, left-ruled code blocks. */ .doc {-  --accent: #0d9488;+  --accent: #4f46e5;   font-family:-    system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;+    'Inter', system-ui, -apple-system, sans-serif;   line-height: 1.7;-  color: #1f2937;+  color: #1e1b2e; } .doc h1, .doc h2, .doc h3 {-  font-family: inherit;   font-weight: 700;-  letter-spacing: -0.01em;-  color: #0f766e;+  letter-spacing: -0.02em;+  color: #312e81; } .doc h1 {-  border-bottom: 2px solid #99f6e4;-  padding-bottom: 6px;+  font-size: 1.9rem; } .doc h2 {-  margin-top: 1.8em;+  margin-top: 1.9em;+  padding-left: 10px;+  border-left: 4px solid #4f46e5; } .doc a {   color: var(--accent);   text-decoration: none;-  border-bottom: 1px solid #99f6e4;+  font-weight: 500; } .doc a:hover {-  border-bottom-color: var(--accent);+  text-decoration: underline; } .doc code {-  background: #f0fdfa;-  color: #0f766e;+  background: #eef2ff;+  color: #4338ca;   border-radius: 4px; } .doc pre {-  background: #0f2b28;-  color: #e6fffb;-  border-radius: 8px;+  background: #f5f5ff;+  border-left: 3px solid #4f46e5;+  border-radius: 0 8px 8px 0; } .doc pre code {   background: none;-  color: inherit;+  color: #1e1b2e; } .doc img {-  border: 4px solid #ccfbf1;-  border-radius: 10px;-}-.doc .embed-pdf iframe {-  border: 2px solid #ccfbf1;-  border-radius: 10px;+  border-radius: 12px;+  box-shadow: 0 8px 24px -12px rgba(79, 70, 229, 0.4); } .doc thead th {-  background: #f0fdfa;-  color: #0f766e;+  background: #eef2ff;+  color: #312e81;+}+.doc .embed-video {+  box-shadow: 0 12px 32px -14px rgba(49, 46, 129, 0.5); } .doc blockquote {-  border-left: 3px solid #14b8a6;+  border-left: 3px solid #4f46e5;+  background: #eef2ff;+  border-radius: 0 8px 8px 0; } 
                    
changedgetting-started/images/logo.jpg

Binary file. The bytes differ between versions (for example an image or PDF that was replaced).

changedguides/images/architecture.jpg

Binary file. The bytes differ between versions (for example an image or PDF that was replaced).

changedguides/images/dashboard.jpg

Binary file. The bytes differ between versions (for example an image or PDF that was replaced).

changedguides/images/flow.jpg

Binary file. The bytes differ between versions (for example an image or PDF that was replaced).