> For the complete documentation index, see [llms.txt](https://opengpu-network.gitbook.io/opengpu-network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://opengpu-network.gitbook.io/opengpu-network/for-clients/publishing-sources.md).

# Publishing Sources

A Source defines the execution environment for your tasks—what Docker container to run and under what constraints.

## What's in a Source

| Component                 | Description                                                   |
| ------------------------- | ------------------------------------------------------------- |
| **Docker Compose**        | Container network configuration (YAML) for each hardware type |
| **Min payment**           | Minimum $OGPU per task                                        |
| **Max duration**          | Maximum execution time allowed                                |
| **Hardware requirements** | VRAM, RAM, compute capability                                 |
| **Delivery method**       | First Response or Manual Confirmation                         |
| **Privacy settings**      | Optional encryption for task data                             |

## Creating a Source

### Via Client App

1. Go to [client.opengpu.network](https://client.opengpu.network)
2. Connect your wallet
3. Click "Create Source"
4. Configure:
   * Upload Docker Compose configuration
   * Set payment and timing constraints
   * Choose supported hardware environments
   * Select delivery method
5. Deploy

### Via SDK

```python
source_config = {
    "name": "My-LLM-Model",
    "docker_images": {
        "nvidia": "myregistry/mymodel:cuda-latest"
    },
    "constraints": {
        "min_payment": 0.001,
        "max_duration": 3600,
        "min_vram_gb": 8
    },
    "delivery_method": "FirstResponse"
}

source = await client.sources.create(source_config)
```

## Container Configuration

Sources require Docker Compose YAML files defining your container network. You can upload separate configurations for each hardware type (CPU, NVIDIA, AMD) or use the Hugging Face Ready option for direct model integration.

Since providers execute client-provided containers, sources are subject to trust considerations. See [Staking & Security](/opengpu-network/introduction/staking-and-security.md) for how the protocol handles this.

## After Publishing

Once your Source is live:

1. Providers discover it and evaluate compatibility
2. Providers register and download your container
3. You can start publishing Tasks to it
