v4.0.0 — MIT Licensed — 1.1k Stars

Easy Laravel Deployments

The open-source CLI built exclusively for Laravel. One command installs a complete production stack. One command creates an isolated app with its own database, workers, SSL, and zero-downtime deploys.

Install on any Ubuntu 24.04+ VPS
$ wget -O - https://raw.githubusercontent.com/andreapollastri/cipi/refs/heads/latest/install.sh | bash

A single VPS becomes a multi-app
Laravel hosting platform

Every app runs under its own Linux user. Isolated filesystem, PHP-FPM pool, and database. One compromised app cannot touch the others.

Nginx Reverse Proxy

Per-app virtual hosts with optimized configuration for Laravel applications.

Multi PHP & Composer

Selectable per app. Hot swap PHP versions from 7.4 to 8.5 and Composer 2.

MariaDB

Auto-tuned to your server's RAM. Dedicated database per app with isolated users.

Supervisor Workers

Per-app queue workers with CLI management. Add, scale, and monitor queues.

Deployer

Zero-downtime deployments with instant rollback. Keeps last 5 releases.

Let's Encrypt SSL

Automatic certificates via Certbot with SAN support for domain aliases.

Fail2ban + UFW

Brute-force protection and firewall out of the box. SSH, HTTP, HTTPS only.

S3 Backups

Automated database and storage backups to Amazon S3 or compatible providers.

From zero to production
in three steps

01

Install Cipi

Run the installer on a fresh Ubuntu 24.04+ VPS. Takes about 10 minutes. At the end, save the MariaDB root password — it's shown only once.

02

Create your app

Run cipi app create and answer a few questions: username, domain, Git repo, branch, PHP version. Cipi sets up everything — user, database, Nginx, workers, cron.

03

Deploy & go live

Run cipi deploy myapp for zero-downtime deployment, then cipi ssl install myapp for HTTPS. Your Laravel app is live.

Who uses Cipi

From solo developers to hosting providers — anyone who ships Laravel on a VPS.

Developers

Ship without the DevOps overhead

You write Laravel. Cipi handles the server. One command gives you a production-grade stack with isolation, SSL, queue workers, and zero-downtime deploys — no Nginx configs, no FPM tuning, no sleepless nights.

Agencies

One VPS, many clients — fully isolated

Run dozens of client projects on a single server. Each app has its own user, database, PHP version, and deploy key. A problem in one project never affects the others. Onboard a new client in minutes, not hours.

Startups & SaaS

Move fast without breaking production

Atomic deploys, instant rollbacks, webhook auto-deploy on every push. S3 backups so you can recover from anything. Grow from a single cheap VPS to a multi-server setup without changing your workflow.

Infrastructure & Datacenters

Integrate the CLI into your automation pipelines

Every Cipi command is a plain shell call. Wire it into Ansible playbooks, provisioning scripts, or internal tooling to spin up isolated Laravel environments programmatically. Manage hundreds of apps without manual intervention — your datacenter, fully automated.

Everything you need,
nothing you don't

Built for Laravel developers who value security, simplicity, and control. No web panel, no bloat — just SSH and the cipi command.

Talks with agents

AI Agent Ready

Because Cipi is CLI-first, any AI agent with SSH access can deploy, roll back, back up, and manage your server with natural language. Works with Claude, OpenAI, OpenClaw, and any framework that supports tool use.

Secure by design

Full Isolation

Each app has its own Linux user, PHP-FPM pool, database, SSH key, and home directory. open_basedir restricts PHP to the app's home. No app can touch another.

CI/CD Ready

Zero-Downtime Deploys

Deployer clones your repo, runs composer install, links storage, runs migrations, and swaps the symlink atomically. Instant rollback to any of the last 5 releases.

Just push

Webhook Auto-Deploy

Install the Cipi Agent Laravel package for automatic deploys on git push. Supports GitHub and GitLab with HMAC signature verification.

Ops friendly

Artisan, Tinker & Logs

Run Artisan and Tinker as the app user with the correct PHP version. Tail logs in real-time — Nginx, PHP-FPM, workers, deploys. Auto-rotated daily, kept 14 days.

Don't lose your data

S3 Automated Backups

Back up databases and storage to Amazon S3 or any S3-compatible provider — Hetzner, DigitalOcean Spaces, Backblaze B2, MinIO. Each backup includes a compressed database dump and the full shared/ directory. Schedule daily runs via cron.

Manage domains like a pro

Aliases & SSL

Add multiple domains or subdomains to any app. Certbot provisions a single SAN certificate covering all domains. Auto-renew via weekly cron.

CIPI LOVES PHP

Multiple PHP Versions

From 7.4 to 8.5 — all installed, selectable per app. Switch any app to a different PHP version with one command: Cipi hot-swaps the FPM pool, Nginx socket, Supervisor workers, crontab, and Deployer config with zero downtime.

Documentation

Everything you need to know,
in one place

Full technical docs covering installation, the Cipi Agent Laravel package, webhook setup, every CLI command with examples, security model, and more.

AI-native

Your CLI,
your agent's
superpower.

Cipi is CLI-first by design. That means any AI agent with SSH access can operate your entire Laravel infrastructure — deploy, rollback, backup, manage databases and queues — without any GUI, API key, or custom integration.

  • Deploy, rollback, and run migrations via natural language
  • Expose every Cipi command as a typed MCP tool in seconds
  • Autonomous deploy loops: backup → release → health check → rollback
  • Works with any framework that supports SSH or tool use
Claude / MCP OpenAI functions OpenClaw LangChain LlamaIndex CrewAI AutoGen Gemini Mistral Ollama
Read the AI integration guide
Claude — cipi MCP server
you
Deploy myapp to production. Make sure migrations ran and roll back if the health check fails.
AI
Taking a local DB snapshot before releasing. → cipi_db_backup({ app: "myapp" }) ✓ Snapshot saved — myapp_20260303_091201.sql.gz
AI
Deploying. → cipi_deploy({ app: "myapp" }) ✓ Release 14 live — symlink swapped, workers restarted
AI
Checking migration status. → cipi_artisan({ app: "myapp", cmd: "migrate:status" }) ✓ All migrations up-to-date
AI
All good. Release 14 is live at myapp.example.com. Snapshot is available for instant restore if needed.

One command for everything

No GUI, no overhead. Manage your entire Laravel infrastructure from the terminal.

cipi app createCreate app (interactive)
cipi app create --user=U --domain=D --repository=R --php=VCreate app (flags, non-interactive)
cipi app listList all apps
cipi app show <app>App details, deploy key, workers
cipi app edit <app> --php=8.5Change PHP version
cipi app edit <app> --branch=developChange deploy branch
cipi app env <app>Edit .env in nano
cipi app logs <app>Tail all logs
cipi app logs <app> --type=deployTail specific log type (nginx, php, worker, deploy)
cipi app artisan <app> migrateRun Artisan command
cipi app tinker <app>Open Tinker
cipi app delete <app>Delete app
cipi deploy <app>Deploy via Deployer
cipi deploy <app> --rollbackRollback to previous release
cipi deploy <app> --releasesList releases
cipi deploy <app> --keyShow SSH deploy key
cipi deploy <app> --webhookShow webhook URL & token
cipi deploy <app> --unlockRemove a stuck deploy lock
cipi worker add <app> --queue=Q --processes=NAdd worker
cipi worker list <app>List workers
cipi worker edit <app> --queue=Q --processes=NEdit worker
cipi worker remove <app> <queue>Remove worker
cipi worker restart <app>Restart all workers
cipi db createCreate database
cipi db listList databases with sizes
cipi db backup <n>Backup to local file
cipi db restore <n> <file>Restore from file
cipi db password <n>Regenerate password
cipi db delete <n>Delete database
cipi backup configureConfigure S3 credentials
cipi backup run [app]Backup all or single app
cipi backup list [app]List backups
cipi ssl install <app>Install Let's Encrypt SSL
cipi ssl renewRenew all certificates
cipi ssl statusShow certificates & expiry
cipi php install <ver>Install PHP version
cipi php remove <ver>Remove PHP version
cipi php listList installed PHP versions
cipi alias add <app> <domain>Add domain alias
cipi alias remove <app> <domain>Remove alias
cipi alias list <app>List aliases
cipi service listStatus of all services with uptime info
cipi service list <service>Status of a specific service
cipi service restartRestart all services
cipi service restart <service>Restart one service (nginx uses graceful reload)
cipi service restart phpRestart all installed PHP-FPM versions
cipi service start <service>Start a stopped service
cipi service stop <service>Stop a running service (with confirmation)
cipi firewall allow <port>Allow port
cipi firewall allow <port> --from=IPAllow port from IP
cipi firewall deny <port>Deny port
cipi firewall listShow firewall rules
cipi statusServer status (CPU, RAM, disk, services, PHP, apps)
cipi versionShow Cipi version
cipi self-updateUpdate Cipi
cipi self-update --checkCheck for updates without installing

Works on any Ubuntu VPS

Ubuntu 24.04 LTS or higher, root access, ports 22/80/443 open. That's all you need.

DigitalOcean AWS EC2 Vultr Linode Hetzner Google Cloud OVH Scaleway

What changed in v4

A complete rewrite focused on Laravel, security, and the command line.

Feature v3 v4
Interface Web UI (Laravel app) CLI only (SSH)
Target Generic PHP + WordPress Laravel exclusively
Database MySQL MariaDB 11.4
Deploy git pull Deployer (zero-downtime)
Workers Basic Supervisor CLI-managed add/edit/remove
Cache / Queue Redis optional Database (Laravel native)
Deploy Keys Shared Per-app (ed25519)
Webhooks Not available GitHub / GitLab
Updates Reinstall cipi self-update with migrations
Backup Not available S3 automated

Deploy your Laravel app today

Open source, MIT licensed, free forever. Install on your VPS and start deploying in minutes.

cipi — live demo
$ wget -O - https://raw.githubusercontent.com/andreapollastri/cipi/refs/heads/latest/install.sh | bash
GitHub Repository Read the Docs Report an Issue