Skip to content

Provision aggkit-proxy (proxy + tracker) for testnet/mainnet and fill dev-ui aggkitBridgeApis #1790

Description

@arnaubennassar

Owners: infra/ops (provisioning) + agglayer/agglayer-dev-ui (config values only).

Context

The dev-ui is being migrated off the Bridge Hub API onto the aggkit bridge service (agglayer/agglayer-dev-ui#24, consuming the new sdk aggkit module from agglayer/sdk#28). The app is multi-mode (devnet / testnet / mainnet): each mode's config.json entry carries an aggkitBridgeApis map of networkId → aggkit REST base URL.

Today only the devnet mode has real URLs (a local kurtosis enclave). The testnet/mainnet entries are committed placeholders, e.g. in config.json:

"20": "https://PLACEHOLDER-katana-aggkit",
"22": "https://PLACEHOLDER-forknet-aggkit",
"37": "https://PLACEHOLDER-bokuto-aggkit"

So testnet/mainnet modes cannot work until real endpoints exist.

What needs to be deployed

An aggkit-proxy per environment: aggkit's proxy command, which exposes a single REST entry point that fans out to the per-network aggkit bridge services, serves the bridge tracker API (/tracker/v1/...), and handles CORS for browsers. Two working references:

Config gotcha: as of aggkit v0.11.0-rc5, [Tracker].L1GlobalExitRootAddress is validated at startup — the proxy exits immediately with a clear error if it is unset/zero (#1782, fixed by #1784). It must be set to the environment's real L1 GlobalExitRoot contract address.

Why no dev-ui/sdk code changes are needed

The sdk client derives the tracker endpoint from the same base URL as the bridge API — src/aggkit/client.ts builds trackerApiUrl = ${rootUrl}/tracker/v1``. The moment a real proxy URL replaces a placeholder in aggkitBridgeApis, both bridge data and the tracker UI light up for that mode automatically.

Work

  1. Deploy aggkit-proxy (proxy + tracker components enabled) for testnet, then mainnet.
  2. Replace the https://PLACEHOLDER-* values in dev-ui config.json testnet/mainnet aggkitBridgeApis with the real URLs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions