Automate your Linux server management with n8n workflows. The ManageLM community node provides full access to the portal API — manage agents, run tasks, monitor security, and trigger workflows on infrastructure events.
The ManageLM n8n community node lets you build automation workflows around your server infrastructure. It includes two nodes:
Combine them with any of n8n's 400+ integrations to build powerful automation: Slack alerts on task failure, PagerDuty incidents when agents go offline, Jira tickets from security audit findings, and more.
Agents, tasks, skills, groups, security, inventory, audit logs, notifications, reports, API keys, dependencies, and account.
6 webhook events with automatic registration, HMAC signature verification, and cleanup on deactivation.
Submit tasks with natural language instructions and optionally wait for results — same as Claude or the portal UI.
Run security audits, search findings, trigger remediation, scan inventory, and search packages across your fleet.
Create, read, update, and delete agents, skills, groups, API keys, and more — complete portal management from n8n.
Webhooks are automatically created when you activate a workflow and removed when you deactivate. No manual setup.
Open your n8n instance
Go to Settings > Community Nodes
Click Install a community node
Enter n8n-nodes-managelm and click Install
# Inside your n8n installation directory
npm install n8n-nodes-managelm
FROM n8nio/n8n:latest RUN npm install n8n-nodes-managelm
Tip: After installation, restart n8n. The ManageLM node and trigger will appear in the node panel under the search.
Both nodes use the ManageLM API credential, which requires two fields:
| Field | Description |
|---|---|
| Portal URL | Base URL of your ManageLM portal (e.g. https://app.managelm.com). Self-hosted users: use your own URL. |
| API Key | API key from Settings > API Keys in the portal (mlm_ak_...) |
In the ManageLM portal, go to Settings > API Keys
Create a new key — select permissions based on what your workflows need (agents, skills, groups, logs, reports)
In n8n, go to Credentials > New > ManageLM API
Paste the portal URL and API key, then save
Important: API key permissions control what the node can access. An admin key sees all agents; a member key only sees assigned agents. Use the narrowest scope that fits your workflows.
The ManageLM Trigger starts a workflow when an infrastructure event occurs. It automatically manages webhooks in the portal:
The only setting is Events — select which events should trigger the workflow:
| Event | Fires when |
|---|---|
agent.enrolled | A new server requests enrollment |
agent.approved | An agent is approved by an admin |
agent.online | An agent connects to the portal |
agent.offline | An agent disconnects from the portal |
task.completed | A task finishes successfully |
task.failed | A task fails with an error |
The trigger outputs a JSON object with the event data. All fields from the webhook payload are flattened:
{
"event": "task.completed",
"timestamp": "2026-03-21T14:30:00.000Z",
"task_id": "a1b2c3d4-...",
"agent_id": "e5f6g7h8-...",
"hostname": "web-prod-01",
"display_name": "web-prod-01",
"skill_slug": "packages",
"status": "completed",
"summary": "Updated 12 packages successfully",
"mutating": true
}
The ManageLM action node provides full access to the portal API. Select a Resource and an Operation, fill in the parameters, and execute.
| Operation | Description |
|---|---|
| Get All | List all agents with status, health metrics, and metadata |
| Get | Get a single agent by ID |
| Update | Update display name, tags, LLM config, schedules, groups |
| Approve | Approve a pending agent |
| Delete | Remove an agent from the portal |
| Get Metrics | Get health metrics history (CPU, memory, disk, load) |
| Get Skills | List skills assigned to an agent |
| Assign Skill | Assign a skill to an agent |
| Remove Skill | Remove a skill from an agent |
| Get Stats | Get fleet-wide agent statistics |
| Operation | Description |
|---|---|
| Submit | Submit a task with natural language instruction. Optionally wait for result. |
| Get | Get task status and result by ID |
| Get All | List tasks with optional filters (agent, status, limit) |
| Operation | Description |
|---|---|
| Get All | List all skills in your account |
| Get | Get a single skill by ID |
| Create | Create a custom skill with system prompt, commands, and operations |
| Update | Update skill definition, name, or description |
| Delete | Delete a custom skill |
| Catalog | Browse the built-in skill catalog |
| Import from Catalog | Import skills from the catalog into your account |
| Operation | Description |
|---|---|
| Get All | List all server groups |
| Create | Create a new group |
| Update | Rename a group |
| Delete | Delete a group |
| Get Agents | List agents in a group |
| Set Agents | Replace all agents in a group |
| Add Agents | Add agents to a group |
| Operation | Description |
|---|---|
| Run Audit | Trigger a security audit on an agent |
| Get Report | Get the latest security audit report for an agent |
| Search | Search security findings across all agents |
| Operation | Description |
|---|---|
| Run Scan | Trigger an inventory scan on an agent |
| Get Report | Get the latest inventory report for an agent |
| Search | Search packages, services, or containers across all agents |
| Resource | Operations |
|---|---|
| Account | Get account info, usage, and plan details |
| Audit Log | Query the audit trail with filters |
| Notification | List, read, and clear in-app notifications |
| Report | Export PDF or CSV reports |
| API Key | List, create, and revoke API keys |
| Dependency | Search and analyze package dependencies across agents |
Send a Slack message when any agent goes offline:
ManageLM Trigger (agent.offline)
→ Slack: Send Message
Channel: #ops-alerts
Text: "Server {{ $json.hostname }} went offline"
Run a security audit on all agents every day and email findings:
Schedule Trigger (daily at 06:00)
→ ManageLM: Agent > Get All
→ Loop Over Items
→ ManageLM: Security > Run Audit (agent_id)
→ Wait 60s
→ ManageLM: Security > Get Report (agent_id)
→ IF: findings > 0
→ Email: Send summary
Automatically approve agents that enroll from a known IP range:
ManageLM Trigger (agent.enrolled)
→ ManageLM: Agent > Get (agent_id)
→ IF: ip_address starts with "10.0.1."
→ ManageLM: Agent > Approve (agent_id)
→ Slack: "Auto-approved {{ $json.hostname }}"
Submit a task from a Slack slash command and return the result:
Webhook (Slack slash command)
→ ManageLM: Task > Submit
agent_id, skill_slug: "packages"
instruction: "List outdated packages"
wait: true
→ Slack: Reply with task summary
The trigger node receives these events from the ManageLM portal. All payloads include event, timestamp, and agent_id at minimum:
Include agent_id, hostname, display_name.
Include task_id, agent_id, hostname, display_name, skill_slug, status, summary, mutating, error_message.
Tip: Use the n8n IF node to filter by event type, hostname, or skill — for example, only alert on task.failed events from production servers.
Restart n8n completely. Community nodes are loaded at startup. If using Docker, rebuild the container.
The API key is invalid or expired. Go to Settings > API Keys in the portal, verify the key is active, and update the n8n credential.
The API key belongs to a member user who doesn't have access to that agent. Either use an admin key or assign the agent to the user.
The target agent is offline. Use the Agent > Get operation to check the agent's status before submitting tasks.
This can happen if the webhook was manually modified in the portal. Deactivate and reactivate the workflow — this recreates the webhook with a fresh secret.