omp packages

@false00/pi-proxmox2.0.0

Production-focused Proxmox VE automation tools for the Pi coding agent — VMs, LXC, storage, cluster, firewall, backup, HA, replication, and access control via the REST API

false00 Published 7 days ago MIT ~121 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

@false00/pi-proxmox

npm version license CI

Production-focused Proxmox VE automation for the Pi coding agent.

@false00/pi-proxmox exposes 141 Pi tools for managing Proxmox clusters: VMs, LXC containers, storage, cluster state, firewall rules, backups, HA, replication, access control, task tracking, and universal raw API access through the Proxmox REST API.

Resource Link
npm @false00/pi-proxmox
GitHub github.com/false00/pi-proxmox
License MIT
Changelog CHANGELOG.md
Security policy SECURITY.md
Compatibility notes docs/COMPATIBILITY.md
Examples docs/EXAMPLES.md
Permissions guide docs/PERMISSIONS.md
Troubleshooting docs/TROUBLESHOOTING.md
Contributing guide CONTRIBUTING.md

Why this package

This package is designed for people who want Pi to operate real Proxmox infrastructure without hand-writing API calls.

What makes it useful:

  • Broad coverage — 141 tools spanning VM, LXC, storage, cluster, firewall, backup, HA, replication, task workflows, and universal raw API access
  • Consistent wrapper strategy — dedicated tools for common workflows, universal raw tools for edge cases, with parameters that intentionally stay close to the Proxmox API where practical
  • Agent-friendly responses — structured JSON output for read/list/status tools, plus progress streaming for long-running operations
  • Operational safety — destructive actions are explicit, task-based operations return UPIDs, and tool failures surface as real Pi tool errors
  • Live-tested behavior — the repo includes integration tests against a real Proxmox host, including VM/LXC lifecycle tests, package checks, raw API coverage tests, and runtime-behavior tests
  • Pi-native packaging — installable as a Pi package through npm and loadable directly via pi install or pi -e

What you get

Tool coverage by area:

Area Tool count
Virtual machines 23
VM guest agent 13
LXC containers 20
Nodes 18
Storage + pools 11
Cluster 9
Backup 3
Firewall 11
Access control 16
High availability 7
Replication 5
Tasks 3
Universal raw API coverage 2
Total 141

Official API coverage audit

Against the official Proxmox VE API viewer at https://pve.proxmox.com/pve-docs/api-viewer/, the API surface audited on 2026-10-21 exposed:

  • 449 routes
  • 680 route/method combinations
  • top-level namespaces: access, cluster, nodes, pools, storage, and version
  • standard REST methods: GET, POST, PUT, and DELETE

This package covers the common day-to-day workflows with dedicated proxmox_* tools and covers the rest of the official API surface with two universal escape hatches:

  • proxmox_api_call — generic GET/POST/PUT/DELETE access to any Proxmox API path under /api2/json
  • proxmox_api_upload_file — generic multipart upload access for upload-style endpoints

Design philosophy

This package is intentionally a thin-but-usable Proxmox wrapper for Pi.

That means:

  • dedicated tools are added for common operational workflows
  • raw universal tools exist so official API reach does not depend on hundreds of niche one-off wrappers
  • parameter names and many flag conventions stay close to upstream Proxmox behavior when practical
  • the package prefers predictable behavior and maintainability over hiding every Proxmox detail behind a custom abstraction layer

Stability guarantees

This repository aims to provide a stable automation surface for Pi users.

Current guarantees:

  • published tool names are treated as stable once released; a tool is removed or renamed only in a major release, with the reason in the CHANGELOG (for example, proxmox_lxc_reset was removed because it called an endpoint Proxmox does not have)
  • destructive operations are explicit in tool naming and documentation
  • dedicated tools stay close to upstream Proxmox semantics where practical
  • universal raw tools are the compatibility layer for long-tail official endpoints
  • proxmox_node_execute prefers official args command objects and still accepts legacy body as a compatibility alias

Install

Install into Pi as a package:

pi install npm:@false00/pi-proxmox

Use it for a single run without changing your settings:

pi -e npm:@false00/pi-proxmox

For local development from this repository:

pi -e .

VS Code Copilot through MCP

This repository also includes a stdio MCP bridge that exposes the same 141 proxmox_* tools to VS Code Copilot and other MCP clients. It reuses the existing Pi extension entrypoint and the same local configuration at ~/.config/pi-proxmox/.env; do not put tokens or passwords in mcp.json.

For a local checkout, configure the MCP client with an absolute path to the bridge:

{
  "servers": {
    "pi-proxmox": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/pi-proxmox/dist/mcp-server.js"]
    }
  }
}

Then start or trust the MCP server in the client. The bridge preserves the existing tool names, TypeBox-derived JSON schemas, Proxmox REST client, ticket-auth fallback for proxmox_node_execute, and structured error behavior.

Quick start

After installing, ask Pi to operate your Proxmox cluster in plain English:

List all VMs on pve1
Create a Debian container with 2GB RAM on pve1
Show cluster status
Resize disk scsi0 on VM 101 by +20G
Check recent tasks on pve1

Pi will call tools like proxmox_vm_list, proxmox_lxc_create, proxmox_cluster_status, and proxmox_task_list behind the scenes.

Top tasks and example prompts

Common things users ask Pi to do with this package:

List all VMs on pve1
Show running containers on pve1
Create a Debian LXC with 2 GB RAM on pve1
Clone VM 900 to a new VM 101 named web-01
Take a snapshot of VM 101 named pre-update
Roll back VM 101 to snapshot pre-update
Upload an ISO to local storage on pve1
Show failed tasks on pve1
Check cluster quorum and node health
Run hostname inside VM 118 through the guest agent

Choosing dedicated tools vs raw tools

Use the package in this order:

  1. Dedicated proxmox_* tools first for common workflows like VM lifecycle, LXC lifecycle, storage, firewall, HA, replication, and backups
  2. Use proxmox_api_call when the official API supports something that does not yet have a dedicated tool
  3. Use proxmox_api_upload_file for multipart upload endpoints such as storage uploads

This keeps everyday usage ergonomic while still preserving full official API reach.

Operational docs

For day-to-day use and troubleshooting, see:

Trust, safety, and operating model

This is a full-access infrastructure package. Like any Pi extension, it can perform real changes in your environment if Pi is allowed to call its tools. The package does not restrict itself: what it can actually do is bounded by the Proxmox permissions you grant its credentials, so use the least-privilege setup below.

Important expectations:

  • The package does not shell into LXC containers; Proxmox does not expose a comparable API for that
  • VM in-guest command execution is only available through the QEMU Guest Agent tools
  • Destructive operations such as delete, stop, reboot, rollback, firewall changes, and ACL updates are exposed as explicit tools
  • Long-running operations return Proxmox task identifiers or agent PIDs so Pi can continue tracking them
  • Runtime failures are thrown back to Pi as proper tool errors, not fake success payloads
  • In the verified test environment, /nodes/{node}/execute required password/ticket fallback even though normal token-based API calls succeeded; the endpoint is root-only in the Proxmox API, so the recommended least-privilege setup leaves that fallback unset and proxmox_node_execute fails closed
  • /nodes/{node}/execute is a real Proxmox endpoint for batching node-relative API requests; it does not provide arbitrary shell execution on the host

If you are evaluating the package for production use, review:

Configuration

Requirements

  • Node.js 22.19+
  • A Pi runtime with extension support
  • A reachable Proxmox VE cluster over HTTPS

Recommended setup: least privilege

Give the package a dedicated non-root user and an API token with privilege separation enabled, and grant roles on the narrowest path that works. Run these as an administrator on any cluster node:

# 1. Dedicated non-root user (no password is set; the API token is its credential)
pveum user add pi-proxmox@pve --comment "pi-proxmox automation"

# 2. API token with privilege separation enabled (the Proxmox default, set explicitly)
pveum user token add pi-proxmox@pve automation --privsep 1 --comment "pi-proxmox"

# 3. Resource pool holding only the guests and storage Pi may use (use your own IDs)
pveum pool add pi-proxmox --comment "Managed by pi-proxmox"
pveum pool modify pi-proxmox --vms 101,102 --storage local-lvm

# 4. Start read-only: grant PVEAuditor on the pool to the user AND the token
pveum acl modify /pool/pi-proxmox --roles PVEAuditor --users pi-proxmox@pve
pveum acl modify /pool/pi-proxmox --roles PVEAuditor --tokens 'pi-proxmox@pve!automation'

# 5. Check what the token can actually do
pveum user token permissions pi-proxmox@pve automation

With privilege separation, the token's effective permissions are the intersection of the user's and the token's ACLs, so every grant must go to both. A grant on only one of them gives the token nothing on that path, which usually shows up as empty VM or container lists rather than an error.

pveum user token add prints the token secret once; store it as PROXMOX_TOKEN_SECRET. In the web UI, the same objects live under Datacenter → Permissions; keep Privilege Separation checked when you add the token.

Do not use a root@pam token or disable privilege separation to make tools work; grant the missing privilege on the narrowest path instead.

Permission tiers

Add privileges only when a workflow needs them. Grant each role to both the user and the token.

Tier Grant Enables
Read-only (start here) built-in PVEAuditor on /pool/pi-proxmox listing and inspecting the pool's guests and storage
Guest operator custom role with VM.Audit, VM.PowerMgmt, VM.Snapshot, VM.Snapshot.Rollback on /pool/pi-proxmox start, stop, shutdown, reboot, suspend, resume, snapshots, and rollback
Provisioning and infrastructure specific privileges from docs/PERMISSIONS.md, or broad roles such as PVEVMAdmin, PVEAdmin, or Administrator creating and deleting guests; node, storage, cluster, firewall, HA, and backup-job changes
Access control Permissions.Modify on the paths whose ACLs it changes; User.Modify, Realm.AllocateUser, Group.Allocate, or Sys.Modify under /access user, group, role, ACL, and token tools

Guest operator role:

pveum role add PiProxmoxOperator --privs "VM.Audit VM.PowerMgmt VM.Snapshot VM.Snapshot.Rollback"
pveum acl modify /pool/pi-proxmox --roles PiProxmoxOperator --users pi-proxmox@pve
pveum acl modify /pool/pi-proxmox --roles PiProxmoxOperator --tokens 'pi-proxmox@pve!automation'

Reserve broad or admin roles, and the access-control privileges (which let a token change permissions, potentially its own), for people who truly need them, ideally on a separate token. docs/PERMISSIONS.md maps every tool to the privilege and path Proxmox checks.

Connection settings

Create ~/.config/pi-proxmox/.env:

# --- Connection ---
PROXMOX_HOST=192.168.1.100
PROXMOX_PORT=8006
PROXMOX_VERIFY_SSL=false

# --- API token: dedicated non-root user, privilege separation enabled ---
PROXMOX_TOKEN_ID=pi-proxmox@pve!automation
PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# --- Timeouts ---
PROXMOX_TIMEOUT_MS=30000
PROXMOX_TOOL_TIMEOUT_MS=30000

Values in ~/.config/pi-proxmox/.env take precedence over environment variables.

Password fallback (optional, discouraged)

PROXMOX_USERNAME and PROXMOX_PASSWORD are not part of the recommended setup. Leave them unset.

  • proxmox_node_execute calls /nodes/{node}/execute, which Proxmox restricts to root@pam (the API viewer lists it as Root only). It rejects API tokens, so with the fallback unset the tool fails closed. That is the recommended behavior; the dedicated tools and proxmox_api_call can make the same node API requests one at a time.
  • When the fallback is set, the package retries /nodes/{node}/execute with a password ticket. That only works with root@pam, the node's Linux root password. PROXMOX_USERNAME defaults to root@pam when unset, so setting PROXMOX_PASSWORD alone means root credentials.
  • If no API token is configured, the fallback credentials are used for every request.

If you deliberately need proxmox_node_execute, keep root credentials out of your everyday configuration and isolate them in a separate, deliberately chosen one, such as a separate OS account whose ~/.config/pi-proxmox/.env is used only for that work:

# WARNING: root@pam credentials. Uncomment only in an isolated configuration you chose deliberately;
# they are used to retry the root-only /nodes/{node}/execute endpoint.
# PROXMOX_USERNAME=root@pam
# PROXMOX_PASSWORD=...

See docs/PERMISSIONS.md for the details and the other root-only operations.

Token format

PROXMOX_TOKEN_ID uses the format:

USER@REALM!TOKENNAME

Examples:

  • pi-proxmox@pve!automation
  • john@pve!ops-bot

Store the .env file with restricted permissions when possible:

chmod 600 ~/.config/pi-proxmox/.env

Environment variables

Variable Purpose
PROXMOX_HOST Proxmox server hostname or IP
PROXMOX_PORT HTTPS port, default 8006
PROXMOX_TOKEN_ID Token ID such as pi-proxmox@pve!automation
PROXMOX_TOKEN_SECRET Token secret UUID
PROXMOX_USERNAME Username for the optional, discouraged password fallback; defaults to root@pam when unset. Leave unset
PROXMOX_PASSWORD Password for the optional, discouraged password fallback, used to retry the root-only /nodes/{node}/execute (and for every request if no token is set). Leave unset
PROXMOX_VERIFY_SSL Verify TLS certificates, true or false
PROXMOX_TIMEOUT_MS Per-request API timeout in milliseconds
PROXMOX_TOOL_TIMEOUT_MS Total Pi tool execution timeout in milliseconds

Configuration priority

  1. ~/.config/pi-proxmox/.env
  2. Constructor options when embedding the client directly
  3. Environment variables
  4. Built-in defaults

Runtime behavior

Output model

  • List, status, config, and inspection tools return JSON text for Pi to consume
  • Long-running tools can stream progress updates into Pi via onUpdate(...)
  • Many asynchronous Proxmox operations return a task UPID
  • Guest-agent execution returns a PID that can be checked with proxmox_vm_agent_exec_status

Error model

Tool failures are thrown back to Pi as proper tool errors. The error message body is JSON with fields such as:

  • error
  • category
  • guidance
  • retryable
  • endpoint
  • method
  • httpStatus

Standard error categories:

Category Meaning
validation Invalid tool parameters
authentication Bad credentials, missing privileges, or expired auth
not_found Requested VM, container, storage, or path does not exist
timeout Request or tool runtime timed out
network Connection failure to the Proxmox host
server_error Proxmox returned a server-side failure
unknown Unexpected error outside the known categories

Errors in timeout, network, and server_error categories are marked retryable.

Tool catalog

Virtual Machines (QEMU/KVM)

Tool Description
proxmox_vm_list List all VMs on a node
proxmox_vm_status Get detailed VM status and config
proxmox_vm_config Get VM configuration
proxmox_vm_start Start a VM
proxmox_vm_stop Force-stop a VM
proxmox_vm_shutdown Graceful ACPI shutdown
proxmox_vm_reset Hard-reset a VM
proxmox_vm_resume Resume a suspended VM
proxmox_vm_suspend Suspend a VM
proxmox_vm_reboot Reboot a VM
proxmox_vm_create Create a new VM
proxmox_vm_delete Delete a VM
proxmox_vm_update_config Update VM configuration
proxmox_vm_template Convert a stopped VM to a template
proxmox_vm_move_disk Move a VM disk to another storage
proxmox_vm_pending_changes List pending config changes
proxmox_vm_snapshot Snapshot a VM
proxmox_vm_snapshot_list List VM snapshots
proxmox_vm_snapshot_rollback Roll back to a VM snapshot
proxmox_vm_snapshot_delete Delete a VM snapshot
proxmox_vm_clone Clone a VM or template
proxmox_vm_migrate Migrate a VM to another node
proxmox_vm_resize_disk Resize a VM disk

VM QEMU Guest Agent

Tool Description
proxmox_vm_agent_exec Execute a command inside a VM
proxmox_vm_agent_exec_status Get execution status and output by PID
proxmox_vm_agent_ping Ping the guest agent
proxmox_vm_agent_info Get guest-agent version and supported commands
proxmox_vm_agent_get_host_name Get VM hostname
proxmox_vm_agent_get_network_interfaces Get VM network interfaces
proxmox_vm_agent_get_osinfo Get VM OS information
proxmox_vm_agent_get_time Get VM system time
proxmox_vm_agent_get_users List logged-in users
proxmox_vm_agent_get_vcpus Get VCPU info
proxmox_vm_agent_file_read Read a file from a VM
proxmox_vm_agent_file_write Write a file to a VM
proxmox_vm_agent_set_user_password Set a user's password inside a VM

LXC Containers

Tool Description
proxmox_lxc_list List containers on a node
proxmox_lxc_status Get container status and config
proxmox_lxc_start Start a container
proxmox_lxc_stop Stop a container
proxmox_lxc_shutdown Shut down a container
proxmox_lxc_resume Resume a suspended container
proxmox_lxc_suspend Suspend a container
proxmox_lxc_reboot Reboot a container
proxmox_lxc_create Create a container from template
proxmox_lxc_delete Delete a container
proxmox_lxc_update_config Update container configuration
proxmox_lxc_template Convert a stopped container to a template
proxmox_lxc_template_list List cached LXC templates
proxmox_lxc_resize Resize a mount point
proxmox_lxc_pending_changes List pending config changes
proxmox_lxc_snapshot Snapshot a container
proxmox_lxc_snapshot_list List container snapshots
proxmox_lxc_snapshot_rollback Roll back to a container snapshot
proxmox_lxc_snapshot_delete Delete a container snapshot
proxmox_lxc_migrate Migrate a container

Nodes

Tool Description
proxmox_node_list List cluster nodes
proxmox_node_status Get detailed node status
proxmox_node_config Get node configuration
proxmox_node_services List services on a node
proxmox_node_service_status Get a service's systemd state
proxmox_node_service_start Start a service
proxmox_node_service_stop Stop a service
proxmox_node_service_restart Restart a service
proxmox_node_journal Read systemd journal
proxmox_node_dns Get DNS configuration
proxmox_node_time Get system time and timezone
proxmox_node_hardware List PCI or USB devices
proxmox_node_network_list List network interfaces
proxmox_node_execute Batch relative node API calls via /execute
proxmox_node_reboot Reboot the node
proxmox_node_stop Shut down (power off) the node
proxmox_node_apt_update Refresh the APT package index
proxmox_node_subscription Get subscription status

Storage and pools

Tool Description
proxmox_storage_list List storage backends on a node
proxmox_storage_content List content on a storage backend
proxmox_storage_create Create a storage backend
proxmox_storage_detail Get storage details
proxmox_storage_delete Delete a storage backend
proxmox_storage_scan Scan for NFS, CIFS, iSCSI, LVM, LVM-thin, or ZFS storage
proxmox_storage_upload Download from URL and upload to Proxmox storage
proxmox_storage_remove_volume Remove a storage volume
proxmox_pool_list List resource pools
proxmox_pool_create Create a resource pool
proxmox_pool_delete Delete a resource pool

Cluster

Tool Description
proxmox_cluster_status Get cluster quorum and status
proxmox_cluster_resources List cluster resources
proxmox_cluster_next_id Get the next available VM or CT ID
proxmox_cluster_version Get Proxmox version information
proxmox_cluster_log Get the cluster log
proxmox_cluster_options Get cluster options
proxmox_cluster_update_options Update cluster options
proxmox_cluster_config Get cluster join information
proxmox_check_permissions Probe current token permissions

Backup

Tool Description
proxmox_backup_list List backup jobs
proxmox_backup_create Create a backup job
proxmox_backup_delete Delete a backup job

Firewall

Tool Description
proxmox_firewall_rules List firewall rules
proxmox_firewall_rule_add Add a firewall rule
proxmox_firewall_rules_delete Delete a firewall rule
proxmox_firewall_options Get firewall options
proxmox_firewall_options_update Update firewall options
proxmox_firewall_aliases List firewall aliases
proxmox_firewall_alias_create Create a firewall alias
proxmox_firewall_alias_delete Delete a firewall alias
proxmox_firewall_ipset_list List IPSets
proxmox_firewall_ipset_create Create an IPSet
proxmox_firewall_ipset_delete Delete an IPSet

Access control

Tool Description
proxmox_user_list List users
proxmox_user_create Create a user
proxmox_user_detail Get user details
proxmox_user_delete Delete a user
proxmox_group_list List groups
proxmox_group_create Create a group
proxmox_group_delete Delete a group
proxmox_role_list List roles
proxmox_role_create Create a role
proxmox_role_delete Delete a role
proxmox_acl_list List ACL entries
proxmox_acl_update Add or remove ACL entries
proxmox_token_list List API tokens for a user
proxmox_token_create Create an API token
proxmox_token_delete Delete an API token
proxmox_domain_list List authentication domains

High availability

Tool Description
proxmox_ha_status Get the current HA manager status
proxmox_ha_resources_list List HA resources
proxmox_ha_resource_create Add a resource to HA
proxmox_ha_resource_delete Remove a resource from HA
proxmox_ha_groups_list List HA groups
proxmox_ha_group_create Create an HA group
proxmox_ha_group_delete Delete an HA group

Replication

Tool Description
proxmox_replication_list List replication jobs
proxmox_replication_create Create a replication job
proxmox_replication_delete Delete a replication job
proxmox_replication_run Schedule a replication job to run now
proxmox_replication_log Get replication job log

Tasks

Tool Description
proxmox_task_list List recent tasks
proxmox_task_status Get task status by UPID
proxmox_task_log Get task log output

Universal API coverage

Tool Description
proxmox_api_call Call any official GET/POST/PUT/DELETE endpoint under /api2/json
proxmox_api_upload_file Upload a local file to any multipart Proxmox upload endpoint

Pagination notes

proxmox_task_list and proxmox_task_log accept optional start and limit parameters, which map directly to Proxmox pagination:

Tool Endpoint start semantics
proxmox_task_list /nodes/{node}/tasks integer offset
proxmox_task_log /nodes/{node}/tasks/{upid}/log integer line offset

proxmox_node_journal uses the journal's own windowing instead: since and until are Unix epoch timestamps, lastentries returns the last N entries, and startcursor/endcursor continue from journal cursors.

Repository layout

dist/                     Runtime extension code committed directly to the repo
  index.js                Pi extension entrypoint
  proxmox-client.js       REST client and auth logic
  tool-runtime.js         Shared tool execution helpers
  tools/                  Domain tool definitions

docs/                     Bundled Proxmox API reference material and operator docs

tests/                    Live integration, smoke, endpoint-conformance, and runtime-behavior tests
  fixtures/               Snapshot of the official API viewer schema used by the offline tests

scripts/                  Audit and maintenance helpers
.github/                  CI workflow, issue templates, and repo automation

README.md                 User-facing package documentation
AGENTS.md                 Agent/maintainer guidance
CONTRIBUTING.md           Contributor workflow
SECURITY.md               Security and disclosure policy
CHANGELOG.md              Release history

Compatibility

Verified directly from this repository:

Component Verified value
Pi runtime 0.79.6
Proxmox VE release 9.2
Proxmox VE version 9.2.3
Node.js >=22.19

See docs/COMPATIBILITY.md for the maintained compatibility notes.

Development

Offline checks (no Proxmox cluster needed; test:security and audit:official-api need network access to npm and the Proxmox API viewer):

npm ci
npm run test:smoke
npm run test:endpoints
npm run test:mcp
npm run test:package
npm run test:security
npm run audit:official-api
npm run test:ci            # all of the above, as CI runs them

Live suites, which create and delete resources on a real Proxmox cluster configured in ~/.config/pi-proxmox/.env (use a lab cluster):

npm test                   # every suite, offline and live
npm run test:auth
npm run test:pagination
npm run test:vm-agent
npm run test:execute
npm run test:lxc
npm run test:vm
npm run test:upload
npm run test:runtime
npm run test:raw-api

Refresh the official API snapshot that test:endpoints checks against when Proxmox publishes API changes:

npm run update:api-snapshot

Test philosophy

This project prefers real integration coverage over mock-heavy tests.

  • API/auth behavior is tested against a real Proxmox host
  • VM and LXC lifecycle tests create resources and clean them up
  • Runtime tests verify Pi-specific behavior such as progress streaming, thrown tool errors, and tool timeout handling
  • Raw API tests verify the universal coverage tools against official GET/POST/PUT/DELETE and upload-style endpoints
  • Endpoint conformance tests run every dedicated tool against a recording client and check each request's path, method, and parameters, and every endpoint named in the docs, against tests/fixtures/pve-api-snapshot.json, a snapshot of the official API viewer schema
  • Package tests verify repository metadata and published-package structure
  • The official API audit script fetches the Proxmox API viewer and reports the current upstream route and method counts

CI security gates

GitHub Actions uses immutable action SHAs, npm ci for reproducible installs, runs npm audit --audit-level=high as part of npm run test:ci, performs GitHub dependency review on pull requests, and runs scheduled CodeQL analysis for the JavaScript codebase.

Publishing

npm pack --dry-run
npm publish --ignore-scripts

Publishing guidance, versioning rules, and release discipline live in AGENTS.md.

Support and feedback

The repository includes issue templates for:

  • bug reports
  • feature requests
  • compatibility reports

When reporting problems, include the package version, Pi version, Proxmox version, tool name, and auth mode if possible.

See also

License

MIT — see LICENSE.