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/consoleNo 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.
- Install or enable an EVM browser wallet.
- Open the operator console.
- Select Connect wallet, choose the provider and approve account access inside the wallet.
- 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
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