Platform Troubleshooting
This page covers the most common itera.yml configuration mistakes for the platform integration.
Itera is ignoring my config file
Check these first:
- The file must live at the repository root.
itera.yamlwins overitera.ymlwhen both files exist.- The top-level YAML value must be a mapping.
If you expected a nested apps/web/itera.yml file to work, move that config to the repository root and set project.root: apps/web instead.
commands.install.run or commands.install.script fails
This is expected current behavior. Install command text is managed by Itera.
Use these levers instead:
project.packageManagerto pin the package manager when auto-detection is ambiguouscommands.install.cwdto choose where the managed install command runs
If an older draft told you to set commands.install.script: auto, remove that key entirely. The current parser rejects any non-empty install script value.
If you need a workspace-root install for a nested app, the usual fix is:
commands:
install:
cwd: repo_rootStrict mode is failing on missing commands
defaults.onMissing: strict disables fallback behavior when Itera cannot resolve required commands.
Typical fixes:
- add an explicit
commands.dev.script - add explicit
quality.lint,quality.typecheck, andquality.formatentries when your script names are non-standard - set
project.packageManagerexplicitly instead of relying on auto-detection - keep
infer_then_fallbackif you want Itera to continue using built-in defaults
Strict mode does not let you bypass the managed install-command rules.
A command is running from the wrong directory
Use cwd deliberately:
repo_rootfor workspace-root commandsproject_rootfor app-local commands- a repo-relative path when neither constant is specific enough
Also check that:
- the directory already exists
- the path stays inside the repository
- you are not assuming
project.rootautomatically moves install to the workspace root
If you set project.root: apps/web and still need a root-level install, add commands.install.cwd: repo_root.
My readyUrl is rejected
commands.dev.readyUrl must be a local HTTP readiness probe.
Valid examples:
http://127.0.0.1:3000/http://localhost:4000/health
Invalid examples:
https://localhost:3000/http://example.com/healthhttp://user:pass@127.0.0.1:3000/
If you omit the field, Itera uses http://127.0.0.1:3000/ with a 120 second timeout.
Explicit run is rejected as unsafe
Iteration Service only accepts explicit run commands that stay within package-manager script execution.
Usually valid:
npm run devpnpm --filter web type-checkyarn workspace client run lintbun run test
Usually invalid:
python -c "print('hello')"- multiline shell commands
- package-manager commands that are really install or exec operations instead of script execution
If you can express the command as a package script name, prefer script over run.
Product Agent did not use my dev or install settings
That is expected. Product Agent currently consumes a narrower policy subset than the full Iteration Service runtime contract.
What Product Agent cares about most:
project.packageManagerdefaults.onMissingcommands.quality.*- request
execution_policy.project_root - request
execution_policy.strict_mode - request
execution_policy.allowed_commands
What Iteration Service cares about:
commands.installcommands.devreadyUrlreadyTimeoutSeconds
If the issue is in Product Agent execution policy, focus on the quality entries and request policy fields first. For everything else, check the itera.yml reference.