Skip to content
Lattice Studio

Lattice Studio

Compose, check and deploy EIP-2535 diamonds

Created on 1st October 2026

•

Lattice Studio

Lattice Studio

Compose, check and deploy EIP-2535 diamonds

The problem Lattice Studio solves

Composing an EIP-2535 diamond by hand is error-prone. Two facets claim the same selector, inits run in the wrong order, storage namespaces overlap, or nobody ends up holding the authority to upgrade. These mistakes usually surface at deploy time or in an audit, after the expensive part is done.

Lattice Studio moves them to the moment you make them. You place facets from the Lattice library on a sheet, and every edit re-runs the full set of checks (selectors, semantics, core, dependencies, storage, inits, authority, links, network) in about 2 ms for a 30-facet diamond. Each finding names its fix. When the recipe is clean you export it as a Foundry script, an agent brief, a recipe.json or a Safe Transaction Builder batch, or deploy it in one transaction and verify it on Sourcify.

Nothing leaves your machine until you deploy: no backend, no accounts, no analytics. It works offline after first load.

What it does

  • Checks a diamond on every edit, with fix commands and a console line for each finding.
  • Runs the same pure core in the app, the CLI and CI, so the sheet, the exported script and the pipeline can't disagree. lattice-studio check recipe.json --json has stable exit codes.
  • Deploys in one transaction through LatticeFactory or CreateX, predicts the address first, compares the on-chain loupe to the plan afterwards, and verifies on Sourcify.
  • When a chain doesn't have Lattice's shared contracts yet, deploys them through Arachnid's proxy at their predicted addresses.
  • Exports: Foundry script (compiles on Foundry 1.8.3), agent brief, recipe JSON with schema, Safe batch, project file, share link.

How it's built

Bun monorepo. packages/core is pure TypeScript (no DOM, network, clock or randomness) and holds the analysis, cut plan, init encoding, address prediction and exporters. packages/catalog-gen builds the facet catalog from a pinned Lattice checkout after forge build. packages/cli wraps the core. apps/studio is Vite + React + React Flow, with a lazily loaded viem/wagmi chain module that is the only code that talks to a network.

Tests on the submitted code: about 3,500 unit tests, 1,650 component tests in a real browser, 481 Playwright flows, Anvil chain tests, and golden tests against Lattice's own deploy scripts. WCAG 2.2 AA is the target; axe runs on every dialog and state.

What's real and what's provisional

  • Real: everything above, on Sepolia, Base Sepolia and HSKChain Testnet.
  • Sepolia: diamond 0xF70f3E9D2183B4e829DB615E08551bafcE6C9755 (an ERC20, "First Lattice Token", FLT), deployed from the live app through LatticeFactory 0xc192cEa531C8FFb3cBE69A98f4795757E4A2c7be in tx 0xc3464766712590e02e70444a0835c46dfd8db1c02cabbbd94aea440dddade969, exact match on Sourcify. The on-chain loupe returns the five facets of the plan in order.
  • HSKChain Testnet (chain 133): diamond 0x1BAeE0288f04931AbF3E85D7d1704203e7Bcc5e0 (a GovernedVault, "Grant vault", gVLT, 14 facets), deployed from the live app in tx 0x73d30461c6f0386a3ee4f8daf6f95acdfc0e6772ab3591cfe5ee97c5eae1d80e: https://testnet-explorer.hskchain.net/address/0x1BAeE0288f04931AbF3E85D7d1704203e7Bcc5e0. Studio deployed Lattice's shared contracts there first, and the factory landed at the same address as on Sepolia. The loupe answers on-chain; Sourcify verification had not completed for this address at the time of writing.
  • Provisional: the catalog is built from Lattice's dev branch at f4a32c8, not a tagged release. The app and CLI say so.
  • New and not yet proven live: Etherscan verification alongside Sourcify, with your own API key in Settings, shipped on the last day. It is covered by tests against faked responses only.
  • Not in v1: mainnet, upgrading a live diamond, smart-account recipes, the CLI on npm. WalletConnect is not configured in the hosted build; injected wallets work.
  • CI on GitHub is red for known reasons that don't fail locally: no Linux screenshot baselines yet, the Foundry jobs fail building the pinned Lattice checkout on the runner, and one performance benchmark misses its budget there.

Tracks

  • Application Middleware & Open-Source Tooling (primary).
  • AI × Ethereum & Agent Economy: the CLI's --json output and the agent brief export exist so coding agents and CI run the same analysis as the app. There is no AI feature inside Studio.
  • HSK Chain: HSKChain Testnet is a deploy target in the live app, with the diamond above deployed there.

Disclosures

  • Lattice (https://github.com/dadadave80/lattice) is my own pre-existing open-source library and predates the event.
  • Lattice Studio was built inside the hackathon window: first commit 2026-09-23.
  • The repository was built with coding agents under my direction. AGENTS.md in the repo describes how.

Roadmap

Upgrades of live diamonds (v2); smart-account recipes once Lattice ships AccountFactory; a re-pin to the canonical Lattice 0.4.0 release; the CLI on npm.

Challenges I ran into

The hardest part was the UX, and it still is. A diamond is dense: one recipe here has 12 facets and 120 selectors, each with an owner, contested routes, inits in a fixed order, storage namespaces and an authority model. Showing all of that on one sheet without burying the one thing that is wrong took more iterations than any of the analysis code.

A few places where that showed up: deciding what belongs on the sheet at all (the loupe and ERC-165 facets started as ordinary cards and ended up as a fixed core cell, a change that landed on the last day); making a selector collision readable at a glance and fixable in one action; and keeping the same information usable from the keyboard alone and on a 375 px phone.

I don't consider it solved. Some surfaces were built without a design pass, a card's trace can still run behind the title block, and first load is heavier than I want. This is the part of Studio I expect to keep improving after the hackathon, with feedback from people composing real diamonds.

Tracks Applied (4)

AI × Ethereum & Agent Economy

Studio's analysis is built to be driven by coding agents as well as people: the CLI (lattice-studio check|plan|predict|e...Read More

Application Middleware & Open-Source Tooling

Lattice Studio is open-source developer tooling (MIT) for EIP-2535 diamonds: it checks a composition on every edit, expo...Read More

Nigieria Hackathon

I'm building Lattice Studio from Nigeria and submitting it to the Nigeria hackathon. It is open-source developer tooling...Read More

HSK Chain

Lattice Studio supports HSKChain Testnet (chain 133) as a deploy target in the live app at https://lattice-studio-topaz....Read More

Discussion

Builders also viewed

See more projects on Devfolio