Devpilot
Servers

AI Script Assistance

Generate, explain, debug, and optimize scripts from inside the Devpilot editor — without leaving the dashboard.

AI Script Assistance

Devpilot's AI assistant turns plain-language descriptions into working scripts, explains unfamiliar ones, diagnoses failures, and suggests optimizations. It lives in the script editor behind the AI Assist button and runs the heavy lifting server-side using an approved LLM provider.

The assistant offers four actions — Generate, Explain, Debug, and Optimize — and every action lets you pick the target language (bash, python, node, php, or custom). Bash is the default.

The assistant only produces text. Running the result is still up to you — review it in the editor and save when you're happy. Every save is captured in Script Versions, so you can always roll back.

Generate a Script

Open AI Assist

In the script editor, open AI Assist and choose the Generate tab.

Describe what you want

Type a clear prompt (up to 2000 characters). Be specific about signals, outputs, and target environment:

Alert to a Slack webhook whenever any mounted disk is over 90% full. Include the mount point and usage percentage. The Slack URL is available as the SLACK_URL environment variable.

You can also add a short context string (up to 500 characters) — for example "Ubuntu 22.04 server, systemd-managed services, agent runs as root" — so the assistant tunes its output to your environment.

Review the result

The assistant replies with a complete script plus suggested metadata: a short name, a one-sentence description, a suggested category (security, diagnostics, maintenance, networking, deployment, backup, monitoring, or general), two to five lowercase tags, and a plain-language explanation of what the script does.

You can paste the result straight into the editor or tweak it first. Saving writes a new version entry automatically.

The assistant is instructed to produce production-grade code: set -euo pipefail on bash, parameterised variables with sensible defaults (using Devpilot's {{PARAM_NAME:default}} substitution syntax), helpful comments, and idempotent operations wherever possible.

Explain an Existing Script

Paste a script into the Explain tab and the assistant returns a structured walkthrough:

  1. Summary — one-sentence description of what the script does.
  2. Step-by-step breakdown — what each section or command does.
  3. Prerequisites — required software, permissions, or environment.
  4. Risks — any potentially dangerous operations.
  5. Suggestions — improvements or best practices.

Useful when you inherit a script from a teammate, want a second opinion before running something from a template, or need to document a script for review.

#!/bin/bash
set -euo pipefail

find /var/log -type f -name "*.log" -mtime +30 -delete
journalctl --vacuum-time=30d

Running Explain on the snippet above returns plain-language text confirming it removes log files older than 30 days from /var/log and prunes journal data to the same retention window — plus flags the fact that wildcards on find -delete should be used with care.

Debug a Failing Script

When a script errors, open the Debug tab and paste both the script content and the error output from the execution history. Both fields are required. The assistant returns a full analysis — root cause, the fix, why it works, and prevention tips — along with a fixed script you can paste straight back into the editor.

Gather inputs

Copy the script content from the editor and the failing run's error output from the Executions tab. Both are required.

Submit to Debug

Open AI Assist > Debug and paste both in. The response explains the problem and offers a corrected script.

Apply the fix

Paste the corrected script into the editor, save it (captured as a new version), and re-run.

Optimize a Working Script

When a script works but is slow, verbose, or error-prone, paste it into the Optimize tab. The assistant returns an analysis listing the changes it would make and why, along with an optimized script ready to paste back into the editor.

Good candidates for optimization:

  • Repeated subprocess calls that could be combined.
  • Missing set -euo pipefail or error handling.
  • Hard-coded values that would be cleaner as environment variables or Script Secrets.
  • Backup or archive pipelines that can stream instead of staging to disk.
  • Loops that could be one-liners with xargs, awk, or a structured tool.

Always read generated or modified scripts before running them on a real server. The assistant produces high-quality output but "run as root" still means "run as root." Test on a staging server or with a non-destructive dry run first.

Language Support

LanguageGenerateExplainDebugOptimize
bashYesYesYesYes
pythonYesYesYesYes
nodeYesYesYesYes
phpYesYesYesYes
customYesYesYesYes

Choose custom when your code doesn't match one of the built-in options — the assistant infers the best it can from the content.

Devpilot executes bash scripts directly on your servers. Scripts generated in Python, Node, or PHP are useful for reference or for execution through a wrapper — for example, a small bash script that runs python3 /path/to/script.py.

Limits and Constraints

  • Prompt length (Generate) — up to 2000 characters.
  • Context length (Generate) — up to 500 characters.
  • Script content and error output — large inputs are accepted but very long scripts may hit the upstream model's context window; trim irrelevant sections when possible.
  • Response time — the assistant calls an external LLM, so occasional slow responses are normal. The assistant waits up to 60 seconds per call before surfacing an error.
  • Output quality — varies with prompt clarity. A detailed, environment-aware prompt produces better scripts than a short one.

Troubleshooting

ProblemLikely cause
"AI service error" responseThe upstream LLM provider returned an error. Retry after a few seconds.
"Failed to connect to AI service"Temporary network issue between Devpilot and the LLM provider. Retry.
Script block is emptyThe model replied without a code block. Shorten and clarify the prompt.
Generated script targets wrong OSAdd an explicit context — for example "RHEL 9, firewalld, no systemd".
Debug answer suggests the same fixYour script may already be correct; re-check the error output for clues.

Next Steps