Repository navigation
Version 1.33
[1.33.0] - 2026-10-09
Disk usage over the API — the last host insight that was CLI-only. Requires Cipi CLI ≥ 5.5.2 (cipi self-update, migration 5.5.2) so /etc/sudoers.d/cipi-api allows cipi disk and cipi disk *; the command itself exists since 5.5.0. Nothing changes for older servers: the two new endpoints answer 503 there, every other route is as in 1.32.0.
Added
GET /api/disk— whatcipi disk --jsonprints: the filesystem/homeis on (mount,size_gb,used_gb,free_gb,used_percent), every app largest first withfiles_gb,database_gb,total_gb,percentof the disk, the KiB figures, the soft limit (limit_gb,limit_percent,over_limit), and theapps_total_gb/apps_percent/other_gb/other_percenttotals. Synchronous; sizes are measured on request, so a server with large apps takes a few seconds. Abilitydisk-view.GET /api/disk/dbs— whatcipi disk db --jsonprints, as one entry per installed engine (mariadb,pgsql,valkey,meilisearch):databases(name,size_mb, pluskeysfor Valkey anddocumentsfor Meilisearch),on_disk_mb,memory_mb(Valkey),notewhen the engine did not answer. Abilitydisk-view.- Token ability
disk-viewinconfig/cipi.php(cipi api token createlists it). - MCP —
DiskUsage,DiskDatabases(read-only). - CLI whitelist —
diskinCipiCliService::ALLOWED_COMMANDS.
Changed
- MCP server — version 1.3.0; 73 tools, still one
tools/listpage. - OpenAPI —
info.version1.33.0; 2 new paths, 2 new schemas; theServertag covers disk usage.
[1.32.0] - 2026-10-07
Covers Cipi 5.5.0 → 5.5.1: soft disk limit per app, several Cloudflare accounts for DNS-01, and wildcard certificate options. The commands are already in /etc/sudoers.d/cipi-api (app limits *, ssl install *, ssl dns *), so no sudoers migration is needed; Cipi CLI ≥ 5.5.0 is required for disk_limit_gb and /ssl/dns, ≥ 5.5.1 for http / wildcard: false on SSL install.
Fixed
GET /api/appsdid not returncustom, so clients showed custom apps as Laravel. List and show now returncustom(normalized boolean) and a newtypefield:laravel,customornode. Cipi storescustom: trueon Node apps too, sotypeis the field to tell them apart. The list also returnsdocroot.- MCP
AppList/AppShow— sametype/customfields, plusnode,node_mode,node_version(they were only in the REST responses).
Added
- Limits (
cipi app limits):GET /api/apps/{name}/limits—fpm_max_children,memory_limit,octane_workers,worker_procs(null = CLI default), the defaults, anddisk_limit_gb. Abilityapps-view.PUT /api/apps/{name}/limits— any of those fields, plusdisk_limit_gb(GB, files + database, at most two decimals;nullremoves it). Async jobapp-limits; the result reportsdisk_used_gb,disk_percent,over_limit. Node apps accept onlydisk_limit_gb. Abilityapps-edit.- The disk limit is soft (Cipi 5.5.0): the monitor check
app_diskwarns at 90% and alerts when over; nothing is blocked.
- DNS-01 / wildcard SSL (Cipi ≥ 5.5.0):
POST /api/apps/{name}/sslaccepts an optional body{ dns: "cloudflare", account, wildcard, http }. Without a body Cipi ≥ 5.5.1 reissues a DNS-01 certificate over DNS-01 with its own account.GET /api/ssl/dns— Cloudflare accounts and the certificates that renew with each (ssl dns list --json).PUT /api/ssl/dns—{ name?, token }adds an account or rotates its token. Synchronous, so the token is never queued or stored by the API; it is never returned.DELETE /api/ssl/dns/{account}— refused with 409 while a certificate still renews with the account.- All with ability
ssl-manage. Thessl-installjob result now includeschallenge(http-01/dns-01),dns, andaccount.
- MCP —
AppLimitsShow,AppLimitsUpdate,SslDnsList;SslInstallacceptsdns,account,wildcard,http. Account tokens are deliberately not settable over MCP. - CLI whitelist —
app limits,ssl dns list|set|removeinCipiCliService::ALLOWED_COMMANDS.
Changed
- Dependencies —
laravel/framework^12.41.1 || ^13.0,laravel/sanctum^4.3.1(first release with Laravel 13 support), suggestedlaravel/mcp^1.0(new installs already get 1.0.x; tool names andtools/listare unchanged). - MCP server — version 1.2.0; 71 tools, still one
tools/listpage. - OpenAPI —
info.version1.32.0; 3 new paths, 6 new schemas. TheJobStatusResponsetype enum and resultoneOfnow also listnode-restart,app-fix-permissionsandapp-limits.