Skip to main content

config.json

The master config file is C:\laraenv\config.json, a single JSON document the app reads and writes. It holds your enabled services, projects, service tuning, cron jobs, terminal layout, and cloud account.

warning

LaraEnv writes this file. Prefer the UI for any change — editing by hand can corrupt the JSON, and the app may overwrite your changes on the next save. If you must edit it, back it up first.

Top-level keys​

KeyDescription
stack.enabledMap of serviceName → boolean controlling which services are enabled and visible.
projectsProject settings: tld, root, and per-project maps. See below.
servicesnginx, apache, and php tuning objects. See Service tuning.
cronsArray of scheduled jobs. See below.
terminalWorkspaceRaw saved terminal layout (groups, panes, tabs).
cloudSigned-in account details.
commandCenterCommand Center settings.

projects​

  • tld — the local top-level domain, e.g. "test".
  • root — the projects root, e.g. "C:\\laraenv\\www".
  • Per-project maps keyed by project name: phpVersions, nodeVersions, ssl, terminals, proxyPorts, projectTags (array), devCommands, queueArgs, editors.
  • phpVersions and nodeVersions are manual overrides. Automatic detection reads version files and manifests without writing a resolved version into these maps. See Automatic detection.
  • sshHosts — map of name → { address, port, user, authMode, passwordProtected?, keyName?, proxyJump?, proxyCommand?, tags } in LaraEnv 0.5.7. Saved SSH passwords migrate from the legacy password field to a Windows-account-protected envelope; see Trust and saved passwords.
  • deployPresets — map of id → { name, script, variables[] }.

crons​

Each job is an object: { id, name, projectName?, schedule, command, workingDir?, phpVersion?, enabled, backgroundMode?, lastRun?, lastStatus?, ... }.

cloud​

{ baseUrl, token, email, name, plan, githubId } for the signed-in account. See Account.

commandCenter​

{ globalHotkey, enabled }.

Example​

An abridged, representative example:

{
"stack": {
"enabled": { "nginx": true, "mysql": true, "redis": false, "mailpit": true }
},
"projects": {
"tld": "test",
"root": "C:\\laraenv\\www",
"phpVersions": { "myapp": "8.4" },
"nodeVersions": { "myapp": "20" },
"ssl": { "myapp": true },
"projectTags": { "myapp": ["laravel", "api"] },
"sshHosts": {
"prod": {
"address": "203.0.113.10", "port": 22, "user": "deploy",
"authMode": "key", "keyName": "id_ed25519", "tags": ["prod"]
}
},
"deployPresets": {
"default": { "name": "Deploy", "script": "git pull && composer install", "variables": [] }
}
},
"services": {
"nginx": { },
"php": { }
},
"crons": [
{
"id": "sched-1", "name": "Run scheduler", "projectName": "myapp",
"schedule": "* * * * *", "command": "php artisan schedule:run",
"phpVersion": "8.4", "enabled": true
}
],
"cloud": { "baseUrl": "https://...", "email": "you@example.com", "plan": "pro" },
"commandCenter": { "globalHotkey": "Ctrl+Space", "enabled": true }
}

For the meaning of the fields inside services, see Service tuning.