Nexia CLI
Commands, step-by-step input, options, folder scope, authentication, automation and recovery.
Nexia CLI
Use create for projects and Apps, and make for code inside an App. Supplied options skip their questions; missing settings are requested step by step. This is a breaking command change without compatibility aliases. Platform authentication scope, generator data/translation rules, database operations and submission semantics remain unchanged. SSO and profiles are not provided.
Getting started
Requires Node.js 22.12+, npm 11.x, PHP 8.4+ and Composer.
npm install -g @nexia/cli@alpha
nexia setup --devtools
nexia create project my-project
cd my-project
nexia create app people
cd people
composer install --no-scripts
npm install
nexia make resource Note
nexia devTo join an existing project, run nexia connect <project-id> in an empty project folder and approve in the browser. Clone the required Apps as direct child folders, install their dependencies, then run dev. The project folder is distinct from each App repository. Existing AGENTS.md files are preserved.
All commands
Prefix every command below with nexia.
| Command | Purpose |
|---|---|
setup | Prepare environment and generators |
create [project|app] [directory] | Choose and create a project or App |
connect [project-id] | Authenticate and bind the current project folder |
login [project-id] | Authenticate again without changing folder bindings |
logout | Revoke authentication; retain bindings and data |
make [resource|page] [name] | Choose generated code and its name |
dev | Watch and develop the entire project |
check | Inspect App source |
status | Inspect authentication, project, folder and sandbox |
db migrate | Request an App sandbox migration |
db seed [key] | Run this App's declared development data |
db status | Inspect the App database operation |
submit | Submit an existing Git version tag for review |
submit status [id] | Inspect a submission |
submit cancel [id] | Cancel a cancellable submission |
submit retry [id] | Retry a retryable submission |
help [command] | Show command help |
--version | Show the installed CLI version |
Plain nexia displays help. nexia create, nexia make and nexia db begin with task selection. Choose by number or value.
Questions and confirmation
Explicit options are validated and never asked again. Missing settings show descriptions and defaults. Invalid answers repeat that question. Disabling navigation skips menu group, icon and order questions. Additional language labels are requested only when that language is selected.
App, resource and page creation end with a summary of settings and destination, followed by create, edit a setting, or cancel. Ctrl+C or EOF cancels. Generation never runs before confirmation. The existing generator preflight runs first. Resource generation skips existing files and registrations; page generation rejects collisions. Existing source is not overwritten. An OS write failure may still require inspecting changes already reported by the generator.
nexia create app people --vendor acme --family people
nexia make resource LeaveRequest --label-ko '휴가 신청'
nexia make page Summary --label-ko '요약' --no-record --no-navigation
nexia help make resourceApp generation
Questions: folder → code name → package owner → App key → display name → family → table prefix → prerequisites → confirmation.
| Option | Meaning and default |
|---|---|
--name | PHP code name; suggested from the folder name |
--vendor | Composer/npm package owner; required |
--key | Stable App identity; suggested from the code name |
--display-name | Display name; defaults to the code name |
--family | Navigation family; required |
--table-prefix | Database table prefix; suggested from the App key |
--prerequisite | Required App key; repeatable; none by default |
--vendor acme and --key people produce the packages acme/people and @acme/people. Choose stable identifiers before registration. Creating an App does not register or install it. Existing destination folders are rejected even during dry-run.
Resource generation
Questions: App → code name → Korean display/list labels → optional Chinese labels → record ownership → menu visibility → menu settings → confirmation.
| Option | Meaning and default |
|---|---|
--label-ko | Authored Korean label; required |
--label-ko-plural | Korean list label; defaults to the singular label |
--label-zh | Chinese label; omitted labels retain English fallback |
--label-zh-plural | Chinese list label; defaults to the singular label |
--record-owner | legal_entity by default, or tenant |
--navigation / --no-navigation | Menu visibility; shown by default |
--navigation-group | operations by default |
--navigation-subgroup | Optional menu subgroup; none by default |
--icon | box by default |
--sort | auto keeps the generator's next position; accepts a number |
Ownership is distinct from permission. Per-legal-entity ownership does not grant access. English labels derive from code names; omitted Chinese labels retain the existing fallback. Translation generation rules are unchanged; generic --label locale=value is not provided.
Page generation
Questions: App → code name → Korean label → include individual record read/edit screens → menu visibility/group/order → confirmation.
Options are --label-ko, --record / --no-record, --navigation / --no-navigation, --navigation-group and --sort. Record screens and navigation default to enabled, group to operations, and order to 100. A page creates no model, migration or Resource. Implement its business query before use.
Menu groups are insights, management, operations, master-data and settings. Menu detail options cannot accompany --no-navigation. Duplicate options and contradictory booleans are errors. Field/relationship designers and force-overwrite are not provided.
Folder and App selection
Commands also work in App subdirectories by finding the parent App/project. Explicit --app <folder-or-key> wins; otherwise the current or only App is selected. Multiple project Apps trigger a selection question.
| Command | Project root | Inside an App |
|---|---|---|
create app | Create a direct child | Create a sibling in its project |
make, db, submit | Select an App | Current App |
check | All Apps | Current App |
dev | Entire project | Entire project |
connect | Allowed | Instructs you to use the project root |
dev --app people develops one App. The default port is 4310; override with --port. Use --container for container preview access. Project Apps share one port; new Apps join automatically. Duplicate identities and symlink folders are not run.
dev handles registration, sandbox preparation, source synchronization and frontend watching. Source limits are 2000 files, 2 MiB per file and 16 MiB total; secrets, dependencies and symlinks are excluded. Sandbox retention is 100 revisions/512 MiB. Data is never automatically reset. Ctrl+C stops local watching. Remote runtime management stays in Developers; an existing writer lease or pending preparation may prevent a new development writer.
Authentication
login uses the current folder's project or asks for a project ID. Browser approval remains project-scoped, not account-wide. connect authenticates and binds the folder; create project also includes approval. --no-browser prints the approval URL. logout retains folder bindings and data. status reports mismatched authentication and folder scope; Apps are never silently moved between projects.
The official platform is https://developers.nexia.to. Platform developers can set NEXIA_ENDPOINT for login, connect and create project. Re-authentication for an already bound project prefers its saved endpoint. Endpoint changes clear old authentication. Never share or commit .nexia/ or the global CLI credential file.
Environment setup
setup --devtools installs/updates generators in the CLI-owned directory, without changing global Composer. setup asks whether to also install/upgrade Homebrew PHP and Composer on macOS and confirms the plan. Existing runtime versions may change; this redesign does not alter upgrade policy. On Linux/Windows install prerequisites yourself, then use --devtools. --dry-run performs no installation; shell startup files are not automatically edited.
Database and submission
Database commands target only the registered App's active sandbox. db seed selects its declared fixtures, not those of other installed Apps. queued is not completion: inspect db status. Stop dev first if it owns the writer lease. Retry a lost response with the same printed --request-id; review-required operations need operator inspection.
Commit and push source and the intended version tag with Git, then run check and submit --tag v1.0.0. If repository connection is missing, interactive submission guides you to Developers approval. Automated callers must connect it first. The CLI does not commit, tag or push. Submission requests review, not deployment or installation. Use the returned ID to inspect status; cancellation/retry follow server state and authorization. New source requires a new tag.
Automation and recovery
| Option | Meaning |
|---|---|
--no-interactive | No prompts; required missing values or ambiguous targets fail |
--yes | Accept final confirmation; does not supply values, permission or browser approval |
--dry-run | Show the plan for installation/generation commands |
--json | Structured status/DB/submission output; no prompts |
--request-id | UUID for recovering the same DB/submission request |
Non-TTY execution does not prompt. Optional values use documented defaults. Dry-run skips final confirmation because it performs no changes.
nexia make resource Note --app people --label-ko '메모' --no-interactive --yes
nexia submit --app people --tag v1.0.0 --no-interactive --yes --json
nexia submit status <submission-id> --jsonJSON mode writes one result or error.code/error.message to stdout; diagnostics go to stderr. Exit codes are 0 success/acceptance, 1 operation failure, 2 input error, 130 cancellation. Zero does not establish asynchronous job completion.
Recover expired authentication with login from the project. After a lost project-creation response, retry the same folder/name to resume pending approval without creating a different project. Fix source/build errors and restart dev; do not reset data as a repair shortcut.
Migrating old commands
Replace init with create app, create-project with create project, link-project with connect, make:resource/page with make resource/page, validate with check, and submissions with submit. Run in the intended folder or use --app instead of trailing App paths. Replace --without-navigation/record with --no-navigation/record.
Manual registration, sync, runtime, repository and doctor commands, browser templates, DB reset/references, cross-App fixtures, resource catalogs, signature generators, Filament options, Runtime image inspection and local MCP are excluded from the public CLI. Existing platform/SDK/internal implementations are not deleted. Manual one-shot snapshots and MCP through nexia are no longer provided; synchronization remains in dev. Do not assume every excluded command has an equivalent Console action. Existing PHP devtools signature/Filament generators remain available to their callers.
CLI developers can point NEXIA_DEVTOOLS_PATH at an independently installed generator with its Composer dependencies prepared. The executable cannot reside inside the App being generated/checked. Support requests should include sanitized reproduction and versions, never credentials or customer data: Developer Support.