PSA/docs/integrations/tactical-rmm.md
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

5.0 KiB

Tactical RMM Integration (Admin Guide)

AlgaPSA connects to Tactical RMM, an open-source RMM platform, to bring your monitored devices into AlgaPSA as assets and to turn Tactical alerts into AlgaPSA records. The core integration reads from Tactical: it syncs clients and agents, ingests alerts by webhook and backfill, and pulls cached software inventory. It is available in both Community and Enterprise editions. Enterprise Edition adds remote actions that run scripts and commands on agents from workflows. Each tenant connects a single Tactical instance.

Before you connect (on the Tactical server)

Set two things on Tactical first, or the connection test and sync will fail.

  • Enable the Beta API. AlgaPSA syncs inventory through Tactical's beta API, which is off by default. Set BETA_API_ENABLED = True in Tactical and restart it. While it is off, the inventory endpoints return 404.
  • Use the API host, not the dashboard. Tactical serves its API on the api. subdomain, for example https://api.example.com. The dashboard host (rmm.) serves the web app and answers every path with its own HTML, so a connection pointed there looks like it succeeds but syncs nothing.

Connect to Tactical RMM

Go to Settings → Integrations → RMM → Tactical RMM. Enter the Tactical API host as the Instance URL, then choose how AlgaPSA authenticates:

  • API key. Paste a Tactical API key. AlgaPSA sends it as the X-API-KEY header.
  • Username and password (Knox token). Enter Tactical credentials. AlgaPSA logs in for a Knox token and refreshes it automatically. If the account uses TOTP, AlgaPSA asks for the current code.

Save, then click Test Connection. AlgaPSA stores the credentials as tenant secrets (tacticalrmm_api_key, or tacticalrmm_username, tacticalrmm_password, and tacticalrmm_knox_token) and never returns them to the browser, so the form shows only a masked value. The connection itself lives in rmm_integrations under provider tacticalrmm, which records the instance URL, auth mode, active state, and last sync time.

Disconnect clears the stored secrets and marks the connection inactive. It keeps your organization mappings, so reconnecting later does not start over.

Sync clients and map them to AlgaPSA

Click Sync Clients to pull Tactical Clients into AlgaPSA. Each one becomes a row in rmm_organization_mappings. In the Organization Mapping section, assign each Tactical Client to an AlgaPSA client and use the Auto-sync toggle to control whether that organization's devices import. Map a Tactical Client to an AlgaPSA client before you sync devices, so its agents land on the right client.

Sync devices into assets

Click Sync Devices to import agents from the organizations you mapped with Auto-sync on. AlgaPSA creates or updates one asset per agent, tags the asset with its source (rmm_provider = 'tacticalrmm', plus the Tactical agent id and organization id), and links the agent to the asset in tenant_external_entity_mappings under integration_type = 'tacticalrmm'.

Each asset shows the agent's status as online, offline, or overdue. Tactical's overdue state stays distinct from offline. AlgaPSA also stores the last-seen time and cached vitals such as current user, uptime, and LAN/WAN IP when Tactical reports them. When an agent disappears from Tactical, AlgaPSA leaves its asset in place rather than deactivating it.

Receive alerts

Tactical pushes alerts to AlgaPSA over a webhook. In the Webhooks section, copy the Webhook URL and Header Secret, then add an alert-action webhook in Tactical that posts to that URL and sends the X-Alga-Webhook-Secret header. The settings page shows a payload template; only agent_id is required.

When an alert arrives, AlgaPSA records it in rmm_alerts, links it to the matching asset, and refreshes that agent. An event whose type contains resolve marks the alert resolved; anything else opens or updates an active alert. Click Sync Alerts to backfill currently active alerts from Tactical for history.

Ingest software inventory

Click Ingest Software to pull Tactical's cached software inventory in bulk for your mapped agents. AlgaPSA writes it to the software catalog and links it to each asset. This reads Tactical's cached data and does not trigger a per-agent refresh.

Remote actions (Enterprise Edition)

Enterprise Edition can drive Tactical from workflows. A workflow can list and inspect agents, run a script or a shell command on an agent, and reboot an agent, all through the same stored credentials. These actions run on the endpoint, so scope them carefully.

Permissions

Connecting, disconnecting, syncing, and editing mappings require the system_settings permission. The webhook endpoint does not use a login session. It validates the X-Alga-Webhook-Secret header against the tenant's stored tacticalrmm_webhook_secret.