Pulse/docs
rcourtman c7bdd11e04 platforms: full column-fit audit — project uptime/temp, native tables for Docker Services and K8s Clusters
Follow-up to the K8s deployments fix (69f70a3fc), done as the full
audit pass the user asked for instead of one-page-at-a-time. Three
distinct column-fit issues remained across the platform pages:

1. **Top-level Uptime/Temperature were always dashes on agent-backed
   tables (Docker Hosts, K8s Nodes, vSphere Hosts, TrueNAS Systems).**
   The backend had the data in `agent.uptimeSeconds`,
   `agent.temperature`, `proxmox.uptime`, and the max-sensor
   `proxmox.temperature` projection, but `unifiedresources.Resource`
   never surfaced them at the top level that the canonical table
   reads. Add `Resource.Uptime` and `Resource.Temperature` and
   populate them from `resourceFromHost` (for Pulse Agents) and
   `resourceFromNode` (for Proxmox nodes). Resource types that have
   no native uptime/temperature concept (k8s-deployment,
   docker-service, k8s-cluster aggregates) leave them unset so
   bespoke tables can hide the columns instead of rendering dashes.

   Live sample: agent rows now expose
   `uptime: 2592000, temperature: 78.95`.

2. **Docker Swarm services had no metrics at all.** Services are
   cluster-scoped declarations, not running processes — they don't
   have their own CPU/Memory/Disk/Disk I/O/Uptime/Temperature. New
   `DockerServicesTable` reuses canonical shared primitives (Card,
   Table, SearchInput, FilterButtonGroup, StatusDot) and surfaces
   the operator columns the data actually backs: image, mode,
   desired/running tasks, ports, host. Mounted on `/docker/services`
   in place of the generic infrastructure table.

3. **K8s Clusters tab was just metric bars.** Clusters are
   control-plane aggregates. Operator-meaningful columns are name +
   context + version + counts of nodes/pods/deployments alongside
   the aggregated CPU/Memory utilisation. New
   `KubernetesClustersTable` renders those, computing per-cluster
   counts client-side from the same resource scope already fetched
   by the page (no additional API calls).

`ResourceKubernetesMeta` gains `version` and `server` fields (the
backend already emits them; the frontend type just hadn't surfaced
them). `ResourceDockerMeta` is introduced as the typed projection of
`resource.docker` for Swarm service rows (image, mode, replicas,
endpointPorts, swarm identity).

Browser verification (Playwright, chromium, live mock-mode dev runtime):
- 9 tests pass. The every-sub-tab operator-controls audit still finds
  the canonical search input on /docker/services and
  /kubernetes/overview (now provided by each bespoke table's
  toolbar).

Targeted tests:
- `tsc --noEmit` clean
- `go test ./internal/unifiedresources/... ./internal/mock/...
  ./internal/monitoring/...` all green

Contract:
- `unified-resources.md` Extension Points: documents the top-level
  `Resource.Uptime`/`Resource.Temperature` projections, the adapter
  responsibility to populate them from nested AgentData/ProxmoxData,
  and the convention that resource types without a native uptime or
  temperature concept (k8s-deployment, docker-service, k8s-cluster
  aggregates) leave them unset so bespoke platform-page tables can
  hide the column instead of rendering dashes.

Contract-neutral bypass: PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT set
because this completes the column-fit audit started in 69f70a3fc —
no public contract shape changes (the new top-level fields are
additive optional projections of existing nested data; the two new
bespoke tables live inside features/ and reuse canonical primitives
only).
2026-05-16 12:36:57 +01:00
..
api docs: standardize markdown syntax and remove deprecated sensor-proxy docs 2026-01-20 09:43:49 +00:00
architecture Make self-hosted SSO Community-tier 2026-05-03 12:48:01 +01:00
images docs: add social preview image for GitHub 2025-12-25 20:24:45 +00:00
monitoring feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
operations Rename retired trial acquisition proof assets 2026-04-28 18:38:10 +01:00
release-control platforms: full column-fit audit — project uptime/temp, native tables for Docker Services and K8s Clusters 2026-05-16 12:36:57 +01:00
releases Document Pulse Cloud launch in v6 release notes 2026-05-11 23:18:05 +01:00
security docs: update documentation after sensor proxy deprecation 2026-01-21 12:00:59 +00:00
AGENT_SECURITY.md Harden Proxmox setup token ACLs 2026-05-05 14:19:50 +01:00
AGENT_SUBSTRATE.md Bring action endpoints onto the agent surface with the agent-stable envelope 2026-05-10 15:16:17 +01:00
AI.md Own public AI docs product language 2026-04-28 21:23:05 +01:00
AI_AUTONOMY.md Keep self-hosted Pro prompts opt-in 2026-04-28 11:23:49 +01:00
API.md Restore remote config signature compatibility 2026-05-13 19:00:02 +01:00
AUDIT_LOGGING.md Label legacy Pro Plus in customer docs 2026-04-26 22:01:24 +01:00
AUTO_UPDATE.md Route operator updates through the local signed helper 2026-04-22 16:18:16 +01:00
CANONICAL_ALERT_ENGINE_MIGRATION_2026-03-10.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
CENTRALIZED_MANAGEMENT.md Canonicalize Docker Podman public docs 2026-04-30 00:29:20 +01:00
CLOUD.md Rename hosted capacity marker copy 2026-04-29 00:07:18 +01:00
CONFIGURATION.md Wire PULSE_RELAY_ENABLED and PULSE_RELAY_SERVER as real env overrides 2026-05-12 11:18:31 +01:00
DEPLOYMENT_MODELS.md Label legacy Pro Plus in customer docs 2026-04-26 22:01:24 +01:00
DOCKER.md Clarify paid Docker compose image override 2026-05-06 23:11:32 +01:00
FAQ.md Clarify Relay mobile handoff paid copy 2026-04-30 13:18:04 +01:00
INSTALL.md Fix manual systemd install snippet binary path 2026-05-12 10:51:03 +01:00
KUBERNETES.md Fix helm chart agent.enabled by routing through main pulse image 2026-05-12 16:11:56 +01:00
MAIL_GATEWAY.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
METRICS_HISTORY.md Reduce metrics rollup write amplification 2026-05-03 21:43:20 +01:00
MIGRATION.md Label legacy Pro Plus in customer docs 2026-04-26 22:01:24 +01:00
MIGRATION_UNIFIED_NAV.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
MULTI_TENANT.md Align self-hosted plan docs and tests 2026-04-29 09:21:10 +01:00
OIDC.md Fix four customer-facing doc drift findings (RBAC, OIDC, helm, webhooks) 2026-05-12 15:54:24 +01:00
PBS.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
PRIVACY.md Clarify Relay mobile handoff paid copy 2026-04-30 13:18:04 +01:00
PROXY_AUTH.md docs: standardize markdown syntax and remove deprecated sensor-proxy docs 2026-01-20 09:43:49 +00:00
PULSE_PRO.md Make self-hosted SSO Community-tier 2026-05-03 12:48:01 +01:00
RBAC.md Fix four customer-facing doc drift findings (RBAC, OIDC, helm, webhooks) 2026-05-12 15:54:24 +01:00
README.md docs: clarify agent privilege guidance 2026-05-04 18:04:04 +01:00
RECOVERY.md Simplify recovery presentation and type contracts 2026-05-14 21:08:54 +01:00
RELAY.md Wire PULSE_RELAY_ENABLED and PULSE_RELAY_SERVER as real env overrides 2026-05-12 11:18:31 +01:00
RELEASE_NOTES.md Prepare v6.0.0-rc.5 release packet 2026-05-11 16:52:31 +01:00
REPO_BOUNDARY.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
REVERSE_PROXY.md docs: improve reverse proxy HTTPS detection and Swarm troubleshooting 2026-01-07 18:23:48 +00:00
SCREENSHOTS.md Align Relay copy with standalone tier 2026-04-30 11:01:22 +01:00
SECURITY.md feat: implement priority queue-based task execution (Phase 2 Task 6) 2025-10-20 15:13:37 +00:00
STORAGE_ARCHITECTURE.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
TEMPERATURE_MONITORING.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
TROUBLESHOOTING.md Align self-hosted plan docs and tests 2026-04-29 09:21:10 +01:00
TRUENAS.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
UNIFIED_AGENT.md Harden Proxmox setup token ACLs 2026-05-05 14:19:50 +01:00
UNIFIED_RESOURCES.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
UPGRADE_v5.md Harden Proxmox setup token ACLs 2026-05-05 14:19:50 +01:00
UPGRADE_v6.md Prepare v6.0.0-rc.5 release packet 2026-05-11 16:52:31 +01:00
VM_DISK_MONITORING.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
WEBHOOKS.md Fix four customer-facing doc drift findings (RBAC, OIDC, helm, webhooks) 2026-05-12 15:54:24 +01:00
ZFS_MONITORING.md feat: Pulse v6 release 2026-03-18 16:06:30 +00:00

📚 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:

  1. docs/release-control/v6/internal/SOURCE_OF_TRUTH.md for stable human governance and locked decisions
  2. docs/release-control/v6/internal/status.json for live lane state, lane-to-subsystem ownership, structured evidence references, typed lane/subsystem decision records, and canonical ordered lists
  3. docs/release-control/v6/status.schema.json for the machine-readable status contract
  4. docs/release-control/v6/internal/subsystems/registry.json and docs/release-control/v6/internal/subsystems/registry.schema.json for subsystem ownership, explicit shared-ownership exceptions, and proof-routing rules
  5. python3 scripts/release_control/status_audit.py --check if you need a machine-derived evidence health audit
  6. python3 scripts/release_control/registry_audit.py --check if you need a machine-derived subsystem registry audit
  7. python3 scripts/release_control/contract_audit.py --check if 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 under docs/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.
  8. python3 scripts/release_control/subsystem_lookup.py <path> [<path> ...] --pretty --lean if 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

🔐 Security

  • Security Policy The core security model (Encryption, Auth, API Scopes).
  • Privacy What leaves your network (and what doesnt).
  • 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

💳 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.

  • Learn more at pulserelay.pro

  • Plans and entitlements (includes the Community/Relay/Pro/Cloud matrix)

  • AI deep dive

  • Multi-Tenant Organizations (Enterprise) — Isolate infrastructure by organization for MSPs and multi-datacenter deployments.

📡 Monitoring & Agents

💻 Development

📁 Previous Versions


Found a bug or have a suggestion?

GitHub Issues