A2A Server + Client for exposing local coding agents (OpenClaw, Claude Code, Codex, …) as Google A2A-compliant remote agents.
Agents connect outbound to a public Server via WebSocket, so they can sit behind NAT/firewalls while still being addressable by external A2A clients.
Docs:
docs/design.md— architectural designdocs/install-client.md— onboarding a new client against a deployed bridgedocs/remote-testing.md— end-to-end testing against a deployed bridgedocs/local-testing.md— running both bridge and client from sourcedocs/openclaw-e2e.md— exercising theopenclawbackend directly against the gateway Docker image
@vicoop-bridge/client releases are driven by
Changesets. PRs that should bump
the client include a changeset describing the change; merging them keeps a
single "Version Packages" PR up to date with the resulting version + changelog
entry. Merging that Version PR triggers
.github/workflows/release.yml, which
cross-compiles per-platform native binaries (macOS/Linux/Windows) with Bun
and publishes them as assets on the @vicoop-bridge/client@<version>
GitHub release.
Day-to-day flow for contributors:
pnpm changeset # pick patch / minor / major + write a one-line summary
git add .changeset/ # commit the new file alongside your changeSee .changeset/README.md for the full flow,
including which packages are versioned (only @vicoop-bridge/client).
Operators installing from a published release should follow
docs/install-client.md — the one-liner
installer plus SIWE/registerClient flow for obtaining a client token.
Before merging a Version Packages PR, verify that
docs/install-client.md still matches the
bundle being released:
- shipped backends listed in the doc match
packages/client/src/cli.ts - backend-specific launch examples still reflect the released client behavior
- the asset filename matrix in
scripts/package-client-release.shandinstall.sh's platform-detect block still agree withresolvePlatformAsset()inpackages/client/src/upgrade.ts
Active development. The client currently ships echo, openclaw, claude,
and codex backends.