Programmable Ethereum Transactions Without Smart Contracts.

Programmable Ethereum Transactions Without Smart Contracts.

381e35

381e35

2/8/2026

swap
action
supply
action
withdraw
action
borrow
action
repay
action
transfer
action
balance
action
account
action
lltv
action
supplied
action
borrowed
action
debt ceiling
action
borrow cap
action
supply cap
action
reserve
action
liquidity
action
calculate
constraint
compare
constraint
assert
constraint
repeat
constraint
if
constraint
else
constraint
end
constraint
for
constraint
#company
Swap in one place, approve the output, supply it in another, set up a position. Four separate transactions for a single strategy. Then check back every few hours to make sure nothing has drifted, or hand your keys to a centralized bot and hope for the best.
Every approach to DeFi automation forces the same choice: power without simplicity, or simplicity without trust.
Plug eliminates the choice. Today we are live in Alpha.

The Standard Transaction

Every interaction with every protocol on every EVM chain reduces to one simple specification: a transaction. Six fields, each locked the moment you sign.
The to field accepts a single address. Your transaction talks to one contract. A strategy that touches two protocols requires two separate transactions, signed independently, confirmed independently, with nothing connecting them.
data encodes your function call. Method, parameters, amounts. All of it built against state that existed the moment you pressed sign. One second later the market moves and everything baked into that calldata is stale. The amounts are wrong. The expected output has shifted. The opportunity may already be gone.
This is why transactions revert so often. You sign against one version of the world, the chain executes against another. Every hardcoded value is a bet that nothing changes between signing and confirmation:
ETH / USD
2,450 USDC2,450 USDC
value is the amount of native token (ETH) transferred. A raw integer of wei hardcoded into the transaction. You cannot reference your current balance, compute a percentage, or react to the output of a previous step. You commit to an exact number at signing time and hope it still makes sense when the transaction confirms. This single constraint has broken more protocol integrations than any bug.
nonce enforces strict ordering. Transaction 43 cannot execute until 42 confirms. A single stuck transaction blocks every transaction behind it. No parallelism. No reordering. No recovery without manual intervention.
chainId binds you to one network. Cross-chain strategies require separate transactions, separate signing contexts, and manual coordination of state between them.
gasLimit is a resource estimate you commit to before execution. The network determines the actual cost. You're budgeting for something unknowable until the transaction lands, with no control over it once signed.
Everything frustrating about DeFi UX traces back to these six fields. Want to swap and supply the output as collateral? Two transactions. The first confirms, you copy the output, build the second around it, sign again. If the value moved between them, your amounts are wrong. If gas spikes, the second sits in the mempool while the output from the first depreciates.
Want to automate that? Two options:
  1. Write a smart contract that encodes your logic onchain. Accept development time, an audit, deployment costs, and a system you can never update without migrating state.
  2. Or delegate signing authority to an offchain operator and trust that they execute honestly.
One path gives you power without simplicity. The other gives you simplicity without trust.

What Plug Does

A Plug is a set of actions wired together that execute as one atomic transaction. What used to be four or five separate transactions for a basic position becomes a single signed intent you can reuse whenever you like.
The interface lets you construct these visually. No code. No scripts. Declarative sentences that describe what happens when it runs:
swap
action
Swap 1ETHETH for USDCUSDC
supply
action
Supply 1,000USDCUSDC
borrow
action
Borrow 500GHOGHO
Building a Plug should feel like explaining something to someone who already knows how to do it. Not fighting dropdown menus. Not hunting for contract addresses. Simple statements of what you want and the system figures out the rest.

Readable Transactions

Previous composability solutions made you read calldata, learn a domain-specific language, or settle for centralized automation with zero transparency. Plug takes the opposite approach. Every action reads like a sentence:
swap
action

Swap 1 ETHETH for USDCUSDC.

When you can read your transaction, you catch mistakes before they cost you. When someone shares a Plug, you understand what it does immediately. No reverse-engineering. No trust-me-bro. Just read it.
Plugs are validated and executed onchain with no central intermediaries. The sentence you read is the intent that executes onchain.

Referencing Transaction Values with Coils

Bundling actions into a single transaction is useful, but if you can't pipe the output of one step into the input of the next, you're running faviconMulticall with extra steps.
Coils wire your actions together. The value returned from one function call flows directly into the next. The collateral you supplied becomes the reference for the following action. No manual tracking. No copy-pasting values between steps.
balance
action
Balance of ETHETH
swap
action
Swap balanceETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH
account
action
Get borrow limit for ETHETH
borrow
action
Borrow borrow limitETHETH
No stale values. No hardcoded amount that drifts by the time the transaction lands. State threads through every step — when you reference "the amount I just swapped" or "the position I just opened," it's always current.
You do not build a transaction with hardcoded amounts unless those amounts are truly static. Plugs operate as perpetual intents that read and build upon current blockchain state at execution time. Every value is calculated live and carried through each step automatically.
Consider a scenario where you want to transfer 50% of your balance. In typical systems, you have two options:
  • Hardcode 50% of the balance you held at signing time.
  • Delegate transfer rights to a centralized operator who can steal your funds but tends to be honest.
With Plug, you reference your balance at execution time, calculate 50% of it, and use that as the transfer amount. Every run transfers 50% of your current balance, regardless of how it has changed since you signed.

Arbitrary Logic and Branches

With Coils handling state, the core protocol actions work. Swap, supply, borrow, withdraw. The DeFi verbs. But the moment you build real strategies on top of them, the gaps surface.
You can't express "swap my ETHETH if the price is above $2,000" with protocol actions alone. You can't say "rebalance every 24 hours" or "only borrow up to 60% of my limit."
Plug includes math operations, boolean comparisons, time-based conditions, and string manipulation — all expressed as the same readable sentences everything else uses:
calculate
action
Calculate balance*0.6
comparison
constraint
resultis greater than2,000
repeat
constraint
Repeat up to 10 times every 24hours
assert
constraint
Assert comparison is true
This is what separates Plug from a transaction bundler. A bundler executes a list. Plug executes logic. The difference matters the moment your strategy needs to react to market conditions, which is immediately and always.
But primitives alone don't change outcomes. You can compare two numbers. You can check the time. Without control flow, those are observations with no consequences.
Branches split your Plug into paths. A condition evaluates to true or false, and each path executes accordingly. What was a linear sequence of actions becomes the codification of any behavior you can imagine:

Price-Gated

Only leverage when the market agrees with you. Read the oracle price first and if ETH isn't above your target, the whole transaction reverts before touching your position.

oracle
action
Get price of ETHETH
assert
constraint
Assert price>2,000
account
action
Account data ETHETH
calculate
action
available borrows*0.5
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH

Deleverage

One intent that works both directions. Health factor strong? Leverage up. Drops below threshold? Automatically unwind, swap back, and repay.

account
action
Account data ETHETH
comparison
constraint
health factor>1.5
if
action
If comparison
calculate
action
available borrows*0.5
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH
else
action
Else
calculate
action
total debt*0.1
withdraw
action
Withdraw resultwstETHwstETH
swap
action
Swap withdrawnwstETHwstETH for ETHETH
repay
action
Repay amount outETHETH
end
action
End

Revert

The simplest form. Assert your health factor is safe, then execute. If the assert fails, the entire transaction reverts atomically. Nothing happens unless conditions are right.

account
action
Account data ETHETH
assert
constraint
Assert health factor>1.5
calculate
action
available borrows*0.5
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH

Branch

Check your position and decide at runtime. Health factor holds? Leverage up. If not, the transaction completes but skips the borrow. No revert, no wasted gas.

account
action
Account data ETHETH
comparison
constraint
health factor>1.5
calculate
action
available borrows*0.5
if
action
If comparison
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH
end
action
End

Scheduled

Sign once, run forever. Every 24 hours the intent fires, checks your health factor, and leverages up if conditions are met. If they're not, that pass reverts and it tries again next cycle.

repeat
constraint
Every 24hours
account
action
Account data ETHETH
assert
constraint
Assert health factor>1.5
calculate
action
available borrows*0.5
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH
end
action
End

Loop

Compound leverage in one transaction. Each pass re-reads your account, borrows half the room, swaps, and re-supplies. Nothing left to borrow? The loop stops.

for
action
Repeat up to 5 times
account
action
Account data ETHETH
calculate
action
available borrows*0.5
borrow
action
Borrow resultETHETH
swap
action
Swap borrowedETHETH for wstETHwstETH
supply
action
Supply amount outwstETHwstETH
end
action
End
Every piece of onchain state feeds the next. Coils wire outputs forward. Arbitrary logic computes and compares. Branches decide what happens. The full set of primitives you'd expect from a programming language, expressed as sentences anyone can read, signed into a trustless intent no one can falsify.

Contextual Inputs

How do you know what a valid input is? If you're entering an amount, where is your current balance? The exchange rate? The protocol limits? This is where consumer-grade DeFi automation stops. Every input is the same generic text field. Figure it out yourself.
Every input in Plug is context-aware. When you're swapping, you see your balance, the current rate, the expected output. When you're supplying collateral, you see your health factor, your positions, what this action will change:
Ethereum

Ethereum

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

ETH

$8,541.00

USD Coin

USD Coin

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0

USDC

$4,250.00

Lido Staked ETH

Lido Staked ETH

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

stETH

$3,612.00

There is no AI or magic. Just good design and a system that knows what you're doing. When you integrate Plug's API into your own app, you get all of this for free.

Real-Time Onchain Data

A Plug that checks your health factor against a threshold is useless if the health factor is stale. A price-gated strategy doesn't work if the price is 30 seconds behind the market.
Most platforms solve this by building a massive network of oracles and offchain data providers, pulling data from multiple sources, aggregating it, and hoping it's fresh by the time the transaction executes.
Plug doesn't need this. Coils and arbitrary logic run onchain while the transaction itself is executing. Every piece of data used in a Plug is retrieved, validated, and consumed onchain without a call to an external API. A Plug that says "swap if the price is above $2,000" checks that condition at the moment it lands. If constraints are invalid, the transaction never executes.
No global clock polling your intent. No cron job. Every upstream state change propagates downstream immediately.
So why invest in real-time data at all? Because the builder experience demands it. Token prices across every pair. Gas costs across every chain. Supply rates, borrow rates, funding rates. Utilization, liquidity indexes, debt ceilings, borrow caps, TVL, pool liquidity. Every data point you need to make an informed decision, live while you build:
ETH / USD
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

Price · ETH / USD

BTC / USD
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

Price · BTC / USD

wstETH / ETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Price · wstETH / ETH

LINK / USD
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

Price · LINK / USD

USDC / USD
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Price · USDC / USD

GHO / USD
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Price · GHO / USD

Ethereum
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Gas · Ethereum

Base
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Gas · Base

Arbitrum
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Gas · Arbitrum

ETH
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Supply Rate · ETH

USDC
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Supply Rate · USDC

wstETH
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Supply Rate · wstETH

ETH
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Borrow Rate · ETH

USDC
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Borrow Rate · USDC

GHO
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Borrow Rate · GHO

ETH-PERP
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Funding Rate · ETH-PERP

ETH
%
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Utilization · ETH

USDC
%
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Utilization · USDC

DAI
%
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Utilization · DAI

ETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Liq. Index · ETH

USDC
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0

Liq. Index · USDC

ETH
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
$

Total Supplied · ETH

ETH
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
$

Total Borrowed · ETH

USDC
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
$

Total Supplied · USDC

USDC
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
$

Total Borrowed · USDC

GHO
M
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

Debt Ceiling · GHO

ETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Borrow Cap · ETH

wstETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Borrow Cap · wstETH

wstETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Supply Cap · wstETH

cbETH
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Supply Cap · cbETH

ETH
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Reserve Factor · ETH

USDC
%
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0

Reserve Factor · USDC

ETH / USDC
M
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

Depth ±2% · ETH / USDC

BTC / USDC
M
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

Depth ±2% · BTC / USDC

Aave v3
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

TVL · Aave v3

Lido
B
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

TVL · Lido

Cross-Chain User State

Global state tells you what the market is doing. User state tells you what you can do about it.
Every position you hold — across every chain, across every protocol — is indexed and kept current. Wallet balances, supplied collateral, outstanding debt, staked positions, LP shares. When your health factor shifts because ETHETH moved, Plug already knows. When you receive tokens on Base, your Plugs on Ethereum that reference your total balance update immediately.
Ethereum
badge

Ethereum

2.847 ETH

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+1.24%

Bored Ape YC
badge

Bored Ape YC

#7842

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+3.21%

Supplied wstETH
badge

Supplied wstETH

5.0210 wstETH

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+2.14%

Borrowed GHO
badge

Borrowed GHO

8,200.00 GHO

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

-0.32%

USD Coin
badge

USD Coin

4,250.00 USDC

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+0.01%

Art Blocks
badge

Art Blocks

Fidenza #482

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

-1.84%

CryptoPunks
badge

CryptoPunks

#3429

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+5.12%

Supplied ETH
badge

Supplied ETH

1.8000 ETH

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+1.24%

Ethereum
badge

Ethereum

0.524 ETH

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+1.24%

USD Coin
badge

USD Coin

12,400.00 USDC

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+0.01%

ETH / USDC
badge

ETH / USDC

0.4200 LP

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+0.87%

Squiggles
badge

Squiggles

#4721

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

-0.42%

Autoglyphs
badge

Autoglyphs

#281

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+2.87%

Dai
badge

Dai

1,820.00 DAI

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

-0.02%

USDC / DOLA
badge

USDC / DOLA

8,412.00 LP

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

-0.14%

Supplied USDC
badge

Supplied USDC

6,100.00 USDC

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
$

+0.34%

Nouns
badge

Nouns

#487

K
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

-2.14%

Wrapped BTC
badge

Wrapped BTC

0.482 WBTC

9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
.
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
,
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
0
$

+2.87%

There are no balance checks or hidden RPC calls when you open the app. User positions are tracked the same way global state is tracked: continuously, across every chain, propagated the moment anything upstream changes.
Protocol positions are handled natively. Aave collateral, Lido stakes, liquidity positions. Not as generic token balances but as typed, protocol-aware positions with the metadata that matters: health factors, accrued rewards, claimable yields, position limits. The context your Plug needs to make decisions is already computed and waiting.

Where We Are

Everything above is live and functional. Composable transactions, state threading, arbitrary logic, branches, contextual inputs, real-time data, cross-chain state. You can build, test, and simulate Plugs right now that would have taken days and custom smart contracts to achieve before.
The tradeoff between power and trust has never been fundamental. It was a design failure. Readable intents that anyone can verify. Arbitrary logic that composes without code. State that threads through every step, live at execution time, with no centralized operator in the loop. Plug doesn't ask you to choose. You get all of it.
Onchain execution launches in Beta. The Plugs you build today will execute exactly as described when it goes live. Between now and then — more protocols, more actions, more chains. Alpha proves the abstractions work. Beta makes them disappear.
faviconStart building now.