TUWA Orbit is the foundational baseline layer of the TUWA Web3 frontend stack, providing framework-agnostic modules for low-level multi-chain communication. It acts as the headless, logic-only connector layer that sits below any visual kits (such as Nova UI Kit) or transaction lifecycle tracking engines (such as Pulsar / Quasar), granting developers complete architectural control and absolute application sovereignty.
Orbit enforces a strict multi-chain abstraction through type-safe primitives, ensuring zero vendor lock-in and a complete rejection of legacy dependencies like ethers.js or web3.js in favor of high-performance modern libraries: viem, wagmi, and gill.
The monorepo structure segregates core cross-chain logic from concrete blockchain execution environments:
@tuwaio/orbit-core: The brain of the connector layer. Contains shared interfaces, common enums (OrbitAdapter,BaseAdapter), and type-safe primitives for connection persistence andlocalStoragestate helper utilities.
@tuwaio/orbit-evm: Concrete implementation of low-level EVM-specific communication primitives. Built strictly on top ofviemand@wagmi/core.@tuwaio/orbit-solana: Concrete implementation of low-level Solana-specific communication primitives and RPC client caching. Powered strictly bygilland standard@wallet-standardspecifications.
orbit/
├── apps/
│ └── docs/ # Nextra-based technical documentation & portal
├── packages/
│ ├── orbit-core/ # L1: Shared types, validations, and storage helpers
│ ├── orbit-evm/ # L2: Viem & Wagmi provider wrappers
│ └── orbit-solana/ # L2: Gill & Wallet-Standard adapters
Orbit is modular. Install the L1 core package and layer the L2 chain platforms depending on target networks:
# L1 Core
pnpm add @tuwaio/orbit-core
# L2 EVM Platform
pnpm add @tuwaio/orbit-evm @wagmi/core viem
# L2 Solana Platform
pnpm add @tuwaio/orbit-solana gill @wallet-standard/app @wallet-standard/ui-core @wallet-standard/ui-registryIntegrate cross-chain operations through the common BaseAdapter interface:
import { OrbitAdapter, selectAdapterByKey } from '@tuwaio/orbit-core';
// Configure adapters with low-level primitives
const adapters = [
{ key: OrbitAdapter.EVM, getChainName: () => 'Ethereum' /* ... */ },
{ key: OrbitAdapter.SOLANA, getChainName: () => 'Solana' /* ... */ },
];
// Dynamically resolve target primitive execution context
const activeAdapter = selectAdapterByKey({
adapterKey: OrbitAdapter.EVM,
adapter: adapters,
});
if (activeAdapter) {
console.log('Active Execution Target:', activeAdapter.getChainName());
}Please review our ecosystem Contribution Guidelines.
Licensed under the Apache-2.0 License. See the LICENSE file for details.
