---
title: "Deploying Intelligent Contracts"
description: "Deploying Intelligent Contracts on GenLayer: CLI deployment, deploy scripts, network configuration, and workflow guidance."
source: https://docs.genlayer.com/developers/intelligent-contracts/deploying
last_updated: 2026-08-03
---

# Deploying Intelligent Contracts

Deploying Intelligent Contracts on GenLayer means choosing a deployment method and network for moving Python-based contracts from local development toward testnet use. This guide covers local development through testnet deployment, including CLI direct deployment, deploy scripts, network configuration, and how to use each approach effectively.

## Quick Start

Get started quickly with these essential deployment options:

  - [CLI Deployment](./deploying/cli-deployment)
    Deploy contracts directly from the command line with simple commands
  </Card>
  
  - [Deploy Scripts](./deploying/deploy-scripts)
    Use TypeScript/JavaScript scripts for complex deployment workflows
  </Card>
  
  - [Network Configuration](./deploying/network-configuration)
    Configure networks, manage settings, and understand deployment environments
  </Card>

## Deployment Approaches

GenLayer offers two primary deployment methods:

### CLI Direct Deployment
Perfect for quick deployments and simple contracts. Deploy with a single command:

```bash
genlayer deploy --contract contracts/my_contract.py --args "Hello World" 42
```

[Learn more about CLI Deployment →](./deploying/cli-deployment)

### Deploy Scripts
Ideal for complex workflows, multi-contract deployments, and testnet environments:

```typescript
export default async function main(client: GenLayerClient<any>) {
  // Deploy and configure multiple contracts
  const mainContract = await deployContract(client, "contracts/main.py", []);
  const helperContract = await deployContract(client, "contracts/helper.py", [mainContract]);
  
  await configureContracts(client, mainContract, helperContract);
}
```

[Learn more about Deploy Scripts →](./deploying/deploy-scripts)

## Networks Overview

Deploy to different networks based on your development stage:

| Network | Purpose | When to Use |
|---------|---------|-------------|
| **Localnet** | Local development | Development, debugging, initial testing |
| **Studionet** | Hosted development | Team collaboration, quick prototyping |
| **TestnetAsimov** | Infrastructure testing | Stability, scalability, and stress testing |
| **TestnetBradbury** | AI/LLM testing | Real AI workloads and intelligent contract testing |

[Explore Network Configuration →](./deploying/network-configuration)

## Development Workflow

Follow this recommended progression:

1. **Develop locally** on `localnet` with full control
2. **Test collaboratively** on `studionet` with your team  
3. **Validate thoroughly** on `testnetBradbury` in a production-like environment with real AI workloads

> **Note:**
> Start with CLI deployment for simple contracts, then graduate to deploy scripts as your projects become more complex.

## Contract Size and Packaging Notes

Intelligent Contracts are Python contracts executed by GenVM; they are not compiled to EVM bytecode. That means the usual EVM contract bytecode-size limit is not the right model when planning a GenLayer deployment.

Still keep deployed contracts reviewable and lightweight:

- Split large applications into focused Python modules or cooperating contracts instead of one generated monolith.
- Keep prompts, schemas, and fixtures concise; put bulky off-chain data behind stable URLs or content hashes when possible.
- Use deploy scripts for multi-contract or multi-step deployments so addresses and constructor arguments are recorded repeatably.
- If a contract is large because it contains mostly deterministic business logic, consider moving deterministic reads, indexing, caching, or UI-only aggregation outside consensus and only call GenLayer for decisions that require subjective or web-aware validation.

> **Note:**
> If a deployment fails with a payload-size, package, or RPC error, treat it as a tooling or network-specific limit and reduce the deployment artifact before retrying. Do not assume Solidity patterns such as diamond proxies are required unless you are separately interacting with EVM contracts.

## What's Next?

After deploying your contracts:

1. **Test Contract Functions**: Use `genlayer call` and `genlayer write` to interact with deployed contracts
2. **Monitor Transactions**: Check transaction receipts with `genlayer receipt <txId>`
3. **Build Frontend**: Integrate with your deployed contracts using [GenLayerJS](https://github.com/yeagerai/genlayer-js)
4. **Debug Issues**: Use the [Debugging Guide](./debugging) if you encounter problems

Ready to start deploying? Choose your preferred method and dive into the detailed guides!
