Mock pages were sparse: 3 Proxmox nodes × 3 VMs × 3 LXCs, 2 Docker hosts × 5 containers, 1 K8s cluster × 3 nodes × 10 pods × 4 deployments. That populated platform pages with handfuls of rows rather than table density that exercises sorting, grouping, drawers, and responsive layout. Bump `internal/mock/generator.go::DefaultConfig` to target a mature small-to-mid homelab / SMB environment: - NodeCount: 3 → 5 (matches the curated demo scenario's pve1..pve5 regional naming) - VMsPerNode: 3 → 6 - LXCsPerNode: 3 → 8 - DockerHostCount: 2 → 5 - DockerContainersPerHost: 5 → 14 - GenericHostCount: 2 → 4 - K8sClusterCount: 1 (unchanged; the curated demo and broadcast coalesce tests assume a single cluster identity) - K8sNodesPerCluster: 3 → 5 - K8sPodsPerCluster: 10 → 40 - K8sDeploymentsPerCluster: 4 → 14 Resource survey under the new defaults (live mock backend): - TOTAL 307 unique resources (was ~50-100) - app-container: 75, storage: 55, system-container: 44, pod: 40, vm: 31, physical_disk: 19, agent: 15, k8s-deployment: 14, docker-host: 5, network-endpoint: 5, pmg: 2, pbs: 1, k8s-cluster: 1 Platform pages now feel populated under mock mode: - /docker/overview: 5 hosts (was 2) - /docker/containers: 75 containers (was 13) - /kubernetes/nodes: 5 (was 3) - /kubernetes/pods: 40 (was 10) - /kubernetes/deployments: 14 (was 4) `internal/mock/demo_scenarios.go` extended to season `local`, `local-zfs`, and per-node iso/service-pool storage names for pve6 and beyond, so future NodeCount bumps don't regress the curated demo into generic "service-pool" labels (a test guard explicitly forbids that alias). A new `TestDemoScenarioStorageNamingHandlesScaledNodeCount` covers the scaled-NodeCount path. `internal/monitoring/monitor_unified_state_test.go` updated to compare the broadcast count against the coalesced snapshot count rather than the raw snapshot count — the broadcast path merges resources that share a canonical host key (K8s nodes onto linked agent hosts), so larger fixture sizes legitimately produce more merge candidates, and the prior raw-equality assertion would have broken on any future fixture growth too. The test still asserts every canonical name and mock identity it checked before. `scripts/toggle-mock.sh` (`mock_default_entries`) and the matching `scripts/tests/test-toggle-mock.sh` assertions are aligned with the new defaults so `npm run mock:edit` and per-dev `.env` seeding match the canonical baseline. Contracts updated: - `monitoring.md` Shared Boundaries: records the new DefaultConfig target sizes and the requirement that demo-scenario seasoning stay aligned with NodeCount changes. - `deployment-installability.md` Shared Boundaries: records that `mock_default_entries()` in toggle-mock.sh must stay aligned with `internal/mock.DefaultConfig` so CLI/toggle/runtime mock densities never drift apart. Targeted Go tests: - `go test ./internal/mock/...` green - `go test ./internal/monitoring/...` green Playwright (chromium, live mock-mode dev runtime): - 9 tests, all pass; populated assertions now hit dense tables (5 hosts, 14+ containers, 40 pods, etc.). Known remaining fixture gaps (canonical adapter, not config): - VMware fixture inventory in `internal/vmware/fixtures.go` is hardcoded at 4 hosts / 6 VMs / 4 datastores; not scaled in this commit. - TrueNAS fixture inventory in `internal/truenas/fixtures.go` is similarly hardcoded; not scaled in this commit. |
||
|---|---|---|
| .. | ||
| api | ||
| architecture | ||
| images | ||
| monitoring | ||
| operations | ||
| release-control | ||
| releases | ||
| security | ||
| AGENT_SECURITY.md | ||
| AGENT_SUBSTRATE.md | ||
| AI.md | ||
| AI_AUTONOMY.md | ||
| API.md | ||
| AUDIT_LOGGING.md | ||
| AUTO_UPDATE.md | ||
| CANONICAL_ALERT_ENGINE_MIGRATION_2026-03-10.md | ||
| CENTRALIZED_MANAGEMENT.md | ||
| CLOUD.md | ||
| CONFIGURATION.md | ||
| DEPLOYMENT_MODELS.md | ||
| DOCKER.md | ||
| FAQ.md | ||
| INSTALL.md | ||
| KUBERNETES.md | ||
| MAIL_GATEWAY.md | ||
| METRICS_HISTORY.md | ||
| MIGRATION.md | ||
| MIGRATION_UNIFIED_NAV.md | ||
| MULTI_TENANT.md | ||
| OIDC.md | ||
| PBS.md | ||
| PRIVACY.md | ||
| PROXY_AUTH.md | ||
| PULSE_PRO.md | ||
| RBAC.md | ||
| README.md | ||
| RECOVERY.md | ||
| RELAY.md | ||
| RELEASE_NOTES.md | ||
| REPO_BOUNDARY.md | ||
| REVERSE_PROXY.md | ||
| SCREENSHOTS.md | ||
| SECURITY.md | ||
| STORAGE_ARCHITECTURE.md | ||
| TEMPERATURE_MONITORING.md | ||
| TROUBLESHOOTING.md | ||
| TRUENAS.md | ||
| UNIFIED_AGENT.md | ||
| UNIFIED_RESOURCES.md | ||
| UPGRADE_v5.md | ||
| UPGRADE_v6.md | ||
| VM_DISK_MONITORING.md | ||
| WEBHOOKS.md | ||
| ZFS_MONITORING.md | ||
📚 Pulse Documentation
Welcome to the Pulse documentation portal. Here you'll find everything you need to install, configure, and master Pulse.
v6 Execution Canonical Source
For Pulse v6 build/release execution work, do not start from this broad docs index. Use:
docs/release-control/v6/internal/SOURCE_OF_TRUTH.mdfor stable human governance and locked decisionsdocs/release-control/v6/internal/status.jsonfor live lane state, lane-to-subsystem ownership, structured evidence references, typed lane/subsystem decision records, and canonical ordered listsdocs/release-control/v6/status.schema.jsonfor the machine-readable status contractdocs/release-control/v6/internal/subsystems/registry.jsonanddocs/release-control/v6/internal/subsystems/registry.schema.jsonfor subsystem ownership, explicit shared-ownership exceptions, and proof-routing rulespython3 scripts/release_control/status_audit.py --checkif you need a machine-derived evidence health auditpython3 scripts/release_control/registry_audit.py --checkif you need a machine-derived subsystem registry auditpython3 scripts/release_control/contract_audit.py --checkif you need a machine-derived subsystem contract audit, including explicit cross-subsystem dependency checks and exact registry-derived shared-boundary wording Local pre-commit runs the v6 machine audits against staged control-file content so partial staging cannot hide governance drift. Local pre-commit also blocks partial staging for hook-sensitive governance files underdocs/release-control/v6/,scripts/release_control/,internal/repoctl/,.husky/pre-commit, and.github/workflows/canonical-governance.yml, because those checks still execute or structurally read the working-tree versions locally.python3 scripts/release_control/subsystem_lookup.py <path> [<path> ...] --pretty --leanif you need subsystem ownership, proof routing, exact contract-focus lines, and compact lane context for a change
For governed runtime changes, a staged subsystem contract only counts if its
diff updates a substantive contract section such as Purpose, Canonical Files,
Shared Boundaries, Extension Points, Forbidden Paths,
Completion Obligations, or Current State, rather than metadata alone.
All other documents are supporting references unless explicitly required for evidence.
🚀 Getting Started
- Installation Guide Step-by-step guides for Docker, Kubernetes, and bare metal.
- Configuration
Learn how to configure authentication, notifications (Email, Discord, etc.), and system settings. - Deployment Models
Where config lives, how updates work, and what differs per deployment. - Migration Guide
Moving to a new server? Here's how to export and import your data safely. - Upgrade to v6
Practical upgrade guidance and post-upgrade checks for Pulse v6. - FAQ Common questions and quick answers.
🛠️ Deployment & Operations
- Docker Guide – Advanced Docker & Compose configurations.
- Kubernetes – Helm charts, ingress, and HA setups.
- Reverse Proxy – Nginx, Caddy, Traefik, and Cloudflare Tunnel recipes.
- Troubleshooting – Deep dive into common issues and logs.
🔐 Security
- Security Policy – The core security model (Encryption, Auth, API Scopes).
- Privacy – What leaves your network (and what doesn’t).
- OIDC / SSO – OIDC Single Sign-On configuration (Authentik, Keycloak, Azure AD, etc.).
- Proxy Auth – Authentik/Authelia/Cloudflare proxy authentication configuration.
- Agent Security – Agent privilege model, Proxmox API-only choices, and self-update verification.
📖 Advanced Topics (Relay / Pro / legacy Pro+ / Cloud)
- AI Autonomy & Safety – Configure patrol autonomy levels, assistant control levels, investigation tuning, and safety guardrails.
- Role-Based Access Control (RBAC) – Define custom roles, assign permissions, and integrate with OIDC group mapping.
- Audit Logging – Tamper-evident event logging for compliance, with query, export, and signature verification.
✨ New in 6.0
- Unified Resource Model – How all platforms merge into one model with task-based navigation.
- Unified Navigation Migration – Upgrading from platform-specific tabs to v6 navigation.
- TrueNAS Integration – First-class TrueNAS SCALE/CORE monitoring (pools, datasets, disks, snapshots, replication).
- Relay / Pulse Mobile Handoff – End-to-end encrypted relay for supported Pulse Mobile clients (Relay and above).
- Recovery Central – Unified backup, snapshot, and replication view across all providers.
- Pulse Cloud (Hosted) – Fully managed hosting with automatic updates and backups.
- Pulse AI – Chat assistant, patrol findings, alert analysis, intelligence, and forecasts.
- Metrics History – Persistent metrics storage with configurable retention.
- Mail Gateway – Proxmox Mail Gateway (PMG) monitoring.
- Auto Updates – One-click updates for supported deployments.
- Multi-Tenant Organizations – Isolate infrastructure by organization (Enterprise, opt-in).
- Entitlements Overhaul – Capability-key-based feature gating across Community/Relay/Pro/Cloud, with legacy Pro+ continuity still supported.
💳 Plans (Community / Relay / Pro / Cloud)
Pulse is available in three self-hosted tiers plus hosted Cloud:
-
Community: Free self-hosted monitoring with core monitoring included and 7-day history.
-
Relay: Adds secure remote access to the Pulse web UI, Pulse Mobile pairing for handoff, push notifications, and 14-day history.
-
Pro: Adds alert-triggered root-cause analysis, safe remediation workflows, operations tooling, governance features, and 90-day history.
-
Cloud: Hosted Pulse with Pro-level capabilities; hosted pricing is unchanged by the self-hosted model lock.
-
Plans and entitlements (includes the Community/Relay/Pro/Cloud matrix)
-
Multi-Tenant Organizations (Enterprise) — Isolate infrastructure by organization for MSPs and multi-datacenter deployments.
📡 Monitoring & Agents
- Unified Agent – Single binary for host, Docker, and Kubernetes monitoring.
- Centralized Agent Management (Pro/Cloud) – Agent profiles and remote config.
- Proxmox Backup Server – PBS integration, direct API vs PVE passthrough, token setup.
- TrueNAS – TrueNAS SCALE/CORE integration.
- ZFS Monitoring – Proxmox-native ZFS pool monitoring.
- Storage Architecture – Proposed canonical storage, disk, S.M.A.R.T., and topology model for making storage genuinely operator-useful.
- VM Disk Monitoring – Enabling QEMU Guest Agent for disk stats.
- Temperature Monitoring – Agent-based temperature monitoring (
pulse-agent --enable-proxmox). Sensor proxy has been removed. - Webhooks – Custom notification payloads.
💻 Development
- API Reference – Complete REST API documentation.
- Architecture – System design and component interaction.
- Contributing – How to contribute to Pulse.
📁 Previous Versions
- Upgrade to v5 – Upgrade guidance for v4 → v5 migrations.
- v6 Release Promotion Policy – Canonical stable-vs-prerelease promotion rules and rollback expectations.
- v6 Prerelease Runbook – Internal release operations used during the v6 prerelease period.
Found a bug or have a suggestion?