Skip to content

docs: update gateway docs for the split-gateway architecture - #508

Open
atemate wants to merge 1 commit into
mainfrom
docs/gateway-architecture-split-update
Open

docs: update gateway docs for the split-gateway architecture#508
atemate wants to merge 1 commit into
mainfrom
docs/gateway-architecture-split-update

Conversation

@atemate

@atemate atemate commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

What

Reconciles the broader gateway-architecture documentation with the current
split-gateway reality. The gateway was rearchitected from a single binary
with api/mesh modes and mandatory PostgreSQL into split containers — all from
the one asya-gateway image, selected via command::

  • mesh-api (default entrypoint, ports 8080 external / 8081 internal)
  • mcp-adapter (./mcp-adapter, :8082)
  • a2a-adapter (./a2a-adapter, :8083)
  • state-proxy-mesh sidecar for task/mesh state

State is pluggable via stateProxy.mesh.backend: pg-kv (PostgreSQL, default) or
pvc-kv (DuckDB-over-JSON on a PVC / in-memory) — PostgreSQL is no longer
mandatory
. ASYA_GATEWAY_MODE and the old asya-gateway-api / asya-gateway-mesh
mode-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.md or docs/usage/guide-agentic-patterns.md
those are owned by #507. Where these docs reference flow registration, they
cross-link to guide-gateway.md rather than re-documenting it.

Files updated

  • docs/reference/components/core-gateway.md — biggest edit: api/mesh modes →
    split containers; PostgreSQL → pg-kv OR pvc-kv; corrected service
    names/ports, endpoints (/api/v1/mesh/...), state-ownership diagram, and
    auth (A2A only; MCP auth / OAuth 2.1 / /tools/call removed in code).
  • docs/reference/env-vars.md — replaced the stale single-binary asya-gateway
    section (removed ASYA_GATEWAY_MODE, ASYA_DATABASE_URL, ASYA_GATEWAY_PORT,
    ASYA_CONFIG_*, DB-pool vars, MCP OAuth vars) with a pointer to the per-binary
    sections; added ASYA_BACKSTOP_INTERVAL and a pvc-kv state-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 reads
    DB_PASSWORD via database.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-api
    service + /api/v1/mesh/<id> path.
  • docs/setup/start-gcp-gke.md — split-gateway install with pvc-kv (no-Postgres)
    and pg-kv options, database.* values, Ingress instead of LoadBalancer,
    asya-gateway-mcp / -a2a services, dropped OAuth claim, /a2a/hello/a2a/,
    removed stale sidecar.gatewayURL flag.

Key corrections

  • api/mesh modes → split containers (one image, command:-selected)
  • PostgreSQL now optional via pvc-kv
  • service-name / port updates (asya-gateway-mesh-api[-int], -mcp, -a2a)
  • removed-in-code endpoints/auth dropped: OAuth 2.1, /tools/call,
    /mesh/config-reload, MCP auth wiring

Verification

  • All env vars, endpoints, service names, and Helm values verified against the
    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}).
  • All internal doc links resolve; pre-commit hooks pass.

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 match
    the staleness grep and is a large spec deserving its own follow-up.
  • src/asya-gateway/README.md — source README (not under docs/), still
    describes the single binary.

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>
@github-actions github-actions Bot added the docs Improvements or additions to documentation label Jun 11, 2026
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)_ |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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...).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant