Deploy Dojo worlds to local Katana, testnet, or mainnet. Configure Katana sequencer and manage deployments with sozo. Use when deploying your game or starting local development environment.
Deploy your Dojo world to local Katana sequencer, Sepolia testnet, or Starknet mainnet.
Handles deployment workflows:
sozo migrateLocal development:
"Start Katana and deploy my world"
Testnet deployment:
"Deploy my world to Sepolia"
Mainnet deployment:
"Deploy to Starknet mainnet"
Start Katana:
katana --dev --dev.no-fee
This launches Katana with:
http://localhost:5050Build and deploy:
sozo build && sozo migrate
Verify:
# Preview deployment
sozo inspect
# Execute a system
sozo execute dojo_starter-actions spawn
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
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 --dev --dev.no-fee
Instant (default):
katana --dev --dev.no-fee
Mines block immediately on transaction.
Interval:
katana --block-time 10000
Mines block every 10 seconds.
katana --db-dir ./katana-db
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 build
# See what will be deployed/changed
sozo inspect
# Deploy with default dev profile
sozo migrate
# Deploy with specific profile
sozo migrate --profile sepolia
# 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
sozo test)dojo-review skill)dojo-config skill)sozo build)sozo inspect)sozo migrate)manifest_<profile>.json)dojo-indexer skill)dojo-client skill)dojo-world skill)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
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:
cp deploy_local.sh your-project/scripts/chmod +x scripts/deploy_local.shRun:
# Default dev profile
./scripts/deploy_local.sh
# Specific profile
PROFILE=staging ./scripts/deploy_local.sh
What it does:
Customization points:
PROFILE: Default build/deploy profileRPC_URL: Katana endpoint (default: http://localhost:5050)TORII_URL: Torii endpoint (default: http://localhost:8080)Slot provides hosted Katana and Torii instances.
slot auth login
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.
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.
# 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
After deployment, manifest_<profile>.json contains:
Example:
{
"world": {
"address": "0x...",
"class_hash": "0x..."
},
"models": [
{
"tag": "dojo_starter-Position",
"address": "0x..."
}
],
"contracts": [
{
"tag": "dojo_starter-actions",
"address": "0x..."
}
]
}
sozo build before migratingtarget/ and rebuilddojo_<profile>.toml exists--profile flaghttp://localhost:5050https://api.cartridge.gg/x/starknet/sepoliahttps://api.cartridge.gg/x/starknet/mainnetAfter deployment:
dojo-indexer skill to set up Toriidojo-client skill to connect frontenddojo-world skill to configure permissionsdojo-migrate skill for updates