docs: update gateway docs for the split-gateway architecture - #508
docs: update gateway docs for the split-gateway architecture#508atemate wants to merge 1 commit into
Conversation
The gateway was rearchitected from a single binary with api/mesh modes and mandatory PostgreSQL into split containers (mesh-api + mcp-adapter + a2a-adapter + state-proxy-mesh), all from the one asya-gateway image. State is now pluggable via stateProxy.mesh.backend (pg-kv or pvc-kv), so PostgreSQL is optional. Reconcile the broader gateway-architecture docs with that reality: - core-gateway.md: api/mesh modes -> split containers; PostgreSQL -> pg-kv OR pvc-kv; correct service names/ports, endpoints (/api/v1/mesh/...), and the state-ownership diagram; drop removed OAuth 2.1 / /tools/call content. - env-vars.md: replace the stale single-binary asya-gateway section with a pointer to the per-binary sections; add ASYA_BACKSTOP_INTERVAL and a pvc-kv state-proxy section. - http-gateway.md: two deployment modes -> split containers; pluggable state. - credentials.md: gateway DB secret model (pg-kv DB_PASSWORD, no DSN/init container; pvc-kv needs none); a2a.auth.apiKey. - guide-pause-resume.md: task-status URL -> mesh-api service + /api/v1/mesh. - start-gcp-gke.md: split gateway install (pvc-kv and pg-kv options), database.* values, Ingress instead of LoadBalancer, asya-gateway-mcp/-a2a services, drop OAuth claim, /a2a/hello -> /a2a/. Independent of #507 (flow registration); flow-registration content is left to that PR and cross-linked to guide-gateway.md. Signed-off-by: Artem Yushkovskiy <7501517+atemate@users.noreply.github.com>
Up to standards ✅🟢 Issues
|
There was a problem hiding this comment.
Code Review
This pull request refactors the asya-gateway architecture, splitting it from a single binary into separate containers (mesh-api, mcp-adapter, a2a-adapter, and state-proxy-mesh sidecar) within a single pod. It also introduces pluggable state backends, adding a lightweight pvc-kv option that eliminates the mandatory PostgreSQL requirement. The documentation, environment variables, and setup guides have been updated to reflect this split. Feedback on the changes suggests correcting outdated references to asya-gateway in the transport environment variables documentation, which should instead point to asya-sidecar.
Note: Security Review has been skipped due to the limited scope of the PR.
| | `ASYA_STATEPROXY_SOCKET` | Unix socket path to pg-kv | _(required)_ | | ||
| | `ASYA_STATEPROXY_SOCKET` | Unix socket path to the state-proxy (pg-kv or pvc-kv) | _(required)_ | | ||
| | `ASYA_INTERNAL_URL` | URL sidecars use for callbacks (stamped as `x-asya-gateway-url`) | _(required)_ | | ||
| | `ASYA_QUEUE_TRANSPORT` | Queue backend: `rabbitmq`, `sqs`, or `pubsub` | _(required)_ | |
There was a problem hiding this comment.
The heading ### Transport (same as gateway) and the description on lines 158-161 still reference asya-gateway. However, the asya-gateway transport environment variables section has been removed in this PR. Please update this section to reference asya-sidecar instead (e.g., ### Transport (same as sidecar) and Uses the same queue transport env vars as asya-sidecar...).
What
Reconciles the broader gateway-architecture documentation with the current
split-gateway reality. The gateway was rearchitected from a single binary
with
api/meshmodes and mandatory PostgreSQL into split containers — all fromthe one
asya-gatewayimage, selected viacommand::mesh-api(default entrypoint, ports 8080 external / 8081 internal)mcp-adapter(./mcp-adapter, :8082)a2a-adapter(./a2a-adapter, :8083)state-proxy-meshsidecar for task/mesh stateState is pluggable via
stateProxy.mesh.backend:pg-kv(PostgreSQL, default) orpvc-kv(DuckDB-over-JSON on a PVC / in-memory) — PostgreSQL is no longermandatory.
ASYA_GATEWAY_MODEand the oldasya-gateway-api/asya-gateway-meshmode-based deployments/services are gone; services are now
asya-gateway-mesh-api(8080),
-mesh-api-int(8081),-mcp(8082),-a2a(8083).Independent of #507
This PR is independent of #507 (flow-registration mechanism). It does not
touch
docs/setup/guide-gateway.mdordocs/usage/guide-agentic-patterns.md—those are owned by #507. Where these docs reference flow registration, they
cross-link to
guide-gateway.mdrather than re-documenting it.Files updated
docs/reference/components/core-gateway.md— biggest edit: api/mesh modes →split containers; PostgreSQL →
pg-kvORpvc-kv; corrected servicenames/ports, endpoints (
/api/v1/mesh/...), state-ownership diagram, andauth (A2A only; MCP auth / OAuth 2.1 /
/tools/callremoved in code).docs/reference/env-vars.md— replaced the stale single-binaryasya-gatewaysection (removed
ASYA_GATEWAY_MODE,ASYA_DATABASE_URL,ASYA_GATEWAY_PORT,ASYA_CONFIG_*, DB-pool vars, MCP OAuth vars) with a pointer to the per-binarysections; added
ASYA_BACKSTOP_INTERVALand apvc-kvstate-proxy section.docs/concepts/http-gateway.md— two deployment modes → split containers;pluggable state backend.
docs/reference/credentials.md— gateway DB secret model corrected (pg-kv readsDB_PASSWORDviadatabase.existingSecret; no DSN secret / init container;pvc-kv needs none);
a2a.auth.apiKey.docs/setup/guide-pause-resume.md— task-status URL →asya-gateway-mesh-apiservice +
/api/v1/mesh/<id>path.docs/setup/start-gcp-gke.md— split-gateway install withpvc-kv(no-Postgres)and
pg-kvoptions,database.*values, Ingress instead of LoadBalancer,asya-gateway-mcp/-a2aservices, dropped OAuth claim,/a2a/hello→/a2a/,removed stale
sidecar.gatewayURLflag.Key corrections
command:-selected)pvc-kvasya-gateway-mesh-api[-int],-mcp,-a2a)/tools/call,/mesh/config-reload, MCP auth wiringVerification
current chart (
deploy/helm-charts/asya-gateway/), the e2e profiles(
sqs-s3-pvc.yaml,pubsub-gcs-pg.yaml), and the gateway source(
src/asya-gateway/cmd/{mesh-api,mcp-adapter,a2a-adapter}).Intentionally left stale (out of scope)
docs/reference/specs/gateway-api.md— still lists/tools/call,/oauth/*,/mesh/config-reload,/stream/{id}, "two deployments". It did not matchthe staleness grep and is a large spec deserving its own follow-up.
src/asya-gateway/README.md— source README (not underdocs/), stilldescribes the single binary.