Dojo Deployment
Deploy your Dojo world to local Katana sequencer, Sepolia testnet, or Starknet mainnet.
When to Use This Skill
- •"Deploy my world to Katana"
- •"Start Katana sequencer"
- •"Deploy to Sepolia testnet"
- •"Deploy to mainnet"
What This Skill Does
Handles deployment workflows:
- •Start and configure Katana sequencer
- •Deploy worlds with
sozo migrate - •Verify deployments
- •Manage world addresses
- •Configure network settings
Quick Start
Local development:
"Start Katana and deploy my world"
Testnet deployment:
"Deploy my world to Sepolia"
Mainnet deployment:
"Deploy to Starknet mainnet"
Deployment Workflow
1. Local Development (Katana)
Start Katana:
katana --dev --dev.no-fee
This launches Katana with:
- •RPC server at
http://localhost:5050 - •10 pre-funded accounts
- •Instant block mining
- •Gas fees disabled
Build and deploy:
sozo build && sozo migrate
Verify:
# Preview deployment sozo inspect # Execute a system sozo execute dojo_starter-actions spawn
2. Testnet Deployment (Sepolia)
Configure profile:
# dojo_sepolia.toml [world] name = "My Game" seed = "my-game-sepolia" [env] rpc_url = "https://api.cartridge.gg/x/starknet/sepolia" account_address = "YOUR_ACCOUNT" private_key = "YOUR_KEY" [namespace] default = "my_game" [writers] "my_game" = ["my_game-actions"]
Deploy:
sozo build --profile sepolia sozo migrate --profile sepolia
3. Mainnet Deployment
Configure profile:
# dojo_mainnet.toml [world] name = "My Game" seed = "my-game-mainnet" [env] rpc_url = "https://api.cartridge.gg/x/starknet/mainnet" account_address = "YOUR_ACCOUNT" keystore_path = "~/.starknet_accounts/mainnet.json" [namespace] default = "my_game" [writers] "my_game" = ["my_game-actions"]
Deploy:
sozo build --profile mainnet sozo migrate --profile mainnet
Katana Configuration
Quick Start (Development)
katana --dev --dev.no-fee
Mining Modes
Instant (default):
katana --dev --dev.no-fee
Mines block immediately on transaction.
Interval:
katana --block-time 10000
Mines block every 10 seconds.
Persistent Storage
katana --db-dir ./katana-db
Network Forking
Fork Starknet mainnet:
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet
Fork at specific block:
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet --fork.block 1000000
Sozo Commands
Build
sozo build
Inspect (Preview Deployment)
# See what will be deployed/changed sozo inspect
Migrate (Deploy)
# Deploy with default dev profile sozo migrate # Deploy with specific profile sozo migrate --profile sepolia
Execute System
# Call a system function sozo execute <CONTRACT_TAG> <FUNCTION> [ARGS...] # Example: spawn sozo execute dojo_starter-actions spawn # Example: move with argument sozo execute dojo_starter-actions move 1
Deployment Checklist
Pre-Deployment
- • All tests passing (
sozo test) - • Code reviewed (
dojo-reviewskill) - • Configuration set (
dojo-configskill) - • Target network funded (for gas)
- • Private key secured (not committed)
Deployment
- • Build succeeds (
sozo build) - • Inspect looks correct (
sozo inspect) - • Migration succeeds (
sozo migrate) - • Manifest generated (check
manifest_<profile>.json) - • World address recorded
Post-Deployment
- • Deployment verified (execute systems, query models)
- • Torii indexer configured (
dojo-indexerskill) - • Client connected (
dojo-clientskill) - • World permissions verified (
dojo-worldskill)
Development Workflow
Terminal 1: Start Katana
katana --dev --dev.no-fee
Terminal 2: Build and deploy
sozo build && sozo migrate
Terminal 3: Start Torii
torii --world <WORLD_ADDRESS> --indexing.controllers
Sample Deploy Script
This skill includes deploy_local.sh, a template script for automated local development.
Copy it into your project's scripts/ directory and customize it for your needs.
Setup:
- •Copy the script to your project:
cp deploy_local.sh your-project/scripts/ - •Adjust configuration variables (profile name, URLs) as needed
- •Make executable:
chmod +x scripts/deploy_local.sh
Run:
# Default dev profile ./scripts/deploy_local.sh # Specific profile PROFILE=staging ./scripts/deploy_local.sh
What it does:
- •Checks for required tools (katana, sozo, torii, jq)
- •Starts Katana with health checking
- •Builds and deploys contracts
- •Extracts addresses from the manifest
- •Starts Torii indexer
- •Cleans up all services on exit (Ctrl+C)
Customization points:
- •
PROFILE: Default build/deploy profile - •
RPC_URL: Katana endpoint (default:http://localhost:5050) - •
TORII_URL: Torii endpoint (default:http://localhost:8080) - •Add project-specific post-deploy steps (e.g., seeding data, running migrations)
Slot Deployment (Remote)
Slot provides hosted Katana and Torii instances.
Authentication
slot auth login
Katana on Slot
Optimistic mode (simplest):
slot deployments create <PROJECT_NAME> katana --optimistic
With configuration file:
slot deployments create <PROJECT_NAME> katana --config katana.toml
See the Katana configuration guide for TOML options.
Torii on Slot
Create a torii.toml with your world address and RPC endpoint, then deploy:
slot deployments create <PROJECT_NAME> torii --config torii.toml --version <DOJO_VERSION>
See the dojo-indexer skill for full Torii configuration details.
Useful Commands
# Stream logs slot deployments logs <PROJECT_NAME> katana -f slot deployments logs <PROJECT_NAME> torii -f # Delete a deployment slot deployments delete <PROJECT_NAME> katana slot deployments delete <PROJECT_NAME> torii
Manifest File
After deployment, manifest_<profile>.json contains:
- •World address
- •Model addresses and class hashes
- •System/contract addresses
- •ABI information
Example:
{
"world": {
"address": "0x...",
"class_hash": "0x..."
},
"models": [
{
"tag": "dojo_starter-Position",
"address": "0x..."
}
],
"contracts": [
{
"tag": "dojo_starter-actions",
"address": "0x..."
}
]
}
Troubleshooting
"Account not found"
- •Ensure account is deployed on target network
- •Check account address in profile config
- •Verify account has funds for gas
"Class hash mismatch"
- •Run
sozo buildbefore migrating - •Check Scarb.toml for correct Dojo version
- •Clear
target/and rebuild
"Insufficient funds"
- •Fund account with ETH/STRK for gas
- •Use Sepolia faucet: https://faucet.starknet.io
"Profile not found"
- •Ensure
dojo_<profile>.tomlexists - •Check spelling matches the
--profileflag
Network Information
Katana (Local)
- •RPC:
http://localhost:5050 - •Pre-funded accounts printed on startup
Sepolia (Testnet)
- •RPC:
https://api.cartridge.gg/x/starknet/sepolia - •Faucet: https://faucet.starknet.io
- •Explorer: https://sepolia.voyager.online
Mainnet
- •RPC:
https://api.cartridge.gg/x/starknet/mainnet - •Explorer: https://voyager.online
Next Steps
After deployment:
- •Use
dojo-indexerskill to set up Torii - •Use
dojo-clientskill to connect frontend - •Use
dojo-worldskill to configure permissions - •Use
dojo-migrateskill for updates
Related Skills
- •dojo-config: Configure deployment profiles
- •dojo-migrate: Update deployments
- •dojo-indexer: Index deployed world
- •dojo-client: Connect clients to deployment
- •dojo-world: Manage world permissions