# www.dojoengine.org > Welcome to the official Dojo documentation - your comprehensive guide to building onchain games and applications. ## For AI Agents Install Dojo skills for your coding agent: ``` npx skills add dojoengine/book ``` Raw markdown source for any documentation page is available on GitHub: ``` https://raw.githubusercontent.com/dojoengine/book/main/docs/pages/{path}.md https://raw.githubusercontent.com/dojoengine/book/main/docs/pages/{path}/index.md ``` For example, the Models page at `/framework/models` has its source at: `https://raw.githubusercontent.com/dojoengine/book/main/docs/pages/framework/models/index.md` ## TOOLCHAIN FOR PROVABLE APPLICATIONS - [Welcome to Dojo](https://www.dojoengine.org/overview): A comprehensive overview of Dojo features, including core concepts, world interaction, permissions, events, and testing. - [Installation](https://www.dojoengine.org/installation): Learn how to install and set up Dojo, including prerequisites and installation methods using dojoup or asdf. - [Cairo Framework](https://www.dojoengine.org/framework): Learn about the core components of Dojo - Models, Systems, and World - and how they work together to build scalable onchain applications. - [Dojo Features Overview](https://www.dojoengine.org/features): Explore Dojo's key features including Cairo architecture, Katana sequencer, Torii indexer, Sozo CLI, client libraries, and deployment options. - [Development Setup](https://www.dojoengine.org/installation): A comprehensive guide for setting up a Dojo development environment, including prerequisites and installation steps for different operating systems. - [FAQ](https://www.dojoengine.org/faq): Find answers to common questions about Dojo, onchain games, Autonomous Worlds, and how to get involved. - [Work with Saya on Slot](https://www.dojoengine.org/toolchain/saya/slot) - [Dojo 101 Tutorial](https://www.dojoengine.org/tutorials/dojo-starter): Learn the basics of Dojo by building a simple game, including models, systems, and world state management. - [Dojo Client SDKs](https://www.dojoengine.org/client/sdk): Overview of available client SDKs for building Dojo applications - [Discord Bot connected to a Dojo World](https://www.dojoengine.org/client/sdk/rust/example): Step-by-step guide for building a Discord bot connected to a Dojo World using Rust - [Slot references to work with Dojo](https://www.dojoengine.org/toolchain/slot/reference) - [Sozo calldata format](https://www.dojoengine.org/toolchain/sozo/calldata_format): Learn how to format the calldata to ease CLI interaction with contracts using Sozo. - [Understanding Autonomous Worlds](https://www.dojoengine.org/theory/autonomous-worlds): Explore the evolution from onchain games to provable games, and learn about the key characteristics and principles of Autonomous Worlds in blockchain gaming. - [Deploy your game using Slot](https://www.dojoengine.org/tutorials/deploy-using-slot/main): Learn how to deploy your Dojo project using Slot, including authentication, configuration, and setting up a Torii indexer. - [Deploying to Sepolia and Mainnet](https://www.dojoengine.org/tutorials/deploy-to-mainnet/main): Learn how to deploy your Dojo world to Sepolia testnet or Mainnet, including RPC setup, environment configuration, and Torii indexer deployment. ## Architecture - [Execution sharding on Starknet](https://www.dojoengine.org/architecture/execution-sharding): A comprehensive guide to execution sharding on Starknet, including shard initialization, execution flow, completion detection, and concurrency management with CRDTs. - [Sovereign Rollup Using Celestia and Dojo](https://www.dojoengine.org/architecture/sovereign-rollups): Learn about implementing sovereign rollups using Celestia's data availability layer and Dojo's stack, including Katana sequencer and Saya proving service. ## Dojo Client SDKs – Dojo Documentation - [Dojo c](https://www.dojoengine.org/client/sdk/c): Low-level C bindings for building Dojo applications and SDKs - [dojo.js](https://www.dojoengine.org/client/sdk/javascript): Official JavaScript package for building Dojo applications with JavaScript and TypeScript - [Dojo.unity](https://www.dojoengine.org/client/sdk/unity): Introduction to the official Unity SDK for building Dojo-powered games - [Dojo Godot](https://www.dojoengine.org/client/sdk/godot): Integration guide for using Dojo with the Godot game engine - [Dojo Rust SDK – Dojo Documentation](https://www.dojoengine.org/client/sdk/rust): Native Rust integration for building Dojo applications with Rust - [Dojo Telegram Integration – Dojo Documentation](https://www.dojoengine.org/client/sdk/telegram): Guide for building Telegram applications with Dojo and Cartridge Controller - [Dojo Discord](https://www.dojoengine.org/client/sdk/discord): Guide for integrating Dojo with Discord bots and applications ## dojo.js - [Getting Started](https://www.dojoengine.org/client/sdk/javascript/get-started): Step-by-step guide for setting up and using the Dojo JavaScript SDK in your projects - [Dojo SDK: Build onchain faster](https://www.dojoengine.org/client/sdk/javascript/overview): Comprehensive guide to using the Dojo SDK for building onchain applications - [Query your entities](https://www.dojoengine.org/client/sdk/javascript/query-your-entities): Guide to using the QueryBuilder for fetching and filtering entities in Dojo applications ## Dojo.unity - [Getting Started](https://www.dojoengine.org/client/sdk/unity/get-started): Complete guide to setting up, configuring, and building games with the Dojo Unity SDK - [Dojo Unity Concepts](https://www.dojoengine.org/client/sdk/unity/important-concepts): Core concepts and components for building games with the Dojo Unity SDK - [Example with Dojo Starter and dojo.unity](https://www.dojoengine.org/client/sdk/unity/example): Step-by-step guide for running the example project using Dojo Starter and dojo.unity - [Common problems and solutions](https://www.dojoengine.org/client/sdk/unity/common-problems) ## Cairo Framework - [Authorization of Models](https://www.dojoengine.org/framework/world/permissions): Guide to configuring and managing authorization for model access in Dojo worlds - [Config](https://www.dojoengine.org/framework/configuration): Learn how to configure your Dojo project using Scarb.toml and profile-specific configuration files for different environments. - [Testing](https://www.dojoengine.org/framework/testing): Learn how to write and run unit tests and integration tests for your Dojo smart contracts and models. - [Cairo Testing Cheat Codes](https://www.dojoengine.org/framework/testing/cheat-codes): A comprehensive guide to using Cairo testing cheat codes for manipulating execution context in contract tests. - [World Contract](https://www.dojoengine.org/framework/world): Overview of the World contract, the central database for managing models and systems in Dojo - [Models](https://www.dojoengine.org/framework/models): Learn about Dojo models, their role in data storage, key attributes, and best practices for model design and upgrades. ## Models - [Introspection](https://www.dojoengine.org/framework/models/introspection): Learn about Dojo's model introspection system, including how to implement the Introspect trait and handle custom types. - [Upgrades](https://www.dojoengine.org/framework/models/upgrades): Learn how to upgrade models in Dojo. - [Entities in Dojo](https://www.dojoengine.org/framework/models/entities): Understand how entities work in Dojo's ECS architecture and how they relate to models through primary keys. - [Enum](https://www.dojoengine.org/framework/models/enum): Learn how to use enums in Dojo for game state management, including trait implementations and best practices. ## Dojo World - [World API](https://www.dojoengine.org/framework/world/api): Complete reference for the Dojo World API, including model operations and event handling - [Metadata](https://www.dojoengine.org/framework/world/metadata): Guide to configuring and managing metadata for Dojo worlds and resources - [Systems](https://www.dojoengine.org/framework/world/systems): Understanding and implementing systems in Dojo contracts for world state management - [Events](https://www.dojoengine.org/framework/world/events): Understanding and working with events in Dojo worlds, including custom events and core world events ## Libraries - [Alexandria: Cairo Standard Library](https://www.dojoengine.org/libraries/alexandria): Community-maintained standard library for Cairo 1.0, providing algorithms and data structures - [Origami: Game Development Primitives](https://www.dojoengine.org/libraries/origami): Collection of essential primitives and libraries for building onchain games with Dojo ## Toolchain - [Katana](https://www.dojoengine.org/toolchain/katana): Overview of Katana, a high-performance Starknet sequencer designed for both local development and production deployments, featuring JSON-RPC support and cross-layer communication. - [Torii](https://www.dojoengine.org/toolchain/torii): Overview of Torii, an automatic indexer and client for Dojo worlds, featuring GraphQL and gRPC APIs for efficient world state management. - [Sozo](https://www.dojoengine.org/toolchain/sozo): Sozo is a powerful all-in-one tool for managing your Dojo projects. - [Saya](https://www.dojoengine.org/toolchain/saya): Saya is the settlement orchestrator for Katana to build rollups on Starknet and more. ## Katana - [Katana CLI](https://www.dojoengine.org/toolchain/katana/cli): Katana CLI reference. - [Forking](https://www.dojoengine.org/toolchain/katana/forking): Interact with the state of another Starknet network as if it were a local network. - [Mining Modes](https://www.dojoengine.org/toolchain/katana/mining): Mining modes determine how frequent blocks are produced. - [Execution Engines](https://www.dojoengine.org/toolchain/katana/execution): Execution engines determine how transactions are executed. - [Genesis Configuration](https://www.dojoengine.org/toolchain/katana/genesis): Guide to configuring the initial state of your Katana blockchain network, including token setup, account allocation, and smart contract deployment. - [JSON-RPC](https://www.dojoengine.org/toolchain/katana/rpc): The JSON-RPC servers supported by Katana. - [Storage Modes](https://www.dojoengine.org/toolchain/katana/storage): Storage modes determine how data is stored in the database. - [Transaction types](https://www.dojoengine.org/toolchain/katana/transactions): List the transaction types supported by Katana. - [Interact with Katana on Starknet](https://www.dojoengine.org/toolchain/katana/interact): A tutorial where we'll guide you through deploying a raw cairo smart using katana as a local devnet. In order to accomplish this, we have to install the following tools. - [Messaging](https://www.dojoengine.org/toolchain/katana/messaging): Guide to Katana's cross-layer messaging capabilities, including Ethereum and experimental Starknet messaging services configuration and implementation. - [Katana configuration file](https://www.dojoengine.org/toolchain/katana/config_file): Comprehensive guide to configuring Katana using TOML configuration files, including server, Starknet, gas oracle, forking, and development options. ## Katana CLI reference - [katana](https://www.dojoengine.org/toolchain/katana/cli/katana): Dojo | A Toolchain for Building Provable Games and Applications - [db](https://www.dojoengine.org/toolchain/katana/cli/db/): Dojo | A Toolchain for Building Provable Games and Applications - [completions](https://www.dojoengine.org/toolchain/katana/cli/completions) ## JSON-RPC - [Starknet](https://www.dojoengine.org/toolchain/katana/rpc/starknet): The Starknet RPC specification. - [Katana](https://www.dojoengine.org/toolchain/katana/rpc/katana): Endpoint specific to Katana usage. - [Torii](https://www.dojoengine.org/toolchain/katana/rpc/torii): Endpoint specific to optimizing data fetch for the Torii indexer. - [Dev](https://www.dojoengine.org/toolchain/katana/rpc/dev): Endpoint specific to development usage. ## Slot - [Logs command](https://www.dojoengine.org/toolchain/slot/deployment-commands/logs): Display logs from a Slot deployment. - [Create command](https://www.dojoengine.org/toolchain/slot/deployment-commands/create): Create a new Slot deployment. - [Delete command](https://www.dojoengine.org/toolchain/slot/deployment-commands/delete): Delete a Slot deployment. - [Update command](https://www.dojoengine.org/toolchain/slot/deployment-commands/update): Update a Slot deployment. - [Describe command](https://www.dojoengine.org/toolchain/slot/deployment-commands/describe): Describe a Slot deployment. - [List command](https://www.dojoengine.org/toolchain/slot/deployment-commands/list): List all Slot deployments. ## Sozo - [Offline option](https://www.dojoengine.org/toolchain/sozo/common-options/offline): Dojo | A Toolchain for Building Provable Games and Applications - [Profile option](https://www.dojoengine.org/toolchain/sozo/common-options/profile): Dojo | A Toolchain for Building Provable Games and Applications - [Init command](https://www.dojoengine.org/toolchain/sozo/project-commands/init): Initialize a new Dojo project in one command. - [Build command](https://www.dojoengine.org/toolchain/sozo/project-commands/build): Build your Dojo project. - [Clean command](https://www.dojoengine.org/toolchain/sozo/project-commands/clean): Clean your Dojo project artifcats (build and manifest files). - [Test command](https://www.dojoengine.org/toolchain/sozo/project-commands/test): Test your Dojo project. - [Migrate command](https://www.dojoengine.org/toolchain/sozo/project-commands/migrate): Declare, deploy and initialize Dojo resources onchain. - [Walnut verify command](https://www.dojoengine.org/toolchain/sozo/project-commands/walnut-verify): Verifies a Dojo project with Walnut to debug transactions. - [Hash command](https://www.dojoengine.org/toolchain/sozo/project-commands/hash): Computes or find hash for Dojo resources. ## Torii - [GraphQL in Torii](https://www.dojoengine.org/toolchain/torii/graphql): Guide to using Torii's GraphQL API, including schema definitions, queries, transactions, and pagination features. - [Torii Reference](https://www.dojoengine.org/toolchain/torii/cli): Complete reference documentation for Torii, including usage, configuration options, database setup, and command-line parameters. - [gRPC in Torii](https://www.dojoengine.org/toolchain/torii/grpc): Overview of using gRPC with Torii for efficient data fetching and entity/model event subscriptions. - [Torii configuration file](https://www.dojoengine.org/toolchain/torii/configuration): Comprehensive guide to configuring Torii using TOML configuration files, including server, relay, indexing, and event options.