rigscope 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +13 -0
- package/.next/build-manifest.json +20 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +297 -0
- package/.next/react-loadable-manifest.json +1 -0
- package/.next/required-server-files.json +369 -0
- package/.next/routes-manifest.json +114 -0
- package/.next/server/app/_global-error/page.js +31 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +35 -0
- package/.next/server/app/_global-error.rsc +18 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +24 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/_not-found/page.js +1 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.meta +35 -0
- package/.next/server/app/_not-found.rsc +24 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +24 -0
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +30 -0
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/administration/page.js +1 -0
- package/.next/server/app/administration/page.js.nft.json +1 -0
- package/.next/server/app/administration/page_client-reference-manifest.js +1 -0
- package/.next/server/app/administration.html +1 -0
- package/.next/server/app/administration.meta +34 -0
- package/.next/server/app/administration.rsc +29 -0
- package/.next/server/app/administration.segments/_full.segment.rsc +29 -0
- package/.next/server/app/administration.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/administration.segments/administration/__PAGE__.segment.rsc +35 -0
- package/.next/server/app/alerts/page.js +1 -0
- package/.next/server/app/alerts/page.js.nft.json +1 -0
- package/.next/server/app/alerts/page_client-reference-manifest.js +1 -0
- package/.next/server/app/alerts.html +1 -0
- package/.next/server/app/alerts.meta +34 -0
- package/.next/server/app/alerts.rsc +28 -0
- package/.next/server/app/alerts.segments/_full.segment.rsc +28 -0
- package/.next/server/app/alerts.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/alerts.segments/alerts/__PAGE__.segment.rsc +34 -0
- package/.next/server/app/connections/page.js +1 -0
- package/.next/server/app/connections/page.js.nft.json +1 -0
- package/.next/server/app/connections/page_client-reference-manifest.js +1 -0
- package/.next/server/app/connections.html +1 -0
- package/.next/server/app/connections.meta +34 -0
- package/.next/server/app/connections.rsc +29 -0
- package/.next/server/app/connections.segments/_full.segment.rsc +29 -0
- package/.next/server/app/connections.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +35 -0
- package/.next/server/app/history/page.js +2 -0
- package/.next/server/app/history/page.js.nft.json +1 -0
- package/.next/server/app/history/page_client-reference-manifest.js +1 -0
- package/.next/server/app/history.html +1 -0
- package/.next/server/app/history.meta +34 -0
- package/.next/server/app/history.rsc +33 -0
- package/.next/server/app/history.segments/_full.segment.rsc +33 -0
- package/.next/server/app/history.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/history.segments/history/__PAGE__.segment.rsc +37 -0
- package/.next/server/app/icon.svg/route.js +1 -0
- package/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/.next/server/app/icon.svg.body +1 -0
- package/.next/server/app/icon.svg.meta +1 -0
- package/.next/server/app/index.html +1 -0
- package/.next/server/app/index.meta +29 -0
- package/.next/server/app/index.rsc +26 -0
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +31 -0
- package/.next/server/app/index.segments/_full.segment.rsc +26 -0
- package/.next/server/app/index.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/login/page.js +1 -0
- package/.next/server/app/login/page.js.nft.json +1 -0
- package/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/.next/server/app/login.html +1 -0
- package/.next/server/app/login.meta +34 -0
- package/.next/server/app/login.rsc +26 -0
- package/.next/server/app/login.segments/_full.segment.rsc +26 -0
- package/.next/server/app/login.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +32 -0
- package/.next/server/app/machines/[machineId]/page.js +1 -0
- package/.next/server/app/machines/[machineId]/page.js.nft.json +1 -0
- package/.next/server/app/machines/[machineId]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/page.js +1 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app/processes/page.js +2 -0
- package/.next/server/app/processes/page.js.nft.json +1 -0
- package/.next/server/app/processes/page_client-reference-manifest.js +1 -0
- package/.next/server/app/processes.html +1 -0
- package/.next/server/app/processes.meta +34 -0
- package/.next/server/app/processes.rsc +30 -0
- package/.next/server/app/processes.segments/_full.segment.rsc +30 -0
- package/.next/server/app/processes.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/processes.segments/processes/__PAGE__.segment.rsc +36 -0
- package/.next/server/app-paths-manifest.json +13 -0
- package/.next/server/chunks/161.js +1 -0
- package/.next/server/chunks/168.js +1 -0
- package/.next/server/chunks/266.js +68 -0
- package/.next/server/chunks/430.js +116 -0
- package/.next/server/chunks/721.js +1 -0
- package/.next/server/chunks/751.js +1 -0
- package/.next/server/chunks/877.js +1 -0
- package/.next/server/chunks/894.js +2 -0
- package/.next/server/functions-config-manifest.json +4 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +4 -0
- package/.next/server/prefetch-hints.json +123 -0
- package/.next/server/preview-props.json +5 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/DZKWF9ur7H5wI0c7RAhdq/_buildManifest.js +1 -0
- package/.next/static/DZKWF9ur7H5wI0c7RAhdq/_ssgManifest.js +1 -0
- package/.next/static/chunks/103-c47318242b24e9ac.js +1 -0
- package/.next/static/chunks/157-0d36ebf66af048ac.js +1 -0
- package/.next/static/chunks/227-417939c480f50747.js +1 -0
- package/.next/static/chunks/408-18819c6490a5f8d3.js +1 -0
- package/.next/static/chunks/4bd1b696-c7408084347438ae.js +1 -0
- package/.next/static/chunks/794-ceeb732a1a81bc27.js +52 -0
- package/.next/static/chunks/939-2600d7c8e583d5ef.js +1 -0
- package/.next/static/chunks/app/_global-error/page-aba28f88d5781771.js +1 -0
- package/.next/static/chunks/app/_not-found/page-a2a510233e4836e2.js +1 -0
- package/.next/static/chunks/app/administration/page-4b16b19bb6a39c36.js +1 -0
- package/.next/static/chunks/app/alerts/page-fe0e877778c60af8.js +1 -0
- package/.next/static/chunks/app/connections/page-99cd54d6929b3f1f.js +1 -0
- package/.next/static/chunks/app/history/page-3fa5846eca26b7f7.js +3 -0
- package/.next/static/chunks/app/layout-4feff677c4071745.js +1 -0
- package/.next/static/chunks/app/login/page-c57e12dbe5146737.js +1 -0
- package/.next/static/chunks/app/machines/[machineId]/page-a5aa1d8676272f38.js +1 -0
- package/.next/static/chunks/app/page-1ae9fc94c897785b.js +1 -0
- package/.next/static/chunks/app/processes/page-e471ed23a1d5632f.js +3 -0
- package/.next/static/chunks/framework-ea4f97ca039bd777.js +1 -0
- package/.next/static/chunks/main-a458d32948147b84.js +5 -0
- package/.next/static/chunks/main-app-f92328c8950d2e53.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-aba28f88d5781771.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-aba28f88d5781771.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-43cbaa3aa1576eb4.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-aba28f88d5781771.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aba28f88d5781771.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-9ca43f4ce1bb8938.js +1 -0
- package/.next/static/css/e41ccbccc3afaae5.css +1 -0
- package/ARCHITECTURE.md +279 -0
- package/CHANGELOG.md +25 -0
- package/DESIGN.md +299 -0
- package/LICENSE +21 -0
- package/README.md +157 -2
- package/SECURITY.md +12 -0
- package/THIRD_PARTY_NOTICES.md +8847 -0
- package/bin/rigscope.cjs +6 -0
- package/dist/cli.cjs +9075 -0
- package/dist/collector.cjs +5671 -0
- package/dist/hub.cjs +8355 -0
- package/dist/ops.cjs +4972 -0
- package/dist/system.cjs +4333 -0
- package/docs/bottlenecks.md +62 -0
- package/docs/development.md +46 -0
- package/docs/exports.md +39 -0
- package/docs/installation.md +477 -0
- package/docs/operations.md +515 -0
- package/docs/releasing.md +152 -0
- package/docs/scale-acceptance.json +412 -0
- package/docs/scale-validation.json +1898 -0
- package/docs/scale-validation.md +263 -0
- package/next.config.js +38 -0
- package/package.json +109 -4
- package/packaging/README.md +5 -0
- package/packaging/collector.env.example +24 -0
- package/packaging/hub.env.example +31 -0
- package/packaging/system/90-rigscope-rapl.rules +7 -0
- package/packaging/system/README.md +5 -0
- package/packaging/system/rigscope-collector.service.example +53 -0
- package/packaging/system/rigscope-hub.service.example +50 -0
- package/packaging/system/rigscope-rapl.sysusers +5 -0
- package/packaging/system/rigscope.sysusers +7 -0
package/README.md
CHANGED
|
@@ -1,3 +1,158 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Rigscope
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Your machines, in view. A self-hosted Linux system and process monitor for one machine or a small fleet. A collector samples each machine and connects outbound to one or more independently operated hubs. Each hub owns its users, permissions, SQLite history and alerts.
|
|
4
|
+
|
|
5
|
+
Requires Linux, Node.js 26+ with npm, and a working systemd user manager for background services. Install a published release with:
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npx --yes rigscope@latest install --boot
|
|
9
|
+
~/.local/bin/rigscope
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
If the npm release is not available yet, use the [release archive instructions](docs/installation.md#install-from-an-archive). No global npm installation or source checkout is required.
|
|
13
|
+
|
|
14
|
+
Save the generated `owner` password and open the printed URL. The default installation starts separate hub and collector services. `--boot` enables user lingering; without it, startup is at login. The installer reports any host authorization needed. Add `~/.local/bin` to PATH to use the commands below. Bare `rigscope` shows status.
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
rigscope status
|
|
18
|
+
rigscope logs hub
|
|
19
|
+
rigscope stop collector
|
|
20
|
+
rigscope start collector
|
|
21
|
+
rigscope upgrade
|
|
22
|
+
rigscope rollback
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
For a foreground trial before installing services, run `npx --yes rigscope@latest try`. It uses separate trial state and stops with Ctrl+C. For a collector reporting to an existing hub, install with `--role collector`, then use `rigscope connect https://your-hub.example.com` and paste an Add machine grant at the private prompt. Each collector supports up to eight hubs.
|
|
26
|
+
|
|
27
|
+
Rigscope includes real resource telemetry, fleet and machine views, durable History, on-demand Processes, alerts/webhooks and user/collector administration. Process inspection is read-only; kill, renice, service control, hub federation and clustering are outside this release. Missing readings remain unavailable, and stale data retains its freshness status.
|
|
28
|
+
|
|
29
|
+
[Installation and hardware](docs/installation.md) · [Operations and recovery](docs/operations.md) · [Release notes](CHANGELOG.md) · [Development](docs/development.md) · [Releasing and verification](docs/releasing.md) · [Architecture](ARCHITECTURE.md) · [Design](DESIGN.md)
|
|
30
|
+
|
|
31
|
+
[Bottleneck readings](docs/bottlenecks.md) explains optional sensors and their limits. [Exports](docs/exports.md) describes visible-data CSV/JSON downloads. [Scale validation](docs/scale-validation.md) records synthetic workloads on one host; it is not a capacity guarantee.
|
|
32
|
+
|
|
33
|
+
Maintained by [Triet (@Triet1402)](https://github.com/Triet1402). Licensed under [MIT](LICENSE); dependency attribution is in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). See [SECURITY.md](SECURITY.md) to report vulnerabilities privately.
|
|
34
|
+
|
|
35
|
+
## Advanced configuration
|
|
36
|
+
|
|
37
|
+
Managed installations use `rigscope config` and private settings described in
|
|
38
|
+
[installation](docs/installation.md#hub-configuration). The environment variables
|
|
39
|
+
below apply to source development and raw hub/collector services; setting them in
|
|
40
|
+
your shell does not reconfigure a managed service.
|
|
41
|
+
|
|
42
|
+
Keep state/configuration directories 0700 and files 0600. Do not commit them.
|
|
43
|
+
|
|
44
|
+
| Hub variable | Behavior |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| `HUB_HOST`, `HUB_PORT` | Loopback-only listener; defaults `127.0.0.1:8081`. Port `0` is useful for isolated tests. |
|
|
47
|
+
| `HUB_PUBLIC_ORIGIN`, `HUB_SOCKET_PATH` | Required together for remote mode. Exact HTTPS origin and private absolute Unix socket. No TCP listener in this mode. |
|
|
48
|
+
| `HUB_DATABASE_PATH` | Authoritative SQLite telemetry/users/alerts/collector registry. Defaults beside `HUB_STATE_FILE`, otherwise `$XDG_STATE_HOME/rigscope/hub/telemetry.sqlite` (falling back to `~/.local/state`). |
|
|
49
|
+
| `HUB_BROWSER_USERS` | First-run bootstrap JSON: `{username,passwordHash,machineIds,admin?}`. Scope is `"*"` or a machine-ID array; `[]` grants no machine access. |
|
|
50
|
+
| `HUB_ADMIN_USERS` | Comma-separated usernames explicitly elevated during first import. When absent, an existing bootstrap account named `owner` is migrated as administrator. Other users need an explicit `admin:true`. |
|
|
51
|
+
| `HUB_COLLECTORS` | First-run bootstrap JSON: `{collectorId,machineId,token}`; bounded by JSON bytes rather than machine count. Credentials travel only in bearer headers. |
|
|
52
|
+
| `HUB_MAX_COLLECTOR_CONNECTIONS` | Concurrent collector socket budget; defaults to 100. Positive integer; tune to measured deployment capacity. |
|
|
53
|
+
| `HUB_STATE_FILE` | Private enrollment-file import source for existing installations; enables the enrollment endpoint. Preserve it with deployment configuration for recovery. |
|
|
54
|
+
| `HUB_ENROLLMENT_GRANTS` | Bootstrap grants `{token,expiresAt}`; at most 15 minutes. Consumed grants remain consumed across migration/restart. |
|
|
55
|
+
|
|
56
|
+
From a source checkout, generate salted scrypt hashes with
|
|
57
|
+
`scripts/hash-browser-password.cjs`, which reads passwords from stdin. Managed
|
|
58
|
+
installation generates the initial account automatically. Keep hashes private. The database imports existing
|
|
59
|
+
users/credentials once; later configuration restarts do not overwrite managed users
|
|
60
|
+
or resurrect revoked credentials. Administration changes apply to active sessions
|
|
61
|
+
and collector connections. Existing owner passwords and scopes are preserved.
|
|
62
|
+
|
|
63
|
+
| Collector variable | Behavior |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `COLLECTOR_MODE` | `real` by default; `mock` is explicit synthetic telemetry and never scans real processes. |
|
|
66
|
+
| `COLLECTOR_STATE_FILE` | Private persistent identity, enrolled destinations and pending enrollment recovery proof. Defaults under `$XDG_STATE_HOME/rigscope/collector.json`. |
|
|
67
|
+
| `COLLECTOR_INTERVAL_MS` | Shared sampling cadence; defaults 1000 ms, minimum 100 ms. GPU polling has a 1-second local floor. |
|
|
68
|
+
| `COLLECTOR_HUBS` | Optional explicit destinations `{url,token,sharing?,intervalMs?}`; at most eight. Otherwise use saved enrollment. |
|
|
69
|
+
| `COLLECTOR_HOSTNAME` | Metadata only; real mode defaults to OS hostname. |
|
|
70
|
+
|
|
71
|
+
Destination `sharing` accepts `cpu`, `memory`, `swap`, `gpus`, `disks`, `network`,
|
|
72
|
+
`networkAddresses`, `processes`, `processArguments`. CPU/memory remain required when
|
|
73
|
+
an object is supplied. Missing fields default to true, except swap follows memory
|
|
74
|
+
and process arguments default false. Review local sharing before upgrading a
|
|
75
|
+
restricted destination to broader metrics. Environment variables are never collected.
|
|
76
|
+
Policy is applied before queueing, to restored pending metrics before sending, and
|
|
77
|
+
to every process result separately for each hub.
|
|
78
|
+
|
|
79
|
+
## Source enrollment, rotation and replacement
|
|
80
|
+
|
|
81
|
+
For a managed installation, use `rigscope connect` as described in
|
|
82
|
+
[Add machines and hubs](docs/installation.md#add-machines-and-hubs). The following
|
|
83
|
+
commands require a source checkout with development dependencies installed.
|
|
84
|
+
|
|
85
|
+
Create a short-lived grant through an authorized administration flow. On the machine,
|
|
86
|
+
set `COLLECTOR_ENROLL_URL` to its full `ws[s]://…/api/collector/connect` URL and
|
|
87
|
+
`COLLECTOR_ENROLL_TOKEN` privately, then run:
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
npm run collector:enroll
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The collector saves a random recovery proof before requesting a credential. A retry
|
|
94
|
+
after a lost successful response recovers the same credential using that proof;
|
|
95
|
+
collector ID or hostname alone is insufficient. Restart the collector to apply changes.
|
|
96
|
+
|
|
97
|
+
Rotation/replacement requires a grant explicitly bound to the existing hub-local
|
|
98
|
+
machine mapping. Use `npm run collector:enroll -- --replace-enrollment` to replace a
|
|
99
|
+
saved destination. Revocation invalidates open connections and old recovery proofs.
|
|
100
|
+
Replacement never matches a machine by hostname or address.
|
|
101
|
+
|
|
102
|
+
## Monitoring behavior and bounds
|
|
103
|
+
|
|
104
|
+
- Samples are acknowledged only after a durable SQLite commit. Retries deduplicate
|
|
105
|
+
by collector/run/sequence. Replay fills History without replacing live state or
|
|
106
|
+
triggering historical threshold incidents.
|
|
107
|
+
- Per-destination outboxes retain pending metrics across collector restart, prioritize
|
|
108
|
+
live telemetry, and bound replay/in-flight work. Defaults: ten minutes or 64 MiB
|
|
109
|
+
of queued JSON per destination, 256 MiB aggregate queued JSON. Separate physical
|
|
110
|
+
budgets count main database files plus WAL: 80 MiB per destination and 640 MiB
|
|
111
|
+
across eight destinations. SQLite page caps, bounded writes, checkpoints and
|
|
112
|
+
pressure rejection enforce these budgets; they are not OS filesystem quotas.
|
|
113
|
+
- History defaults: raw 48 hours, one-minute rollups 30 days, one-hour rollups 400 days.
|
|
114
|
+
Rollups preserve minima/maxima. Queries have point, series, scanned-row and elapsed
|
|
115
|
+
budgets; partial results are disclosed. The hub defaults to a 2 GiB physical
|
|
116
|
+
database/WAL budget shared by telemetry, users, enrollment and alerts. Retention
|
|
117
|
+
protects the newest hour; when it cannot reclaim enough space, ingestion returns
|
|
118
|
+
busy without acknowledging records. Existing oversized databases enter pressure
|
|
119
|
+
mode; they are not destructively vacuumed at startup. Atomic writes may briefly
|
|
120
|
+
grow WAL before checkpointing; blocked checkpoints surface pressure and stop
|
|
121
|
+
subsequent ingestion rather than permitting continued growth.
|
|
122
|
+
- Receipt freshness is `max(15 seconds, 3 × expected delivery interval)`. Unknown cadence
|
|
123
|
+
uses a disclosed 15-second fallback. Connection state, collection availability and
|
|
124
|
+
clock skew remain separate. Browser/hub clocks are not calibrated.
|
|
125
|
+
- Process detail uses renewable viewer interests and one shared collector scan. Pausing,
|
|
126
|
+
hiding/closing a view, session termination or lease expiry releases extra work.
|
|
127
|
+
Process detail is never persisted. CPU is 100% per core; machine CPU is normalized
|
|
128
|
+
across logical cores. Missing/inaccessible readings remain unavailable.
|
|
129
|
+
- User sessions are in memory with a fixed twelve-hour lifetime; a hub restart requires
|
|
130
|
+
signing in again. Users/scopes/password hashes and collector credentials persist.
|
|
131
|
+
- Physical checks cover the Ubuntu RTX 3090 rig and the laptop’s RTX 5060 plus Radeon
|
|
132
|
+
860M iGPU. Intel sensor and ARM/RISC-V naming paths have deterministic fixture coverage;
|
|
133
|
+
physical validation for those paths remains outstanding. See the [hardware support notes](docs/installation.md#hardware).
|
|
134
|
+
- There is no fixed machine-count limit. The default concurrent collector connection
|
|
135
|
+
budget is 100; [scale validation](docs/scale-validation.md) records synthetic
|
|
136
|
+
workloads up to 75 machines on one host and is not a capacity guarantee.
|
|
137
|
+
Remote kill/renice, service control, hub federation and clustering are out
|
|
138
|
+
of scope for this read-only release.
|
|
139
|
+
|
|
140
|
+
## Alerts and administration
|
|
141
|
+
|
|
142
|
+
Administration requires an explicit administrator role as well as machine scope.
|
|
143
|
+
Use it to manage accounts/scopes, display names/tags, collector revocation and
|
|
144
|
+
short-lived enrollment/replacement grants. User changes revoke existing browser
|
|
145
|
+
sessions; credential changes close invalid collector connections. Wildcard scope
|
|
146
|
+
alone does not grant administration.
|
|
147
|
+
|
|
148
|
+
Alerts support above/below thresholds, duration, unavailable readings, missing
|
|
149
|
+
receipts, maintenance and recovery. Value, unavailable and stale-receipt rules
|
|
150
|
+
apply to every machine the hub tracks. Replay never opens historical incidents.
|
|
151
|
+
Configure one HTTPS webhook channel in Alerts (loopback HTTP only for controlled
|
|
152
|
+
test sinks). URL, headers and HMAC secret are write-only. Delivery is at-least-once:
|
|
153
|
+
receivers should deduplicate the `Idempotency-Key`. Six attempts, a five-second
|
|
154
|
+
request deadline and bounded persistent queues prevent unbounded delivery work.
|
|
155
|
+
|
|
156
|
+
See [operations](docs/operations.md) for packaging, private service configuration,
|
|
157
|
+
boot enablement, backups, tested restores, upgrades/rollback and measurements.
|
|
158
|
+
The managed installer starts services by default; low-level archive tools print service commands for explicit execution.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
Report suspected vulnerabilities privately to
|
|
4
|
+
[mtrietvu@gmail.com](mailto:mtrietvu@gmail.com).
|
|
5
|
+
|
|
6
|
+
Include the affected Rigscope version, a description of the issue, reproduction
|
|
7
|
+
steps and its potential impact. Redact passwords, tokens, private telemetry and
|
|
8
|
+
other sensitive information. Keep vulnerability details out of public issues
|
|
9
|
+
until a fix or disclosure plan has been agreed.
|
|
10
|
+
|
|
11
|
+
Rigscope is an early release. No guaranteed response time or long-term security
|
|
12
|
+
support window is offered. Use the latest available release.
|