AutoBot uses a two-phase deployment model:
install.sh— A Virtualmin-style shell script that deploys the SLM (Service Lifecycle Manager) and all dependencies onto a blank Debian/Ubuntu host.- Setup Wizard — A guided web UI that walks you through adding fleet nodes, testing connections, enrolling agents, assigning roles, and provisioning.
After both phases complete you have a fully operational AutoBot fleet.
| Requirement | Minimum |
|---|---|
| OS | Debian 11+ / Ubuntu 22.04+ |
| RAM | 4 GB |
| Disk | 20 GB free |
| Access | Root (or sudo) |
| Network | Internet access for package downloads |
# One-liner (downloads and runs the installer):
curl -fsSL https://raw.githubusercontent.com/mrveiss/AutoBot-AI/main/install.sh | sudo bash
# Or clone first, then run:
git clone https://github.com/mrveiss/AutoBot-AI.git
cd AutoBot-AI
sudo ./install.shThe installer takes 10-20 minutes depending on network speed and hardware.
The install script runs six phases automatically:
| Phase | Description |
|---|---|
| 1/6 Pre-flight | Checks OS, disk, memory, internet, existing installs |
| 2/6 System Setup | Installs system packages, creates autobot user, sets up directories |
| 3/6 Code Deployment | Clones the repository to /opt/autobot/code_source, creates a Python venv |
| 4/6 Ansible Deployment | Runs deploy-slm-manager.yml locally (PostgreSQL, SLM backend, nginx, monitoring) |
| 5/6 Service Verification | Waits for the SLM backend to become healthy (up to 2 minutes) |
| 6/6 Finalize | Writes the install marker, prints access URL and credentials |
sudo ./install.sh # Standard interactive install
sudo ./install.sh --unattended # Skip all prompts (CI/automation)
sudo ./install.sh --reinstall # Re-run on an already-installed system
sudo ./install.sh --help # Show help
All output is logged to /var/log/autobot/install-<timestamp>.log.
After the installer finishes, open the SLM web UI in your browser:
https://<server-ip>
Log in with the admin credentials printed at the end of the install. On first login the setup wizard launches automatically and guides you through:
| Step | Action |
|---|---|
| Welcome | Overview of the setup process |
| Add Nodes | Enter hostname/IP and SSH credentials for each fleet node |
| Test Connections | Verify SSH connectivity to every node |
| Enroll Agents | Install the AutoBot agent on each node |
| Assign Roles | Choose which role(s) each node performs |
| Provision Fleet | Run Ansible provisioning across the fleet |
| Verify Health | Confirm all nodes and required roles are healthy |
| Complete | Setup finished — redirects to Fleet Overview |
You can skip the wizard at any time and return to it later from Settings > General > Re-run Setup Wizard.
To run the wizard again:
# Via API
curl -sk -X POST https://localhost/api/setup/reset \
-H "Authorization: Bearer <token>"
# Or from the Settings page in the UIAfter a successful install the following paths are created:
/opt/autobot/
├── code_source/ # Git clone of AutoBot-AI
├── autobot-slm-backend/ # SLM backend (FastAPI + Ansible)
├── autobot-slm-frontend/ # SLM frontend (Vue 3, built)
├── venv/ # Python virtual environment
└── .autobot-installed # Install marker (prevents re-install)
/etc/autobot/
└── slm-secrets.env # Generated admin credentials + secrets
/var/log/autobot/
└── install-*.log # Installer logs
| Service | Description |
|---|---|
autobot-slm-backend |
FastAPI backend (systemd) |
nginx |
Reverse proxy + static frontend |
postgresql |
Database |
Check service status:
sudo systemctl status autobot-slm-backend
sudo systemctl status nginx
sudo systemctl status postgresqlCheck the Ansible log:
tail -100 /var/log/autobot/install-*.logCommon causes:
- Missing internet access (package downloads fail)
- Port 5432 already in use (existing PostgreSQL)
- Insufficient disk space
# Verify backend is running
sudo systemctl status autobot-slm-backend
# Check nginx
sudo nginx -t
sudo systemctl status nginx
# Test backend health directly
curl -sk https://localhost/api/healthThe wizard only redirects on first run (before setup_wizard_completed is set
to true in the database). To force it:
curl -sk -X POST https://localhost/api/setup/reset \
-H "Authorization: Bearer <token>"Then refresh the browser.
Use the --reinstall flag to bypass the "already installed" check:
sudo ./install.sh --reinstallThis does not destroy data — it re-runs all phases and overwrites code and configuration while preserving the database.