Skip to Content
Introduction

Introduction

Satellite Connect

Satellite Connect is the wallet connection project of TUWA Stage 2: a headless, framework-agnostic store for EVM and Solana wallet connections. It keeps the connected wallets and the active one outside your components, reconnects the last wallet after a page reload, follows account and network changes made in the wallet, and disconnects when a Sign-In With X session no longer matches the wallet, with no UI components and no hosted services.


πŸ›οΈ Where Satellite Connect Fits in TUWA

TUWA is built in stages. Each stage builds on the ones below it:

StageProjectsRole
1 β€” Core Auth & PrimitivesSIWXΒ , Orbit UtilsΒ CAIP-122 authentication and multi-chain primitives
2 β€” State & ConnectionSatellite Connect, PulsarΒ Wallet connection state machine and transaction tracking
3 β€” Backend & SyncQuasar CloudΒ  or self-hosted Quasar CommunityΒ Transaction indexing and cross-device sync
4 β€” User InterfaceNova UI KitΒ React design system and components

Satellite Connect builds on Orbit Utils (connector names, localStorage helpers, chain clients, ENS and SNS lookups). Nova Connect renders its state as connect modals, Pulsar reads the last connection it saves, and its watchers keep the wallet in line with a SIWX session; all of them are optional. The former @tuwaio/satellite-siwe-next-auth package is deprecated and replaced by SIWXΒ .


🧭 Principles

  1. Connections are state, not component logic: the wallets live in one store outside your components, so every component reads the same active connection, and the connection survives navigation and page reloads.
  2. Headless and framework-agnostic: the store is a vanilla Zustand store with no UI. React bindings live in their own package, and connect modals in Nova Connect.
  3. One store, many chains: chain logic lives in adapters that implement one contract. EVM and Solana wallets can be connected at the same time, with one of them active.
  4. Modern Web3 libraries only: @wagmi/core and viem for EVM, the Wallet Standard and @solana/kit for Solana. No ethers.js, web3.js, @solana/web3.js or gill.
  5. Self-custody, no hosted services: wallets connect directly through wagmi connectors and the Wallet Standard. There is no Wallet-as-a-Service and no backend of Satellite Connect’s own.
  6. Transparent side effects: the package pages list what is saved to localStorage and which hosts are contacted.

πŸ”„ How a Connection Works

connect({ connectorType, chainId }) β”‚ adapter.connect β†’ the wallet asks the user to connect β”‚ connections + activeConnection β†’ the store holds the new connection β”‚ adapter.checkIsContractAddress β†’ isContractAddress (EVM smart accounts) β”‚ callbackAfterConnected(connection) β†’ your code (optional) β”‚ orbit-core:lastConnectedConnector β†’ saved to localStorage (read by auto-connect and Pulsar) β–Ό chain watchers (EVM: wagmi events, Solana: Wallet Standard wallets) β”‚ account or network changed in the wallet β†’ updateActiveConnection β”‚ wallet disconnected, SIWX sign-in rejected, β”‚ or wallet no longer matches the SIWX session β†’ disconnect β–Ό disconnect(connectorType?) β”‚ adapter.disconnect β†’ the wallet disconnects β”‚ other wallets still connected β†’ the first one becomes active and is saved β”‚ no wallet left β†’ the saved connection is removed

After a reload, initializeAutoConnect reads the saved connection and connects the same wallet again, except wallets that need a user action (such as WalletConnect).


🧩 Packages

PackageLayerProvidesPeer dependencies
@tuwaio/satellite-coreL3Connection store, adapter contract, auto-connect, SIWX state type@tuwaio/orbit-core β‰₯ 0.3, zustand 5.x, immer 11.x
@tuwaio/satellite-evmL4EVM adapter and watcher, contract account check, wagmi config helpers@tuwaio/satellite-core β‰₯ 0.5, @tuwaio/orbit-core β‰₯ 0.3, @tuwaio/orbit-evm β‰₯ 0.3, @wagmi/core 3.x, viem 2.x
@tuwaio/satellite-solanaL4Solana adapter and watcher, message signer@tuwaio/satellite-core β‰₯ 0.5, @tuwaio/orbit-core β‰₯ 0.3, @tuwaio/orbit-solana β‰₯ 0.3, @solana/kit β‰₯ 8.2, @wallet-standard/base, features, ui, ui-registry
@tuwaio/satellite-reactL4Provider, store hook, EVM and Solana watcher components@tuwaio/satellite-core β‰₯ 0.5, react β‰₯ 19.2.3, zustand 5.x; for /evm and /solana: @tuwaio/satellite-evm or @tuwaio/satellite-solana and their libraries

Each package page shows the package README followed by a reference of every export, generated from the TypeScript source. The L4 chain packages also need the peers of @tuwaio/satellite-core and of the Orbit packages they use (for Solana, the @wallet-standard packages of @tuwaio/orbit-solana); the commands below install them.


πŸ’Ύ Installation

Install the core package and the L4 packages your app needs:

# L3 core pnpm add @tuwaio/satellite-core @tuwaio/orbit-core zustand immer # L4 EVM pnpm add @tuwaio/satellite-evm @tuwaio/orbit-evm @wagmi/core viem # L4 Solana pnpm add @tuwaio/satellite-solana @tuwaio/orbit-solana @solana/kit @wallet-standard/base @wallet-standard/features @wallet-standard/ui @wallet-standard/ui-registry @wallet-standard/app @wallet-standard/ui-core # L4 React (add @wallet-standard/react and react-dom for @tuwaio/satellite-react/solana) pnpm add @tuwaio/satellite-react react

πŸ“š Next Steps

Last updated on