Dojo Configuration Management
Manage Dojo project configuration including Scarb.toml, deployment profiles, and world settings.
When to Use This Skill
"Configure Dojo for my project"
"Update Scarb.toml dependencies"
"Set up deployment profiles"
"Configure world settings"
What This Skill Does
Manages configuration files:
Scarb.toml
- Package manifest and dependencies
dojo_dev.toml
- Local development profile
dojo_
Use default 'dev' profile (dojo_dev.toml)
sozo build sozo migrate
Use specific profile (dojo_mainnet.toml)
sozo build
--profile
mainnet
sozo migrate
--profile
mainnet
Profile file naming:
dojo_
Human-readable name
description
"A provable game"
Description
seed
"my-unique-seed"
Unique seed for address generation
cover_uri
"ipfs://Qm..."
Cover image (ipfs:// or file://)
icon_uri
"ipfs://Qm..."
Icon image
[ world.socials ] x = "https://x.com/mygame" discord = "https://discord.gg/mygame" Environment Settings [ env ] rpc_url = "http://localhost:5050/" account_address = "0x127fd..." private_key = "0xc5b2f..."
Or use keystore for production:
keystore_path = "/path/to/keystore"
world_address
"0x077c0..."
Set after first deployment
Namespace Configuration Namespaces organize your resources: [ namespace ] default = "my_game"
Default namespace for all resources
Optional: Map specific resources to namespaces
mappings
{
"weapons"
=
[
"Sword"
,
"Bow"
]
,
"characters"
=
[
"Player"
,
"Enemy"
]
}
Resources get tagged as
Namespace-level: actions can write to all resources in my_game
"my_game"
[ "my_game-actions" ]
Resource-specific: movement can only write to Position
"my_game-Position"
[ "my_game-movement" ] [ owners ]
Namespace ownership
"my_game"
[ "my_game-admin" ] Dependencies Add Dojo Dependencies [ dependencies ] starknet = "2.12.2" dojo = "1.7.1" [ dev-dependencies ] cairo_test = "2.12.2" dojo_cairo_test = "1.7.1" Add External Libraries Origami (game utilities): [ dependencies ] origami_token = { git = "https://github.com/dojoengine/origami" , tag = "v1.0.0" } Alexandria (math utilities): [ dependencies ] alexandria_math = { git = "https://github.com/keep-starknet-strange/alexandria" } External Contracts When using external libraries with models: [ [ target.starknet-contract ] ] build-external-contracts = [ "dojo::world::world_contract::world" , "armory::models::m_Flatbow" ,
Format: ::::m_
] Environment Examples Development (dojo_dev.toml) [ world ] name = "My Game (Dev)" seed = "dev-my-game" [ env ] rpc_url = "http://localhost:5050/" account_address = "0x127fd..." private_key = "0xc5b2f..." [ namespace ] default = "dev" [ writers ] "dev" = [ "dev-actions" ] Production (dojo_mainnet.toml) [ world ] name = "My Game" seed = "prod-my-game" description = "Production deployment" cover_uri = "ipfs://YourCoverHash" icon_uri = "ipfs://YourIconHash" [ env ] rpc_url = "https://api.cartridge.gg/x/starknet/mainnet" account_address = "0x..." keystore_path = "~/.starknet_accounts/mainnet.json" [ namespace ] default = "game" [ writers ] "game" = [ "game-actions" ] [ owners ] "game" = [ "game-admin" ] Security Protecting Secrets Never commit private keys. Use .gitignore :
Ignore sensitive configs
dojo_mainnet.toml dojo_*_secrets.toml
Keep development config
!dojo_dev.toml Use keystore for production: [ env ] keystore_path = "~/.starknet_accounts/mainnet.json"
Instead of: private_key = "0x..."
Troubleshooting
"Profile not found":
Ensure
dojo_