16 changed · 8 files unchanged (carried over intact from the previous snapshot)
changedgetting-started/installation.md
@@ -5,22 +5,24 @@ # Installing Nimbus -+ -> **Beta.** Nimbus 0.1 is an early preview. Commands and flags will change.--Nimbus ships as a single binary. Download it with the install script:+Nimbus 0.5 is still a single binary, now published to Homebrew and a versioned+release feed. ```bash-curl -fsSL https://get.nimbus.dev/install.sh | sh+brew install nimbus+# or pin a version+curl -fsSL https://get.nimbus.dev/install.sh | sh -s -- --version 0.5.0 ``` -Then confirm it runs:+Check the install: ```bash nimbus --version-# nimbus 0.1.0 (beta)+# nimbus 0.5.0 ``` -There are no other dependencies. The binary is self-contained.+Upgrading from 0.1? The `sync` command still works, but projects now use a+`nimbus.toml` file. See [Configuration](../guides/configuration/).
changedgetting-started/quickstart.md
@@ -5,23 +5,39 @@ # Quickstart -Nimbus 0.1 syncs a local folder to a destination directory. That is the whole-program for now.--Initialise a project:+In 0.5 a project is described by a `nimbus.toml` file instead of command-line+arguments. Scaffold one: ```bash nimbus init ``` -This writes a `.nimbus` marker in the current directory. Then run a one-shot-sync:+That writes:++```toml+# nimbus.toml+[project]+name = "docs"++[[source]]+type = "local"+path = "./data"++[destination]+type = "local"+path = "./out"+```++Then sync using the file, with no paths to remember: ```bash-nimbus sync ./data ./out+nimbus sync ``` -Everything under `./data` is copied to `./out`. Files that already match are-skipped. There is no daemon and no watching yet. You run `nimbus sync` whenever-you want to 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,19 +5,34 @@ # Configuration -+ -Nimbus 0.1 has no configuration file. Everything is passed on the command line:+Nimbus 0.5 reads `nimbus.toml` from the project root. A fuller example:++```toml+[project]+name = "docs"+concurrency = 4++[[source]]+type = "local"+path = "./data"+exclude = ["*.tmp", ".DS_Store"]++[destination]+type = "remote"+name = "edge-1"++[remote.edge-1]+url = "https://edge-1.nimbus.dev"+```++Any value can be overridden with an environment variable using the `NIMBUS_`+prefix and double underscores for nesting: ```bash-nimbus sync ./data ./out --exclude "*.tmp" --dry-run+NIMBUS_PROJECT__CONCURRENCY=8 nimbus sync ``` -The available flags are:+Environment variables win over the file, and command-line flags win over both. -- `--exclude <glob>`: skip files matching a glob (repeatable)-- `--dry-run`: print what would change without writing anything-- `--delete`: remove files in the destination that are gone from the source--A config file is planned so you do not have to repeat these on every run.-
changedguides/deployment.md
@@ -5,14 +5,29 @@ # Deployment -There is no server to deploy in 0.1. Nimbus runs on your machine as a one-shot-command.+0.5 introduces remote destinations, so "deploy" now means pushing your synced+output to a Nimbus edge node. -If you want it to run on a schedule, wire the binary into `cron`:+Register a remote in `nimbus.toml`, then: -```cron-*/15 * * * * /usr/local/bin/nimbus sync /srv/data /srv/out+```bash+nimbus deploy --remote edge-1 ``` -A long-running service with a proper scheduler is on the roadmap.+Run it from CI by setting the API key in the environment: +```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 }}+```++There is a single node per remote for now. Multi-region rollout lands in 1.0.+
changedguides/security.md
@@ -5,18 +5,23 @@ # Security -+ -Nimbus 0.1 runs entirely on your machine and talks to no network, so there are-no credentials to manage yet.--The one thing to know: `--delete` removes files from the destination. Always try-it with `--dry-run` first:+Remote destinations need an API key. Create one in the dashboard and export it: ```bash-nimbus sync ./data ./out --delete --dry-run+export NIMBUS_KEY="nk_live_..." ``` -Remote sources and API keys arrive in a later release. This page will grow with-them.+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:++```bash+nimbus keys rotate --remote edge-1+```++For the full history of security-relevant changes, see the+[release changelog (PDF)](../documents/changelog.pdf).+
changedguides/troubleshooting.md
@@ -5,18 +5,22 @@ # Troubleshooting -+ -**Nothing happened.** Make sure you ran `nimbus init` in the project first. The-sync refuses to run without a `.nimbus` marker.--**Some files were skipped.** Nimbus compares size and modification time. Touch a-file or pass `--force` to copy it anyway:+**`no nimbus.toml found`.** 0.5 needs a project file. Run `nimbus init` or point+at one explicitly: ```bash-nimbus sync ./data ./out --force+nimbus sync --config ./path/to/nimbus.toml ``` -If a sync looks wrong, re-run it with `--dry-run` to see the plan before any-files are written.+**`401 unauthorized` on deploy.** The API key is missing or wrong. Confirm it is+set for the current shell: +```bash+echo "${NIMBUS_KEY:0:6}…" # nk_liv…+```++**Deploy is slow.** Raise the worker count with `concurrency` in `nimbus.toml`+or `NIMBUS_PROJECT__CONCURRENCY`.+
changedreference/api.md
@@ -5,23 +5,19 @@ # API reference -Nimbus 0.1 has no HTTP API. It is a command-line tool only.--If you want to script it, call the binary and check its exit code:+0.5 remotes expose a small management API. Authenticate with your API key as a+bearer token: ```bash-if nimbus sync ./data ./out --dry-run; then- echo "in sync"-else- echo "changes pending"-fi+curl https://edge-1.nimbus.dev/status \+ -H "Authorization: Bearer $NIMBUS_KEY" ``` -Exit codes:+Available endpoints: -- `0`: source and destination already match-- `1`: changes were applied (or would be, with `--dry-run`)-- `2`: an error occurred+- `GET /status`: node health and last deploy time+- `GET /manifest`: the file list currently served by the node -A proper REST API is planned for the 1.0 release.+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
@@ -5,21 +5,20 @@ # CLI reference -The complete 0.1 command set:- ```text-nimbus init mark the current directory as a project-nimbus sync <src> <dst> copy <src> to <dst>+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 --help show help ``` -## Flags for `sync`+## Global flags -| Flag | Description |-| ---------------- | --------------------------------------------- |-| `--exclude` | skip files matching a glob (repeatable) |-| `--dry-run` | show the plan without writing |-| `--delete` | delete extra files in the destination |-| `--force` | copy even when size and mtime match |+| 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 |
changedreference/data/api-endpoints.json
@@ -1,11 +1,9 @@ {- "version": "0.1.0",- "api": false,- "note": "Nimbus 0.1 is a CLI only. No HTTP endpoints are exposed.",- "exitCodes": {- "0": "source and destination already match",- "1": "changes applied",- "2": "error"- }+ "version": "0.5.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" }+ ] }
changedreference/data/config-defaults.csv
@@ -1,6 +1,8 @@-flag,default,description---exclude,,skip files matching a glob (repeatable)---dry-run,false,show the plan without writing---delete,false,delete extra files in the destination---force,false,copy even when size and mtime match+key,default,description+project.name,,project identifier+project.concurrency,4,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)
changedreferences.md
@@ -5,16 +5,21 @@ # References and further reading -Background reading for the 0.1 beta:+- 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 design sketch-- Why we compare by size and mtime, not by hashing (yet)-- rsync, and what we borrowed from it+## 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> ## Downloads - [Spec sheet (PDF)](./documents/spec-sheet.pdf)-- [Default flags (CSV)](./reference/data/config-defaults.csv)+- [Default configuration (CSV)](./reference/data/config-defaults.csv)+- [API endpoints (JSON)](./reference/data/api-endpoints.json) ## Product screens The Nimbus media kit ships unchanged with every release. These full-resolution
changedtheme.css
@@ -1,48 +1,61 @@-/* Nimbus 0.1 docs theme: plain and utilitarian: serif headings, blue links. */+/* Nimbus 0.5 docs theme: system sans, teal accent, boxed images. */ .doc {- --accent: #1a56db;- font-family: Georgia, 'Times New Roman', serif;- line-height: 1.75;- color: #1b1b1b;+ --accent: #0d9488;+ font-family:+ system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;+ line-height: 1.7;+ color: #1f2937; } .doc h1, .doc h2, .doc h3 {- font-family: Georgia, 'Times New Roman', serif;+ font-family: inherit; font-weight: 700;- color: #111;+ letter-spacing: -0.01em;+ color: #0f766e; } .doc h1 {- border-bottom: 2px solid #e5e5e5;+ border-bottom: 2px solid #99f6e4; padding-bottom: 6px;+}+.doc h2 {+ margin-top: 1.8em; } .doc a { color: var(--accent);- text-decoration: underline;+ text-decoration: none;+ border-bottom: 1px solid #99f6e4;+}+.doc a:hover {+ border-bottom-color: var(--accent); } .doc code {- font-family: ui-monospace, Menlo, monospace;- background: #f2f2f2;- border-radius: 3px;+ background: #f0fdfa;+ color: #0f766e;+ border-radius: 4px; } .doc pre {- background: #f6f6f6;- border: 1px solid #e2e2e2;- border-radius: 4px;+ background: #0f2b28;+ color: #e6fffb;+ border-radius: 8px;+}+.doc pre code {+ background: none;+ color: inherit; } .doc img {- border: 1px solid #ddd;+ border: 4px solid #ccfbf1;+ border-radius: 10px;+}+.doc .embed-pdf iframe {+ border: 2px solid #ccfbf1;+ border-radius: 10px;+}+.doc thead th {+ background: #f0fdfa;+ color: #0f766e; } .doc blockquote {- border-left: 4px solid #1a56db;- color: #555;- font-style: italic;-}-.doc th,-.doc td {- border-color: #ddd;-}-.doc thead th {- background: #f2f2f2;+ border-left: 3px solid #14b8a6; }
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).