Live on Base Sepolia Testnet
Testnet on Base Sepolia · Robinhood Chain planned for mainnet.

Let the AI trade.
One letter keeps it true.

Emet gives your trading agent a session key, never your keys. Every trade is checked onchain against rules you write: asset limits, drawdown, slippage and venue. The guardrails never depend on trusting the model.

Designed for ERC-4337 + ERC-7579 · default-deny execution · no withdrawals, ever

Emet Golem
TESTNET PREVIEW · DEMO DATA
4128
Refusals logged by SDK simulation
317
Clay accounts funded
42
Golems live
−5%
Default max drawdown
The Legend

An old story about controlling a servant stronger than its maker.

In 16th-century Prague, a rabbi shaped a giant from river clay. It lived only because of a single word carved into its forehead: אמת, truth. Erase the first letter, and the giant returns to clay.

01 Clay is shaped

A body without will

The smart account, the Clay, is deployed. No agent, no rules, no power yet.

02 The word is written

The Inscription binds it

The Maker writes the Letters: position limits, loss limits, venues. The Golem wakes, bounded.

03 One letter is erased

Erase, and it stills

One call to erase() and the account freezes instantly. Never trust, only revoke.

How it works

Four stages from intent to on-chain truth.

Every trade passes through a deterministic four-stage pipeline before a single token moves.

01 Maker 02 Inscription 03 Golem 04 Chronicle
STAGE 01
Maker

Writes the Inscription

Master key sets Letters: assets, size, loss, venues, expiry.

STAGE 02
Clay

Holds the Mark

The Golem gets a session key: trade only, never withdraw.

STAGE 03
Validation

Checked onchain

Every UserOp verified against rules before and after execution.

STAGE 04
Chronicle

Recorded, public

Every action is recorded onchain. Refusals are logged by the SDK, tagged with the Letter that stopped them.

The Inscription

Six letters. Zero trust in the model.

Rules live onchain, not in a prompt. Nothing the AI says can override them: only the Maker can rewrite the Inscription.

Allowed assets

Only NVDA, TSLA, USDG, or whatever list the Maker sets. Anything else is default-denied.

Max position size

Cap any single asset at, say, 20% of portfolio value. Enforced before every fill.

Max daily loss

Any trade that would push drawdown past −5% of the high-water mark is reverted. Repeated breaches freeze the account.

Trade size & frequency

Per-trade and per-hour caps stop runaway execution before it compounds.

Allowed venues

Only whitelisted adapters: thin, purpose-built contracts, never raw router calldata.

Expiry

The Mark dies after N days. No silent renewal: the Maker re-inscribes by hand.

Under the hood

Split checks by phase, because validation can't read a live oracle.

Maker · writes Inscription
Golem · signs UserOp with Mark
VALIDATION (validateUserOp) · Mark valid & unexpired? · state == EMET? · target whitelisted adapter? · selector known? default-deny
EXECUTION · Adapter → Uniswap / auction
POST-HOOK (ERC-7579) · recipient == EmetAccount? · fill ≥ oracle × (1 − maxSlippage)? · NAV ≥ high-water × (1 − maxDrawdown)? · oracle feed fresh?
pass → Chronicle  fail → revert
Thin adapters, not routers

We never decode Uniswap's Universal Router. A small SwapAdapter exposes one function and always returns output to the account.

Recipient enforcement

Every trade's output must land back on the EmetAccount. This is what makes "no withdrawals" actually hold.

Kill switch

erase() is callable by the Maker or a Keeper. It moves the account to MET instantly and revokes every Mark.

Meet the Golems

Same clay family. Different tool, different job.

Each strategy gets its own Golem: a distinct silhouette carrying a distinct tool, running inside the same Inscription.

Demo strategies for testnet. Emet is infrastructure, not investment advice.

The Balancer golem

The Balancer

Rebalancer

Carries a stone scale on its back. Symmetrical, steady: keeps the portfolio at target weights.

The Runner golem

The Runner

Momentum

Lean, forward-leaning, streaks of clay trailing behind. Chases trend within a hard exposure cap.

The Mason golem

The Mason

DCA / accumulation

Stacks bricks one by one. Broad and patient: buys on a fixed schedule, no timing bets.

The Watcher golem

The Watcher

Risk-off / hedging

Tall, carries a lantern, keeps looking around. Moves to safety fast when volatility spikes.

The Dashboard

Watch the Letters. Watch the Refusals. Erase whenever you want.

The Erase button is never hidden in a menu. Try it: it's connected to the mock below.

the-runner.emet.eth active (EMET).
the-runner.emet.eth DEMO
Letters
Daily loss−1.2% of −5%
Max position (TSLA)18% of 20%
Trades this hour4 of 6
Mark expiry11 of 30 days
Chronicle & Refusals
Swap 120 USDG → NVDA
via SwapAdapter · filled at oracle −0.1%
2m ago
Refused position size would exceed 20%
blocked by Letter B
18m ago
Swap 300 TSLA → USDG
via SwapAdapter · filled at oracle −0.2%
41m ago
Refused target not a whitelisted adapter
blocked by default-deny
1h ago
Coming in v2

The Workshop: verified track records, onchain.

Third-party Golems publish their performance under their own Inscription. Subscribe to one, and the developer earns a fee the contract enforces, not a promise.

Build a Golem
The SDK · Preview

Build a Golem in an afternoon.

  • 01Point at a Clay. The SDK reads the live Inscription so your agent knows its limits before it tries anything.
  • 02Build & simulate. Every UserOp is simulated first: Refusals are logged with the exact Letter that would block it.
  • 03Submit through the bundler. Onchain validation and the post-execution hook do the rest.

Preview API. @emet/sdk is not published yet.

// @emet/sdk · build, simulate, submit
import { EmetClient } from "@emet/sdk";

const emet = new EmetClient({
  clay: "0x5b4...089",
  mark: process.env.SESSION_KEY,
  chain: "base-sepolia",
});

const plan = await emet.simulate({
  action: "swap",
  tokenIn: "USDG",
  tokenOut: "NVDA",
  amountIn: "250",
});

if (plan.refused) {
  console.log(`Refused by ${plan.rule}`);
} else {
  await emet.submit(plan);
}
Your rules, written in clay

Strength without trust. Start with one Letter.

Testnet is live on Robinhood Chain. Fund a Clay, choose a Golem, watch the Chronicle fill in.