fix: resolve 6 installation bugs breaking fresh setup#95
Conversation
- Update zod from ^3.23.0 to ^4.0.0 (claude-agent-sdk peer dep conflict) - Mount iii-config.yaml in docker-compose.yml (missing /app/config.yaml) - Change host binding from 127.0.0.1 to 0.0.0.0 for Docker compatibility - Switch npm start from index.mjs to cli.mjs (auto-starts iii-engine) - Fix CLI health check to detect engine via any HTTP response, not just worker route - Handle EADDRINUSE on viewer port gracefully instead of crashing - Fix README step numbering and version in health example
📝 WalkthroughWalkthroughThis PR updates deployment configuration and application entry points. Changes include shifting network listeners to 0.0.0.0, introducing a config file bind mount in Docker, modifying the start script entrypoint, updating the health probe endpoint, adding HTTP server error handling, and bumping documentation version and dependencies. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
iii-config.yaml (1)
13-37:⚠️ Potential issue | 🟠 Major
0.0.0.0binding broadens external exposure by default.With Docker-published ports, exposing both REST and stream modules on all interfaces makes them reachable beyond localhost unless deployment constraints are added. Please pair this with host-side loopback port publishing (or strict auth defaults) to avoid accidental network exposure.
🔧 Suggested hardening (in
docker-compose.yml)services: iii-engine: ports: - - "3111:3111" - - "3112:3112" + - "127.0.0.1:3111:3111" + - "127.0.0.1:3112:3112"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@iii-config.yaml` around lines 13 - 37, The config currently binds services to 0.0.0.0 (global host entry and the StreamModule's host) which exposes REST and stream ports externally; change those host values to 127.0.0.1 (or another internal-only interface) for the global host key and the StreamModule host config, or alternatively ensure your deployment (docker-compose) uses loopback-only port publishing and strict auth—locate the global "host" key and the "class: modules::stream::StreamModule" block (the StreamModule's "host" and "port" settings) and update them to restrict binding to localhost or document the required Docker publish behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@iii-config.yaml`:
- Around line 13-37: The config currently binds services to 0.0.0.0 (global host
entry and the StreamModule's host) which exposes REST and stream ports
externally; change those host values to 127.0.0.1 (or another internal-only
interface) for the global host key and the StreamModule host config, or
alternatively ensure your deployment (docker-compose) uses loopback-only port
publishing and strict auth—locate the global "host" key and the "class:
modules::stream::StreamModule" block (the StreamModule's "host" and "port"
settings) and update them to restrict binding to localhost or document the
required Docker publish behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: ec1de863-f31b-425f-9460-e86d6a1a6a57
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (6)
README.mddocker-compose.ymliii-config.yamlpackage.jsonsrc/cli.tssrc/viewer/server.ts
Summary
Fresh
npm installand Docker-based installs were completely broken. Reported by Vinuja who hit all 3 failure modes.@anthropic-ai/claude-agent-sdk@0.2.56requireszod@^4.0.0but we had^3.23.0—npm installfails with ERESOLVEdocker-compose.ymldidn't mountiii-config.yamlinto the container — iii-engine crashes with "Config file not found: /app/config.yaml"host: 127.0.0.1in iii-config.yaml only listens on container loopback — Docker port mapping can't reach the enginenpm startinfinite loop: ranindex.mjsdirectly (no engine auto-start) — users get endless WebSocket reconnection errors/agentmemory/livezwhich requires a registered worker — returns 404 even when engine is running, so CLI thinks engine is downAlso fixes README step numbering (was 1,2,4) and outdated version in health example.
Test plan
npm installresolves cleanly (no ERESOLVE)npm run buildsucceedsnpm startdetects running iii-engine and starts worker/agentmemory/healthreturns healthy status/agentmemory/livezreturns okdocker compose upstarts iii-engine with config (needs Docker environment)Summary by CodeRabbit
Documentation
Configuration
Chores