Download the PHP package pinoox/pinx-cli without Composer
On this page you can find all versions of the php package pinoox/pinx-cli. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package pinx-cli
Pinx CLI
The developer CLI for single-app Pinoox projects — scaffold, run, migrate, build, and ship .pinx packages without touching a multi-app manager.
Built on pinoox/pincore and the pinoox/app template. Your project root is the app: one app.php, one package, one workflow.
Quick start
Install Pinx once, create a new app, run it:
Add Composer’s global bin to your PATH if pinx is not found:
- Linux / macOS:
~/.composer/vendor/binor~/.config/composer/vendor/bin - Windows:
%APPDATA%\Composer\vendor\bin
| Step | What it does |
|---|---|
composer global require |
Installs the pinx command on your machine |
pinx new my-shop |
Scaffolds from pinoox/app; wizard suggests a 3-part package (e.g. com_my_shop) |
.env |
Minimal by default: APP_ENV=development and DB_CONNECTION=devdb; use .env.example as the full reference |
pinx sync |
Adds support files and missing Composer dependencies required by single-app |
pinx repair |
Repairs a folder so it can run as a Pinx single-app project |
pinx migrate |
Runs app migrations; DevDB is used automatically for local development unless you configure another database |
pinx dev |
PHP dev server; starts Vite too when a frontend stack is configured |
pinx inspector |
Standalone local browser dashboard powered by the optional pinoox/pinx-inspector dev package |
Package names follow com_{vendor}_{name} — e.g. com_acme_shop, ir_yekdo_app. Already inside an empty folder? Use pinx init instead of pinx new.
Optional check: pinx doctor reports PHP, layout, env, DB, and build readiness.
To turn an existing app folder into the single-app layout:
Use pinx sync to prepare an existing app folder for single-app development. A new composer.json gets its package name, version, and description from app.php; existing manifests keep their metadata. Sync also merges missing require and require-dev entries from pinoox/app, while preserving existing constraints, custom dependencies, app code, and routes. After synchronization, run composer install. Use pinx sync --force or pinx repair --force only when you intentionally want template-managed support files overwritten.
Pinx Inspector is available automatically while pinx dev is running:
Pinx Inspector is provided by pinoox/pinx-inspector and should be installed in require-dev:
Use pinx dev --no-inspector to disable it, or pinx inspector as a standalone fallback when the app server is not running. Inspector is local-only and works without Node, npm, Electron, or extra setup.
Alternative: composer create-project
No global install — the template ships with bin/pinx inside the project:
What makes single-app different
Classic Pinoox installs keep many apps under apps/ and pick one at runtime. Single-app flattens that:
app.phpat the project root holds package identity and pinx settingsController/,Model/,routes/,theme/live at the root — not insideapps/{package}/platform/andstorage/are local host/runtime (excluded from.pinxbuilds unlessbuild.include)- Pinx always targets your app — no package picker, no manager UI
See the pinoox/app README for the full layout and config layers.
Installation
| Where | How | When to use |
|---|---|---|
| Global | composer global require pinoox/pinx-cli |
Recommended — pinx new and pinx init from anywhere |
| Per project | Shipped as bin/pinx in pinoox/app |
After composer create-project — no global install needed |
| Monorepo | composer require pinoox/pinx-cli:@dev with a path repo |
Developing pinx-cli alongside packages/app |
Day-to-day workflow
Frontend (when theme/ uses Vue/React + Vite):
Dependencies:
Pinker (build cache):
Ship to production
Build a .pinx package for installation on a full Pinoox platform (Manager → Applications):
pinx build applies sensible defaults (excludes platform/, storage/, vendor/, bin/, .env, dev tooling). Composer require-dev and pinoox/pincore are never bundled — the host platform already has pincore. Override in app.php only when needed:
App detection
Pinx walks up from the current working directory until it finds a valid single-app project:
app.phpexists and returns an array with a non-emptypackagekeypinoox/pincoreis required incomposer.json, orvendor/pinoox/pincore/ a localpincore/clone is present
Override the detected package with environment variables:
| Variable | Purpose |
|---|---|
PINX_PACKAGE |
Force CLI target package |
PINOOX_DEV_APP |
Alias for PINX_PACKAGE |
PINX_DEV=1 |
Dev mode (set automatically by pinx when delegating to pincore) |
PINOOX_JS_PACKAGE_MANAGER |
Frontend package manager override (npm, bun, pnpm, yarn) |
The package can also be resolved from platform/apps.config.php when the app is registered with path ~.
pinx list — grouped commands
Run pinx list for a sectioned overview. Shorthand aliases appear in brackets. Filter by prefix or use --short for names only.
Examples:
Command reference
Project
| Command | Aliases | Description |
|---|---|---|
new |
— | Scaffold from pinoox/app (wizard or flags) |
init |
— | Initialize the current directory (--force to overwrite) |
setup |
— | Full setup: deps, migrate, seed, patch (--db-only, --skip-*, --yes) |
doctor |
dr |
Health check — --json, --skip-db, --skip-frontend |
info |
inf |
Show metadata from app.php |
Development
| Command | Description |
|---|---|
dev |
Dev server; Vite when frontend.stack is vue/react |
Database
| Command | Aliases | Description |
|---|---|---|
migrate:run |
migrate |
Run app migrations (--platform, --reset, --fresh, --refresh) |
migrate:status |
migrate:st |
Migration status |
migrate:rollback |
migrate:rb |
Rollback batches (--step, --all, --ignore-fk) |
migrate:reset |
migrate:rs |
Rollback all batches via down() |
migrate:drop |
migrate:dp |
Drop app tables and clear migration history |
migrate:fresh |
migrate:fr |
Drop tables then re-run all migrations |
migrate:create <name> |
migrate:cr |
Create migration file (--create, --table) |
migrate:platform |
migrate:pl |
Platform migrations only |
seeder:run |
seed |
Run seeders (-c class) |
db:list |
databases |
List platform and app connections (--test, --json) |
db:show [target] |
database:show |
Show connection details |
db:test [target] |
database:test |
Test connectivity (or ad-hoc --host, --database, …) |
db:create [target] |
database:create, make:db |
Configure platform or app DB (--set, --driver, …) |
db:update [target] |
database:update |
Update connection settings |
db:prefix [package] [prefix] |
database:prefix |
Change app table prefix (--use) |
Patches
| Command | Aliases | Description |
|---|---|---|
patch:run |
patch |
Run pending patches |
patch:status |
patch:st |
Patch status |
patch:rollback |
patch:rb |
Rollback latest / named patch (--step, --all) |
patch:reset |
patch:rs |
Rollback all rollbackable patches (--clear) |
patch:create <name> |
patch:cr |
Create a patch file |
Users
| Command | Aliases | Description |
|---|---|---|
user:create |
make:user |
Create a user (--username, --password, --email, --role) |
user:list |
users |
List users (--status, --json) |
user:show |
— | Show one user (wizard; id/username/email/mobile/personal_id) |
user:update |
— | Update profile fields (wizard) |
user:status |
— | Set status (active, inactive, suspend, pending) |
user:password |
user:passwd |
Admin password reset (wizard; --revoke-sessions) |
user:delete |
— | Delete user (wizard; --force) |
user:role |
user:role:assign |
Attach or sync roles (--role, --sync, --list) |
Roles & permissions
| Command | Aliases | Description |
|---|---|---|
role:list |
roles |
List roles (--json) |
role:create |
make:role |
Create role (--key, --name, --description) |
role:show <role> |
— | Show role (--permissions, --json) |
role:update <role> |
— | Update role fields |
role:delete <role> |
— | Delete role (--force) |
role:permission <role> |
role:permissions |
Attach/detach permissions (--attach, --detach, --sync) |
permission:list |
permissions |
List permissions (--json) |
permission:create |
make:permission |
Create permission |
permission:show <permission> |
— | Show permission (--roles, --json) |
permission:delete <permission> |
— | Delete permission (--force) |
Tokens
| Command | Aliases | Description |
|---|---|---|
token:list |
tokens |
List session tokens (--json) |
token:show <token> |
— | Show token (--reveal, --json) |
token:create |
make:token |
Create token (--user, --name, --lifetime, …) |
token:update <token> |
— | Update token metadata or lifetime |
token:delete <token> |
token:remove |
Delete token (--force) |
token:revoke-user <user> |
token:revoke |
Revoke all tokens for a user |
token:purge |
token:cleanup |
Delete expired tokens (--force, --json) |
Files
| Command | Aliases | Description |
|---|---|---|
file:list |
files |
List uploads (--group, --json) |
file:show <file> |
— | Show file metadata |
file:update <file> |
— | Update metadata or access |
file:delete <file> |
file:remove |
Delete record and/or storage (--db-only, --storage-only, --force) |
file:purge |
file:cleanup |
Bulk delete by group or age (--group, --older-than, --force) |
Pinion (resumable uploads)
Forwarded to php pinoox pinion:* — temp chunked upload sessions under storage/pinion.
| Command | Description |
|---|---|
pinion:list |
List sessions (--status, --json) |
pinion:info <upload_id> |
Session detail |
pinion:clean |
Remove expired sessions (--abort=<id>) |
Build & release
| Command | Aliases | Description |
|---|---|---|
build |
bld |
Build .pinx package |
release |
rel |
Version bump + build (--bump, --sign) |
pinroll:init |
— | Scaffold Pinroll overlay |
connect |
pinroll:connect |
Connect host / PinGate |
kit |
pinroll:kit |
PinGate zip for File Manager |
pinroll:check |
deploy:check |
Verify host + PinGate |
pinroll:sync |
pinroll:push:path |
Zip a local folder and sync to host |
deploy |
pinroll:deploy |
Build this app’s .pinx, upload, install/update |
provision |
pinroll:provision |
Blank-host platform install |
Scaffolding
| Command | Aliases | Description |
|---|---|---|
make <type> <name> |
mk |
controller, model, migration, patch, portal, form-request, seeder, test |
Routes
| Command | Description |
|---|---|
route:actions / routes |
List named actions (--validate, --json) |
Dependencies
| Command | Aliases | Description |
|---|---|---|
deps:status |
deps:st |
Composer + npm status |
deps:install |
deps:i |
Install dependencies |
deps:update |
deps:up |
Update dependencies |
Legacy umbrella commands deps and dep still accept status, install, update as the first argument.
Frontend
| Command | Aliases | Description |
|---|---|---|
fe:info |
fe:inf |
Theme stack and npm scripts |
fe:install |
fe:i |
npm install |
fe:build |
fe:b |
Production build |
fe:dev |
fe:d |
Vite dev server |
fe:scaffold |
fe:sc |
Starter files (--stack=vue\|react\|twig) |
Legacy frontend / fe accept info, install, build, dev, scaffold as the first argument.
Schedule
| Command | Aliases | Description |
|---|---|---|
schedule:list |
sched:ls |
List cron tasks from schedule.php |
schedule:run |
sched:run |
Run due tasks (--dry-run) |
Pinker
| Command | Aliases | Description |
|---|---|---|
pinker:status |
pinker:st |
Cache vs source |
pinker:rebuild |
pinker:rb |
Rebuild cache |
pinker:diff |
pinker:df |
Show differences |
pinker:clear |
pinker:cl |
Clear cache |
pinker:overrides |
pinker:ov |
List overrides |
Quality & docs
| Command | Description |
|---|---|
test / pest |
Run app tests (--unit, --feature) |
api:docs |
REST API documentation |
graphql:docs |
GraphQL schema documentation |
Meta
| Command | Aliases | Description |
|---|---|---|
list |
— | Grouped command overview |
version |
ver |
CLI version, install mode, and Packagist update check |
pinx doctor in depth
Doctor runs a structured diagnostic and suggests fix commands when something fails:
| Group | Checks |
|---|---|
| Project | app.php, package identity, platform/ layout |
| Runtime | PHP version (≥ 8.2), extensions, writable paths |
| Dependencies | Composer vendor, optional Node/npm |
| Environment | .env presence and key variables |
| Database | Connection (skippable with --skip-db) |
| Frontend | Theme stack, package.json (skippable with --skip-frontend) |
| Build | Export readiness, icon, version fields |
Monorepo development
When working inside the pinoox/pinoox repository, pinx new resolves the template from packages/app automatically.
After composer install on a platform checkout, apply the pincore overlay for DevApp and improved pinx:build:
Requirements
- PHP ≥ 8.2 with extensions required by
pinoox/pincore - Composer 2.x
- Node.js + npm — only when using Vite/Vue/React frontends
- Database - DevDB for local development by default; MySQL/MariaDB/PostgreSQL/SQLite when configured in
.env
Deploy (Pinroll)
Requires pinoox/pinroll in the project (composer require --dev pinoox/pinroll).
Default pinx deploy ships only this app’s .pinx (install or update apps/{package}/ on the host). It does not upload the whole project.
See Deploy a Pinx app and the Pinroll guide.
Related packages
| Package | Role |
|---|---|
pinoox/app |
composer create-project template — root app layout |
pinoox/pincore |
HMVC framework (migrations, routing, CLI engine) |
Publish targets: composer global require pinoox/pinx-cli · composer create-project pinoox/app · enable Template repository on github.com/pinoox/app.
License
MIT — see composer.json.