16 changed · 8 files unchanged (carried over intact from the previous snapshot)
changedgetting-started/installation.md
@@ -5,24 +5,30 @@ # Installing Nimbus -+ -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 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 -+ -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 -+ -**`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).