Skip to content
Swale
Wallet access

Choose an injected EVM wallet. Swale never requests a private key or initiates a transaction during connection.

No injected wallet detected

Install or enable an EIP-1193 compatible browser wallet, then reload this page.

Launch Console

Product documentation

Build on verified behavior.

A precise guide to the working wallet layer, product routes and the boundary for connecting a real runtime backend.

Quick start

Run the product locally

Install the pinned dependencies, start Next.js and open the product console.

npm install
npm run dev

# open http://localhost:3000/console

No environment variables are required for injected wallet connection.

Wallet connection

Use the provider already in the browser

Swale discovers multiple injected providers through EIP-6963 and falls back to the conventional EIP-1193 browser provider when necessary.

  1. Install or enable an EVM browser wallet.
  2. Open the operator console.
  3. Select Connect wallet, choose the provider and approve account access inside the wallet.
  4. Verify the account, chain ID and provider shown in the session overview.

Swale listens for account, chain and provider disconnection events. The interface updates without a page reload.

Verified behavior

What works in this repository

Injected wallet discoveryEIP-6963 with an EIP-1193 fallback
Available
Account connectionRequests account access from the selected wallet
Available
Account and chain updatesResponds to provider events without reloading
Available
Local disconnectClears the Swale browser session
Available
Signatures and transactionsNo signing or transaction request is implemented
Not enabled
Swale runtime APIRequires a backend endpoint and an authentication contract
Not configured

Security model

Connection is not a transaction

The wallet remains responsible for keys, account approval and network access. Swale requests only eth_requestAccounts and eth_chainId during a user-initiated connection.

  • No private key is read or stored.
  • No signature is requested during connection.
  • No transaction is created or submitted.
  • Disconnect clears Swale's local session. Wallet permissions remain controlled by the wallet.

The implementation follows the provider interface described by EIP-1193 and multi-provider discovery described by EIP-6963.

Runtime API boundary

Connect real infrastructure here

The repository does not contain a Swale backend, runtime endpoint, deployment service or credentials. Runtime buttons remain disabled until those contracts exist.

A backend integration should define:

  • An authentication challenge tied to the connected account.
  • Explicit user consent before requesting any wallet signature.
  • Typed responses for runtimes, deployments, agents, tools and events.
  • Loading, empty, error and authorization states for every request.

Do not unlock runtime controls by replacing the disabled state with simulated data. Connect them only after the backend behavior can be verified.

Project structure

Where product behavior lives

app/console/page.tsx                  product route
app/docs/page.tsx                     documentation route
components/wallet/wallet-provider.tsx provider discovery and state
components/wallet/wallet-button.tsx   connection dialog
components/swale/product-console.tsx  product workspace
lib/navigation.ts                     route destinations