Troubleshooting#
Start with the command that failed and its original output. Then inspect the saved and live state from your Mac:
limanix --version
limanix list
limanix list --json
list does not repair or restart a VM.
Keep the VM name, both status fields, and the error text together when investigating a failure.
Creation fails before the VM starts#
Diagnostic |
What to do |
|---|---|
|
Pass the file explicitly: |
Invalid TOML, unsupported schema, or unknown field |
Fix the field identified in the error. See Configuration. |
A host mount directory cannot be found |
Create the intended source directory or correct its path. Relative sources are resolved against the TOML file's directory. |
|
Choose a host directory your normal Mac account can write to. |
|
Run |
|
Inspect |
A module cannot be found |
Compare the selection with |
|
Use a shorter VM name or a shorter Lima storage root. Changing a root does not relocate existing instances. |
first-config writes an editable example, including example mount paths.
Check those paths before creating the VM.
Do not run first-config over a configuration you need to preserve: it overwrites an existing file.
For macOS version, native binary, SSH, QEMU, or shared-network setup errors, return to Installation and Networking.
Running appears, but the shell fails#
Running is the backend power state.
It does not confirm that a NixOS rebuild finished or that the development account is accessible.
Check
STATEand the diagnostic below that VM inlimanix list.If
createorupdateis still running, let it finish.If the VM is stopped, run
limanix start NAME.Check guest access with
limanix shell NAME -- true.
Replace NAME with the VM's actual name.
If access still fails, keep the SSH or guest error rather than treating the power state as success.
After a failed configuration operation, follow the next section.
Create or update failed during provisioning#
A failed operation may leave a valid VM and managed home for recovery. It does not necessarily leave the guest exactly as it was before the command.
Failure point |
What may have happened |
|---|---|
Input validation or preparation |
Guest application has not started. A rejected update can leave the previous operation state unchanged. |
Stopping or editing the backend |
The VM may already be stopped or have new Lima settings. |
NixOS evaluation or build |
New environment files have already been installed. The failed build does not trigger Limanix's post-build restart. |
Restart or development-user check |
The NixOS build may have succeeded, but the complete operation has not been marked ready. |
For a recoverable VM:
Fix the reported problem in the TOML file or module source.
If you changed an imported module, replace its registry copy as described in Modules.
Retry on your Mac, using a file with the same VM name:
limanix update --config limanix.tomlCheck the command result and
limanix listagain.
Retrying create for a name with saved state is rejected.
Use update when the existing backend and records are usable.
If the backend is missing, use the missing-backend path below.
A successful start is not a successful update.
It starts the saved VM without applying your corrected TOML file or resetting an operation error.
An update is rejected#
Diagnostic |
Meaning and next step |
|---|---|
|
These are fixed at creation. Revert that change or create a different VM and migrate the files you need. |
|
Set the requested disk to at least the actual allocated size. A failed earlier update may already have enlarged it. |
|
Limanix cannot validate disk safety. Inspect the backend diagnostic before attempting another update. |
|
Another process holds that VM's operation lock. Let it complete or cancel it from its original terminal. |
The immutable home settings are home.root and user.home.
See Work with a VM for the settings that can change in place.
An operation was interrupted#
An abandoned creating, updating, or deleting record appears as interrupted when no process holds its operation lock.
This is a listing result; the command does not rewrite the saved record or roll back the guest.
After an interrupted create or update, inspect the original output, fix the issue, and retry
updateif the backend exists.After an interrupted deletion, retry the intended
deletecommand. Check whether it included--remove-homebefore repeating it.If the guest rebuild cancellation reports
cannot confirm guest rebuild stopped, do not assume all guest build work has ended. Keep the service name included in that error for investigation.
Limanix uses operating-system file locks, released when their owning process exits.
The presence of a .lock file does not mean an operation is still running.
Do not remove lock files to bypass a live lock.
Waiting for another Limanix network lifecycle operation is different: starts, stops, and deletions sharing the same Lima root serialize their network changes.
The waiting command continues after the other operation releases that lock, or exits if you cancel it.
The backend is missing#
If the diagnostic says lima instance for '…' is missing, first check that you are using the same LIMA_HOME and LIMANIX_HOME values as before.
A changed storage root can make saved records and backend instances appear disconnected.
If the backend was actually removed and you intend to discard its saved Limanix record:
limanix delete dev-box
Deletion handles a missing backend and preserves the managed home by default. It does not reconstruct the missing guest disk. Read Storage and recovery before recreating the VM.
A saved record is corrupt#
Limanix reads VM ownership separately from the mutable operation record.
When instance.json is damaged but identity.json is still valid, listing can still show the backend and home; start, stop, and delete use that identity independently.
update needs a valid operation record and cannot repair arbitrary corrupt JSON.
Deletion is an available cleanup path with valid ownership, but it still destroys the VM disk.
Preserve needed data first.
If identity.json is also unreadable, do not invent an identity or remove its checks: the CLI cannot safely establish which backend and home belong to that record.
Keep useful diagnostics#
The failed command's terminal output is the main source for Nix build and guest command errors. The saved operation error contains a recovery message and state-file path; it does not retain the complete build log.
For backend startup diagnostics, take lima_name from limanix list --json.
That instance's directory is under ~/.lima, or your LIMA_HOME override.
Lima writes host-agent output to ha.stdout.log and ha.stderr.log there.
When reporting a problem, include:
The client version and exact command.
The original error and relevant surrounding output.
The VM's JSON listing and the relevant configuration fields.
The host architecture and whether the failure happened during create, update, start, or shell access.
Review logs and configuration before sharing them: environment values, paths, and guest-produced output can contain private data.