Introduction to Caatinga
Caatinga is a deployment orchestrator and versioned artifact manager for Stellar Soroban smart contracts.
It bridges the gap between Rust smart contract development, automated multi-contract deployment, and frontend integration.
Why Caatinga?
Developing smart contracts on Stellar Soroban involves multiple steps:
- Compiling Rust crates into optimized
.wasmbytecode binaries. - Managing network configurations and secret keys or identity aliases.
- Deploying contracts to Stellar networks (Local Sandbox, Testnet, Mainnet).
- Extracting deployed Contract IDs and recording WASM hashes.
- Generating type-safe TypeScript bindings for web applications.
- Invoking and testing contract functions on-chain.
Without an orchestrator, developers often write custom scripts or manually copy contract IDs into .env files. Caatinga automates this entire pipeline into a single declarative workflow:
Initialize Project
Run
npx ctg init my-dappto scaffold a project withcaatinga.config.ts.Build Contracts
Compile Rust contracts using
npx ctg build.Deploy & Graph Resolution
Deploy contracts in topological dependency order using
npx ctg deploy.Generate Bindings
Instantly produce TypeScript client bindings via
npx ctg generate.Invoke & Read
Interact with your contract state using
ctg invokeandctg read.
Core Mental Model
Caatinga operates on two source of truth files in your workspace:
caatinga.config.ts: Declarative configuration defining contracts, dependencies, network endpoints, and post-deploy hooks.caatinga.artifacts.json: Deterministic record storing contract IDs, WASM hashes, deployment timestamps, network states, and upgrade history.
Never edit caatinga.artifacts.json manually. Caatinga updates this file atomically during builds and deployments.
Using Caatinga with AI agents
Caatinga ships its own Claude Code skill — ctg-skills, listed as a community skill on skills.stellar.org — that teaches an agent Caatinga’s hard rules directly: no raw stellar CLI deploys, no manual caatinga.artifacts.json or generated-binding edits, and --source as an identity alias only, never a raw key.
/plugin marketplace add Dione-b/caatinga-skill
/plugin install caatinga-skill@caatinga-skill
Next up: Check the Requirements or follow the Installation guide.