FOR ONCHAIN BUILDERS

Build onchain products with more flexibility and control

Build onchain products with more flexibility and control

Build onchain products with more flexibility and control

Eco enables programmable swaps, powerful transaction automation, stablecoin-focused execution, and seamless cross-chain UX.

Eco enables programmable swaps, powerful transaction automation, stablecoin-focused execution, and seamless cross-chain UX.

ROUTES API + CLI

ROUTES API + CLI

Fast transfers and swaps, optimized for stablecoins

Fast transfers and swaps, optimized for stablecoins

Fast transfers and swaps, optimized for stablecoins

Eco Routes is a protocol for programmable swaps and fast cross-chain stablecoin transfers. Developers use Routes API and CLI to set conditions for money movement, for seamless stablecoin UX with predictable outcomes.

Maximum developer control

Routes API and CLI give you control over speed, verification, price quote format, and more. CLI lets you preview and publish a real transfer before writing any integration code.

Signed, verifiable price quotes

Every quote is signed by a solver or the Eco router. Verify the signer client-side before any funds move.

Noncustodial and permissionless

Each intent is escrowed in its own vault. Refunds are permissionless and don’t depend on Eco to validate.

Seamless multi-chain actions

Bridge and act in one step: deposit into a protocol, mint, or settle a position the moment funds land.

Gasless user experience

Fund intents with a Permit3, Permit2, or ERC-3009 signature, so users never need native gas to start a transfer.

quote.ts
1const quote = await routes.quote({
2 from: "base:USDC",
3 to: "arbitrum:USDC",
4 amount: "2500",
5 speed: "fast",
6 verification: "strict",
7 quoteFormat: "exactIn",
8})
verify.ts
1const quote = await routes.quote(request)
2
3const signer = recoverSigner(quote)
4if (!isTrustedSigner(signer)) {
5 throw new Error("untrusted quote")
6}
7
8await routes.publish(quote)
refund.ts
1const intent = await routes.publish(quote)
2// funds wait in this intent's own vault
3
4if (await intent.isExpired()) {
5 // anyone can trigger the refund
6 await intent.refund()
7}
destination.ts
1await routes.publish(quote, {
2 onArrival: [
3 approve(USDC, vault),
4 deposit(vault, quote.amountOut),
5 ],
6})
gasless.ts
1const permit = await wallet.signPermit3({
2 token: "USDC",
3 amount: "2500",
4 chains: ["base", "arbitrum"],
5})
6
7await routes.publish(quote, { funding: permit })

SAUCE SDK + SKILLS · COMING SOON

SAUCE SDK + SKILLS · COMING SOON

Turn onchain transactions into programs

Turn onchain transactions into programs

Turn onchain transactions into programs

Sauce is Eco’s runtime for the EVM and Solana. Sauce SDK lets you write transaction logic in TypeScript subset, compile it locally, and run it atomically against live onchain state. No contract to deploy, no backend to provision.

best-swap.ts
1export default program(({ pools, minOut }) => {
2 const best = max(pools.quote(10_000))
3 require(best.out >= minOut, "slippage")
4 best.pool.swap(10_000)
5})
all-or-nothing.ts
1export default program(({ amountIn, minOut }) => {
2 USDC.approve(router, amountIn)
3 const out = router.swap(USDC, WETH, amountIn)
4 require(out >= minOut, "min output")
5 // a failed check reverts the approve and the swap
6})
on-arrival.ts
1await routes.publish(quote, {
2 onArrival: program(({ received }) => {
3 const best = max(pools.quote(received))
4 best.pool.swap(received)
5 }),
6})
strategy.ts
1// one file, compiled per chain
2export default program(({ amountIn }) => {
3 const out = router.swap(USDC, WETH, amountIn)
4 lending.supply(WETH, out)
5})
6
7// sauce build → bytecode for EVM chains and Solana
skills
1// loaded by Claude Code, Cursor, Codex, and more
2skills: ["sauce-sdk", "sauce-programs"]
3
4// or point your agent at the docs MCP server
5mcp: "eco-docs"

Programmable, real-time routing

Read multiple contracts, compare the results, and execute the best path in a single transaction.

Atomic, all-or-nothing execution

If any step fails, the whole program reverts or retries. Approvals change and money moves only if all conditions are satisfied.

Composable with Routes

Make a program the destination of an intent, so a cross-chain transfer lands and runs your logic in the same fulfillment.

TypeScript in, bytecode out

Write programs yourself or use the SDK’s builders for advanced flows, across EVM chains and Solana. One interface for onchain logic, without smart contract overhead.

Skills for coding agents

Install Eco skills into Claude Code, Cursor, Codex, and more, or connect your agent to the Eco docs MCP server.

PERMIT3

PERMIT3

One signature works across every chain.

One signature works across every chain.

One signature works across every chain.

Permit3 is an open-source token-permission protocol that extends Permit2 across chains. Users sign once to authorize token operations on every chain a flow touches.

Multichain approvals in one signature

Replace a stack of per-chain approvals and chain switches with a single prompt. Each chain verifies its own slice of that signature with a Merkle proof, so no cross-chain messaging is needed

Scoped and time-bound

Limit each permission to the exact tokens, amounts, contracts, chains, and deadline the action needs.

Permit2 compatible

Adopt it alongside existing Permit2 integrations without rewriting your approval flow.

Every token standard supported

One interface for ERC-20, ERC-721, and ERC-1155.

Witness data

Attach order details to a permit so your contracts can verify exactly what the user agreed to.

multichain.ts
1const signature = await permit3.sign({
2 chains: [base, arbitrum, optimism],
3 permits: [usdcOnBase, usdcOnArbitrum, usdcOnOptimism],
4})
5
6// each chain verifies its slice with a Merkle proof
scoped.ts
1await permit3.sign({
2 token: USDC,
3 amount: 500n,
4 spender: vault,
5 chain: base,
6 deadline: in30m,
7})
permit2.ts
1// existing Permit2 flows keep working
2await permit2.permitTransferFrom(transfer, owner, signature)
3
4// add Permit3 alongside for multichain approvals
5await permit3.permit(multichainPermit, signature)
standards.ts
1permit3.permit({ token: USDC, standard: "ERC-20", amount: 500n })
2permit3.permit({ token: pass, standard: "ERC-721", id: 42n })
3permit3.permit({ token: item, standard: "ERC-1155", id: 7n, amount: 3n })
witness.ts
1const signature = await permit3.sign(permit, {
2 witness: { order },
3 witnessType: "Order(address taker,uint256 minOut)",
4})
5
6// your contract checks exactly what the user agreed to

Start building with Eco.

Preview a transfer with the CLI in minutes, integrate the Routes API into your backend, or talk to us about programmable execution with Sauce.

Start building with Eco.

Preview a transfer with the CLI in minutes, integrate the Routes API into your backend, or talk to us about programmable execution with Sauce.

Start building with Eco.

Preview a transfer with the CLI in minutes, integrate the Routes API into your backend, or talk to us about programmable execution with Sauce.

Frequently asked questions

Frequently asked questions

Frequently asked questions

Eco’s developer products are designed to let you program and deploy send or swap flows optimized for your use case: cross-chain deposits and payouts, programmable swaps, advanced trading and liquidity strategies, gasless single-click actions, and more.

No, all Eco products are extensible across onchain assets and markets. We optimize Routes liquidity for stablecoins, because stablecoins are the asset most users use to access or go between onchain markets.

Use Routes destination calls for a fixed sequence of actions after a transfer lands, like depositing into a vault. Use Sauce when later steps depend on state read during the same transaction, such as comparing pools and swapping through the best one.

The CLI and the open quoting service work without a key. Production Routes API calls need an API key, which you can request from the Eco team. Permit3 is open source, and Sauce v1 is available to select partners on request.

Get email updates on Eco and

everything stablecoins

THANKS FOR SUBSCRIBING

© 2026 Eco. All Rights Reserved.

Get email updates on Eco and

everything stablecoins

THANKS FOR SUBSCRIBING

© 2026 Eco. All Rights Reserved.

Get email updates on Eco and

everything stablecoins

THANKS FOR SUBSCRIBING

© 2026 Eco. All Rights Reserved.