The Agglayer Dev UI is a configurable, self-hosted bridging interface powered by the Agglayer SDK and the Bridge Hub API.
- Install dependencies:
pnpm install- Configure the app:
Edit config.json at the project root to set chains, app modes, Bridge Hub API URL, and external links. See docs/config.md for the full guide.
Set NEXT_PUBLIC_PROJECT_ID (WalletConnect project ID) in .env.local.
Optionally set NEXT_PUBLIC_BRIDGE_HUB_API to override config.json per environment:
cp .env.example .env.local- Run the dev server:
pnpm run devOpen http://localhost:3000.
pnpm run dev— start dev serverpnpm run build— production buildpnpm run start— run production serverpnpm run lint— lintpnpm run validate:config— validateconfig.jsonpnpm run typecheck— TypeScript checkspnpm run test— unit tests (Vitest)pnpm run test:e2e— end-to-end tests (Playwright)
Playwright E2E runs against real testnet infrastructure using a funded E2E wallet.
Security and ops notes:
- The E2E private key is injected into the browser runtime for automated signing. Never reuse a real wallet key.
- Keep the E2E wallet balance minimal and treat it as disposable.
- Never deploy with
NEXT_PUBLIC_E2E_ENABLED=truein any public/shared environment. - Set only
E2E_PRIVATE_KEYin.env.localfor tests. Do not setNEXT_PUBLIC_E2E_PRIVATE_KEYdirectly. - Testnet spend accumulates over CI runs; periodically top up the E2E wallet.
Required .env.local variables for E2E:
E2E_PRIVATE_KEYNEXT_PUBLIC_PROJECT_IDNEXT_PUBLIC_BRIDGE_HUB_API
Hardcoded E2E test constants:
- from chain: Sepolia (
11155111) - to chain: Bokuto (
737373) - ERC20 address: Sepolia USDC (
0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238) - ERC20 metadata (symbol, name, decimals) is fetched on-chain from the contract
- native bridge amount:
0.00001 - ERC20 bridge amount:
0.01
All app configuration lives in config.json at the project root. See docs/config.md for the full guide.
Licensed under the Apache License, Version 2.0. See LICENSE.