Skip to content

chore: bind CI server to 0.0.0.0:8100 for container bridge access#8

Merged
bkrabach merged 1 commit into
mainfrom
stage-0-bind-0.0.0.0
May 26, 2026
Merged

chore: bind CI server to 0.0.0.0:8100 for container bridge access#8
bkrabach merged 1 commit into
mainfrom
stage-0-bind-0.0.0.0

Conversation

@bkrabach

Copy link
Copy Markdown
Collaborator

Summary

The CI server example configuration previously advertised server_host: 127.0.0.1, which is reachable from the host's loopback but not from container bridges. This prevented Docker worker containers and Incus DTU containers from dispatching events to the server, even when the AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env var was correctly set.

What changed

  • server-config.example.yaml: Change server_host from 127.0.0.1 to 0.0.0.0; expand comment to explain why 0.0.0.0 is required for container bridge access and document the security trade-off.
  • README.md: Update inline YAML example in the 'Running Without Docker' section to show server_host: 0.0.0.0 with inline comment; add 'Network Access and Security' section explaining 0.0.0.0 binding behaviour and guidance for operators deploying in non-isolated environments.

Note on code.py default

config.py already defaults to server_host = "0.0.0.0". The example config and README were the only places advertising 127.0.0.1.

Bind to 0.0.0.0 makes the server reachable from:

  • Host loopback (unchanged)
  • Host's LAN IP (now)
  • Docker container bridge (now)
  • Incus container bridge (now)

Tests

1174 passed, 1 pre-existing failure (test_first_run_credentials_yaml_has_expected_keysbolt:// vs neo4j:// URL scheme mismatch, not related to this change; confirmed failing on main before this PR).

Stage 0 of multi-stage rollout

This is Stage 0 of making CI dispatch work across the entire Resolve stack (host-direct AND in-DTU scenarios). Stages 1–3 will wire up ambient context intelligence in the Resolve session factory, orchestrator, and bundle documentation.

The CI server previously bound to 127.0.0.1:8100, which is reachable from
the host's loopback but not from container bridges. This prevented Docker
worker containers and Incus DTU containers from dispatching events to the
server, even when the AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env var
was correctly set.

Bind to 0.0.0.0:8100 makes the server reachable from:
- Host loopback (unchanged)
- Host's LAN IP (now)
- Docker container bridge (now)
- Incus container bridge (now)

Changes:
- server-config.example.yaml: change server_host default from 127.0.0.1 to
  0.0.0.0; expand comment to explain why 0.0.0.0 is required for container
  bridge access and when 127.0.0.1 is appropriate.
- README.md: update inline YAML example in 'Running Without Docker' section
  to show server_host: 0.0.0.0 with inline comment; add 'Network Access and
  Security' section explaining 0.0.0.0 binding behaviour and guidance for
  operators deploying in non-isolated environments.

Note: config.py already defaults to server_host=0.0.0.0 (correct). The
example config and README were the only places advertising 127.0.0.1.

This is Stage 0 of a multi-stage rollout that makes CI dispatch work
across the Resolve stack (host-direct AND in-DTU scenarios).

Security note: 0.0.0.0 binding exposes the server on all interfaces.
Operators deploying beyond a single-user dev box should firewall port 8100.
README.md updated with this guidance.
@bkrabach bkrabach merged commit 568081d into main May 26, 2026
1 of 2 checks passed
@bkrabach bkrabach deleted the stage-0-bind-0.0.0.0 branch May 26, 2026 23:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant