Automation, JSON and troubleshooting


No interactive prompts

Every command except podium configure fails with a clear “required argument” error rather than prompting. Nothing ever blocks a script or an agent waiting for input.

Use podium up-all / podium down-all to act on every project rather than looping.


JSON output

--json-output produces clean machine-readable output for GUIs and scripts.

podium status --json-output
podium new laravel myapp --version 11.x --json-output
{
  "action": "new_project",
  "project_name": "myapp",
  "framework": "laravel",
  "database": "mysql",
  "status": "success"
}

Scripting examples:

# wait for the database to be up
if podium status --json-output | jq -r '.shared_services.mariadb.status' | grep -q RUNNING; then
    echo "Database is ready"
fi

# start every project, including stopped ones
for project in $(podium status --all --json-output | jq -r '.projects[].name'); do
    podium up "$project" --json-output
done

Which commands support it

Supported: status, new, clone, setup, remove, up, down, start-services, stop-services, configure, uninstall.

Not supported — anything that runs inside a container or connects straight to a service: composer, art, wp, php, npm, npx, node, python, pip, shell, django, exec, supervisor, redis, memcache.

If you are an AI agent, never use --json-output. It suppresses all human-readable output including the success/failure distinction, so you cannot tell whether a command actually worked. It exists for external programs that parse Podium’s output, not for agents driving the CLI.


Debugging

podium new laravel test-project --debug
tail -f /tmp/podium-cli-debug.log

--debug works on every command. Each invocation starts a fresh session and logs script flow, function calls and exit codes across scripts.


Troubleshooting

Symptom Check
Services won’t start Docker is running; you’re in the docker group (log out and back in after install)
Permission errors Same — docker group membership needs a fresh login
Can’t reach http://project/ podium status <project>; then docker logs <project-name>
Database connection refused podium status — is the shared service running?
Project 502s after a restart A dependency isn’t in the base image. See Architecture → Base images
Fedora: permission denied on project files SELinux — re-run podium configure to relabel. See Installation
Arch: Docker won’t start after install The system upgrade replaced the running kernel — reboot

Useful probes:

podium status                       # everything
podium status <project> --all       # include stopped projects
docker logs <project-name>
podium exec "ping podium-mariadb"   # networking from inside the container

Graphics tooling

The installers ship ImageMagick (convert, magick) and rsvg-convert on the host, so projects needing graphics have no extra dependencies.

Prefer generating SVG — browsers render it perfectly and it’s text an agent can write directly. Convert only when a raster is genuinely required:

rsvg-convert sprite.svg -o sprite.png                        # best SVG → PNG fidelity
convert -size 1200x800 gradient:'#1e3a8a-#04081d' bg.png     # procedural backgrounds

These are host tools — run them directly, not through podium exec.