Key Concepts
From a developer’s perspective, before we dive any further, there are three key concepts that you need to understand1. State flows from Kernel to Periphery

Stateless app flow
2. Intents as the source
IMessageBox.sol
processIntent(IMessageBox.Intent calldata intent)
function serves as the sole entry point for any crosschain interaction performed on your app.
3. Tasks as the messenger for crosschain interactions.
IMessageBox.sol
Kernel
For any Stateless App, it has to inheritSkateApp.sol
. This abstract contract helps bootstrap most of the function calls that you need to tap into Skate and allows you to focus on building custom logic specific to your application.
processIntent()
SkateApp.sol

Stateless app execution flow
SkateApp.sol
SkateNFT.sol
Periphery
For any Stateless App, it must inherit the SkateAppPeriphery.sol contract. Since periphery contracts are designed to perform minimal peripheral activities such as transferring assets and providing lookup states derived from Skate, little development work is required here. Nonetheless, here are some key points to take note of:SkateGateway as the Main Entry Point
The SkateGateway serves as the central entry point for all interactions with the periphery app. To ensure security and proper routing of functions, periphery write functions must adopt the onlyGateway modifier. For non-EVM periphery contracts, please refer to TON section or Solana section ExampleSkateAppPeriphery.sol
Important things to take note during deployment
1. Executors need to be registered on ALL executor registries
To deploy any Stateless app, an executor registry must be specified during contract initialization. To facilitate the necessary intent execution, owners of Stateless apps must whitelist (their own) executors on Skate and all peripheral chains. This ensures that the required executors are recognized and authorized across all relevant networks.2. setChainToPeripheryContract()
The owner of Stateless apps must call the setChainToPeripheryContract function to update the mapping of chains to periphery contracts. This allows the kernel app to directly retrieve the necessary addresses during task creation.SkateApp.sol