Troubleshooting
Solutions to common issues when running local mode.
Job Format Errors
"job type cannot be empty"
Jobs submitted via CLI must use the wrapper format:
name: my-job
type: pipeline
config:
input: { generate: { interval: 5s, mapping: 'root.hello = "world"' } }
output: { stdout: {} }
❌ Won't work - missing wrapper:
input:
generate: { ... }
"pipeline 'input' component is required" / "pipeline 'output' component is required"
Every job config needs an input and an output. The pipeline section (processors) is optional; add whichever of input or output is missing:
name: my-job
type: pipeline
config:
input: { generate: { interval: 5s, mapping: 'root.hello = "world"' } }
output: { stdout: {} }
Connection Issues
CLI can't connect to the local edge
The CLI reports could not connect to localhost:9010: connection refused when it targets the wrong port. The default is 9010, not 8080.
export EXPANSO_CLI_ENDPOINT=http://localhost:9010
If you started edge with a custom port:
expanso-edge run --local --api-listen :8080
export EXPANSO_CLI_ENDPOINT=http://localhost:8080
Port Already in Use
Error: Error: listen tcp :9010: bind: address already in use
Use a different port:
expanso-edge run --local --api-listen :8080
export EXPANSO_CLI_ENDPOINT=http://localhost:8080
CLI Can't Find Edge
Error: could not connect to localhost:9010: connection refused (with the hint: No orchestrator is reachable at localhost:9010. Ensure one is running.)
- Verify edge is running—look for the "API server starting" message
- Check the port matches your
--api-listensetting - Ensure your firewall allows localhost connections
Job Issues
Job Not Running
-
Check job status:
expanso-cli job listexpanso-cli job describe <job-id> -
Enable debug logging:
expanso-edge run --local --log-level debug
Old Jobs Still Appearing
Clean the state directory:
# Stop edge (Ctrl+C)
rm -rf ./data
expanso-edge run --local
Next Steps
- CLI Commands - Full command reference
- Local Mode Overview - Return to main guide