Routing
Routing
What Arc Route is, and how it is built.
Arc Route is a cross-chain routing engine that discovers, simulates, scores, and atomically executes multi-hop paths for moving liquidity onto the Arc network. It treats fragmented liquidity, gas overhead, and bridge risk as a single graph problem and returns the best end-to-end route for any transfer intent. The route is selected before execution, committed, and then carried through to settlement without re-routing mid-transfer.
The protocol is open source. The canonical repository is github.com/arcroute/arc-route, published under the MIT license. It is developed in the open, with continuous integration, changesets, and a public roadmap. Arc Route is presently in a pre-Genesis state: the code, interfaces, and design described here are observable, but settled transfers are gated behind the Genesis phase. Until then, this documentation describes the system as designed and implemented, not as live.
The codebase is a pnpm workspace managed with TurboRepo. Workspaces live under packages/* and apps/*, with shared configuration at the root: a single tsconfig.json, turbo.json for the build/test/typecheck pipeline, and Biome for linting and formatting. The root package, @arc-route/protocol, pins the toolchain — Node 20+, pnpm 9, TypeScript 5.6 — and orchestrates tasks across the workspace.
The published packages form a layered dependency graph. @arc-route/types holds the pure data model and is depended on by everything else. @arc-route/shared provides zero-dependency utilities — constants, logging, error types, encoding helpers — that the other packages build on. From there: @arc-route/graph models the routing graph, @arc-route/scoring ranks candidate routes, @arc-route/execution runs committed routes atomically, and @arc-route/routing-engine is the orchestrator that ties them together. @arc-route/client and @arc-route/sdk are the consumer-facing surfaces for talking to a routing node.
Alongside the packages, the repository ships three reference apps — explorer, simulator, and dashboard — plus runnable examples, a fixtures corpus, a benchmarks suite, and a full tests package driven by Vitest. The documentation site itself is one of these apps.
Bridges move value; routers decide how value should move. A bridge is a mechanism with fixed behavior, while a router is a decision layer that chooses among many mechanisms and composes them. Arc Route is the latter. It treats bridges, liquidity venues, and settlement paths as interchangeable inputs to a single optimization expressed over a graph.
This separation lets the system improve over time without changing the user-facing contract. New bridges, deeper pools, and additional networks become additional edges in the routing graph, not new products to integrate against.