iop/apps/edge
toki 417c54c016 fix(openai): 내부 Responses stream 결속을 맞춘다
buffered Chat-to-Responses body와 tunnel metadata가 서로 다른 stream 값을 가지면 provider 종료 뒤에도 selector terminal이 수렴하지 않는다. 내부 wire를 일관된 non-stream으로 고정한다.
2026-08-15 05:59:21 +09:00
..
cmd/edge chore: 테스트 임시 산출물을 정리한다 2026-08-06 20:01:57 +09:00
internal fix(openai): 내부 Responses stream 결속을 맞춘다 2026-08-15 05:59:21 +09:00
Dockerfile feat(edge): envsubst 템플릿 기반으로 설정을 전환한다 2026-06-02 18:06:44 +09:00
README.md fix(transport): 터널 지연에 맞춰 heartbeat 경계를 보강한다 2026-08-02 22:30:25 +09:00

IOP Edge

IOP Edge owns Node registration, dispatch readiness, provider-pool routing, queue admission, leases, reconnect fencing, external inference surfaces, and Control Plane operations.

Provider boundary

  • Public model ids resolve to provider adapter/target routes.
  • Normalized inference uses ordered run events; OpenAI-compatible passthrough uses provider tunnel frames.
  • session_id is correlation only and never resumes local execution state.
  • Cancellation targets an active run id.
  • Edge operations are health.check, node.status, and provider.command.
  • Provider commands are limited to capabilities, transport status, and the Ollama API tunnel.
  • Caller metadata remains an ordinary bounded string map.
  • Edge and Node use a shared tunnel-tolerant liveness profile: a 30-second heartbeat interval and a 45-second response wait. Long provider prefill or streamed-response backpressure does not prematurely fence a healthy connection; a real timeout still closes only the current generation and triggers Node reconnect.

Edge and Node preserve standard OpenAI/Anthropic-compatible inference, streaming, tools, usage, provider lifecycle, capacity, queues, and reconnect behavior. They do not own interactive host programs, persistent conversations, terminal emulation, arbitrary host commands, or local filesystem execution context.

Development

go test -count=1 ./apps/edge/...
go test -race -count=1 ./apps/edge/internal/service ./apps/edge/internal/openai
make test-e2e

Canonical contracts:

  • agent-contract/outer/openai-compatible-api.md
  • agent-contract/outer/anthropic-compatible-api.md
  • agent-contract/inner/edge-node-runtime-wire.md
  • agent-contract/inner/control-plane-edge-wire.md