Skill 51 · Azure Logic Apps Standard CLI
Subchapter 51.3
references/local-runtime.mdMarkdown8 KBView on GitHub
Mandatory before dependency installation/checks, runtime doctor, or host lifecycle work.
Baseline: logicapp 1.0.0b1. Read SKILL.md rules first. Use the actual project root, OS,
shell, available port, and ownership evidence; and 7071 are example coordinates.
AppInspect existing configuration, settings references, listeners, and runtime ownership before starting or repairing anything. Do not print secret values. Running a local host can activate polling/event triggers and invoke real services using local credentials. Establish authorized effects and appropriate non-production resources before startup; “local” does not mean isolated. Do not install dependencies or start services as a side effect of read-only inspection.
For a destination that does not exist, a general dependency check may identify tooling.
Once the project exists, use the project-aware form:
az logicapp dependency check --path AppInspect Core Tools, Node.js, bundle, .NET, and Azurite findings. The project-aware check resolves configured storage and whether Azurite is required; not every tool is needed for every operation. A local SDK test has different prerequisites from a live host.
For an existing project, diagnose before runtime repair:
az logicapp runtime doctor --path App --port 7071 --output jsonDoctor is read-only: it does not install, download, repair, start/stop services, decrypt settings, or contact cloud storage. It uses bounded loopback probes and local project/tool/ cache/ownership evidence. A stopped host is an optional skipped probe, not an offline failure.
| Doctor exit | Meaning and required response |
|---|---|
| 0 | No required blockers/unknowns; not business correctness or universal compatibility |
| 1 | Required failure; inspect and resolve the actual finding |
| 2 | Required unknown, or optional problem under --strict; preserve diagnostic uncertainty |
Exact tool/bundle compatibility remains a required unknown in this baseline; a responsive
project can exit 2. Do not reinstall merely because compatibility is unknown or convert
the result into certified health. Preserve structured stdout on nonzero exits.
Use a local --context instead of path/port if appropriate; explicit context cannot be
combined with --path or --port. Doctor does not take --local.
Install only the kinds reported missing and required for the requested operation:
az logicapp dependency install --kind core-tools --yes
az logicapp dependency install --kind node --yes
az logicapp dependency install --kind azurite --yes
az logicapp dependency install --kind bundle --yesThese are alternatives, not a command sequence to run unconditionally. Repeat --kind for
multiple required kinds. Omitting --kind installs all installable kinds and is not the
default procedure. --yes is appropriate only after installation is authorized.
Check each exit and rerun the project-aware check after the selected installation.
Constraints:
~/.azurelogicapps/dependencies, shared with VS Code
tooling; LA_DEPENDENCIES_PATH or supported target flags can override it.--kind azurite --source-url REGISTRY_URL for an authorized mirror.--source-url requires exactly one kind. Custom sources do not receive the same
publisher-checksum verification; establish trust independently. Never disable TLS.--version pins one selected kind when required. Do not upgrade working tools merely
because a newer version exists.dependency uninstall removes only recorded CLI-owned dependencies using
.logicapps-integrity.json. Inspect shared use and obtain removal authorization first.Gate: Every dependency required for this task is available, or its concrete blocker is reported. An unknown compatibility finding is not a missing-package finding.
Choose a port after inspecting existing listeners. Do not stop another process to free it. Reuse a suitable existing host only after confirming its project and permitted effects.
az logicapp runtime start --path App --port 7071 --background --ready-timeout 90
az logicapp runtime show --port 7071Require running state and readiness.managementEndpointReachable: true.
An open port or recorded process alone is insufficient. If starting/failed/unready, inspect
the reported logPath, then rerun doctor as appropriate. Do not invoke workflows until ready.
Logs can contain sensitive payloads; inspect locally and sanitize before sharing.
When AzureWebJobsStorage resolves to UseDevelopmentStorage=true, startup manages Azurite
on ports 10000-10002 and reuses an existing emulator. Real storage configuration does not
start Azurite. Use --no-azurite only when another authorized process owns its lifecycle.
Do not manually author emulator/runtime state directories.
Inspect the returned dependency record:
| Azurite state | Required response |
|---|---|
started | Record CLI ownership and dependent host |
already-running | Inspect startedByCli; do not infer ownership from the port |
port-conflict | Identify the non-Azurite listener; stop startup, not the unrelated process |
missing | Authorize/install the required Azurite dependency |
not-started | Inspect storage configuration without exposing its values |
failed | Inspect the dependency’s reported logPath |
skipped | Confirm intentional externally managed emulator lifecycle |
Local runtime lifecycle honors saved local context ports where applicable; explicit path/port
coordinates are safer for automation. Do not add API-only --local to lifecycle commands.
These commands do not manage cloud host startup/shutdown.
Gate: Correct owned/reused host, actual management readiness, permitted trigger effects, and understood dependency ownership.
Collect required run/action evidence while the host is reachable using the mandatory live
operations procedure selected from SKILL.md. Console output alone is not a workflow
business diagnosis. If no run exists or Stateless history is unavailable, report that fact
and use supported response/telemetry evidence; do not invent a failed action.
After required validation, discovery, execution, and diagnosis are finished:
az logicapp runtime stop --port 7071
az logicapp runtime show --port 7071Confirm the task-owned host is stopped and its listener is closed using OS-appropriate process/listener inspection. If a new listener has reused the port, identify it without terminating it. Do not declare the original host alive solely from a reused port.
Stop only runtimes started for this task, unless explicit shutdown of another host is authorized. If asked to leave a host running, verify responsiveness and report project, port, and lifecycle ownership instead of stopping it.
When Azurite was started by the CLI, it is retained while any CLI-started foreground or background host depends on it. Only after the last dependent host stops should its 10000-10002 listeners close. Never stop an emulator the CLI did not start.
CLI process ownership uses PID and creation identity. Unknown/recycled identities and unresolved descendants must not be signalled. If cleanup remains pending, retain ownership records and inspect the exact reported processes. Use an explicitly authorized, identity- verified PID only; never kill by executable name or delete records to bypass a guard. Use supported stop retries only after reviewing ownership evidence.
Gate: All task-owned processes are verified stopped, or explicit retention/cleanup blockers are reported. Shared and unrelated services remain intact.