unolia/unolia-cli
Unolia CLI is a command-line toolkit for Laravel and PHP projects, offering terminal commands that simplify interacting with the Unolia platform, automating common workflows, and managing tasks without leaving your console.
--json [fields], --jq, stable exit codes (0–7, 130), --dry-run, and --yes mean your scripts stop parsing human-readable output and stop inventing their own failure semantics.unolia deploy previews the commit delta between live, branch head, and local checkout before asking, then follows to completion; unolia watch detaches with Ctrl+C leaving remote work running. This is the substrate for deciding how often you ship and what "safe deploy" means procedurally.unolia status (names which source resolved the context), dns check (prints only the diff between zone and resolver answers), and compare local (PHP/Laravel/Composer versions vs. production) map directly to recurring ticket categories — drift, misconfiguration, environment mismatch. Each of these is a decision point: invest in automation or keep paying humans to triage.dns list/add/set/edit/remove/watch/dig/check/export scoped to the project zone, combined with --dry-run, supports a governance decision to require a reviewable, reversible DNS change process instead of console clicking.issue list → preview fix → apply, plus automations run/resume/replay (including answering a run that paused on a question, in place) implies a product direction toward guided self-healing. Usable as evidence for a roadmap item on automated remediation, and as a ceiling on how much you build in-house.gh auth login, scope-missing errors that name the exact unolia auth refresh --scopes <scope> command, UNOLIA_TOKEN for scripts, config at mode 0600. This supports a decision to put CLI access into CI without minting broad, long-lived tokens.unolia api (like gh api) is the escape hatch for endpoints without a first-class command. That removes the "we need a bespoke client for the one thing the CLI doesn't do" objection — a real build-vs-buy lever..unolia/config.json via unolia init, plus configure herd (writes herd.yml from production, runs herd init) and open (jump to project/site/repo/provider). Directly supports a decision to shrink time-to-first-deploy for new engineers.unolia mcp setup registers the Unolia MCP server in Claude Code, Cursor, VS Code, Codex, Gemini CLI, Junie, Kiro, OpenCode, and Amp in one command; unolia help agents prints a short agent-facing contract; --format table|json|ndjson|csv|yaml on every command. This is the decision input for whether to let agents drive deploys/DNS, and under what guardrails./api/v2; v1 commands (domain:*, dig, teams, me) still work but are hidden from help; UNOLIA_API_TOKEN still works with a warning. Hidden-and-working is the classic pre-removal posture — treat this as a forcing function to schedule the rewrite of anything you built against v1.Consider it when:
app.unolia.com). This is the control-plane client — outside that platform it has no function. It is a CLI distributed via Composer, not an embeddable PHP library; your integration surface is the shell, in dev and in CI.unolia mcp setup, --format ndjson, --dry-run, and stable exit codes give an agent a bounded, inspectable action space — a prerequisite for letting one touch production at all.dns check, dns export, --dry-run) rather than imperative.compare local and configure herd are cheap wins for the "works on my machine" class of bug.unolia.phar on PATH, or run cpx unolia/unolia-cli with no global install..unolia/config.json committed) so commands need no flags, with flags, UNOLIA_* variables, and the git remote as fallbacks.Look elsewhere when:
/api/v2 is the right answer, not shelling out from a Laravel service..unolia/config.json (e.g., policy forbids repo-level environment metadata) and cannot supply UNOLIA_* variables everywhere — you lose the main ergonomic benefit./api/v2; plan for removal.open only partially bridges it.For executives — one paragraph. Unolia's entire platform — projects, websites, deployments, CI, automations, DNS, providers — is now drivable from a single command line, with the same tool serving both engineers and automation. That means we stop maintaining glue scripts, we get an auditable and reversible record of infrastructure changes, and we can put the platform into our CI and agent workflows without building a bespoke integration. The upgrade is a rewrite, but tokens migrate automatically and old commands keep working, so the switching cost is a short, schedulable sweep rather than a migration project.
For engineering — why it's worth the afternoon. Login is browser-based with scoped tokens, so no more pasting long-lived credentials around; UNOLIA_TOKEN covers CI, and a missing scope tells you the exact auth refresh command to run. Every command supports --json/--jq/--format and a documented exit-code table, so scripts never parse prose and failures are branchable. --dry-run exists on anything mutating. unolia init commits repo context so commands work flag-free, and unolia status tells you which source answered when they don't. unolia api is the escape hatch for anything not yet wrapped, and unolia mcp setup wires the MCP server into the agent tooling in one command.
Risks and the ask. Three things to schedule, not discover: direct API callers must move to /api/v2 paths; UNOLIA_API_TOKEN should be renamed to UNOLIA_TOKEN (works today, warns, will presumably stop); v1 command spellings are hidden and should be treated as deprecated. Ask: pilot on one or two repositories, instrument deploy lead time and DNS-change error rate before and after, confirm CLI token scopes cover our access policy, then standardize in CI and retire the in-house scripts.
How can I help you explore Laravel packages today?