> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ton.org/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.ton.org/feedback

```json
{
  "path": "/contract-dev/blueprint/config",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Configuring Blueprint

A [configuration file](https://github.com/ton-org/blueprint/blob/develop/src/config/Config.ts) allows you
to customize certain blueprint features.

Create a `blueprint.config.ts` file in the root of your project, and export the configuration as a named `config`;
do not use a `default` export:

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    // configuration options
};
```

The configuration supports the following options:

| Field                                                                    |                     Type/Values                     | Description                                                                              |
| ------------------------------------------------------------------------ | :-------------------------------------------------: | ---------------------------------------------------------------------------------------- |
| [`plugins`](/contract-dev/blueprint/config#plugins)                      |                      `Plugin[]`                     | Extend or customize the behavior.                                                        |
| [`network`](/contract-dev/blueprint/config#custom-network)               | `'mainnet' `<br />`'testnet'`<br />` CustomNetwork` | Specifies the target network for deployment or interaction.                              |
| `separateCompilables`                                                    |                      `boolean`                      | If `true`, `*.compile.ts` files go to `compilables/`. <br /> If `false`, to `wrappers/`. |
| [`requestTimeout`](/contract-dev/blueprint/config#request-timeouts)      |                       `number`                      | HTTP request timeout in milliseconds.                                                    |
| [`recursiveWrappers`](/contract-dev/blueprint/config#recursive-wrappers) |                      `boolean`                      | If `true`, searches `wrappers/` or `compilables/` recursively for contracts.             |
| [`manifestUrl`](/contract-dev/blueprint/config#ton-connect-manifest)     |                       `string`                      | Overrides the default TON Connect manifest URL.                                          |

## Plugins

Blueprint includes a plugin system, allowing the community to extend its functionality without modifying Blueprint’s core code.
To use plugins, add a `plugins` array to your config:

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';
import { ScaffoldPlugin } from 'blueprint-scaffold';

export const config: Config = {
    plugins: [new ScaffoldPlugin()],
};
```

This example adds the [scaffold plugin](https://github.com/1IxI1/blueprint-scaffold).

Some community-developed plugins include:

* [scaffold](https://github.com/1IxI1/blueprint-scaffold) – creates a simple DApp using the wrappers’ code.
* [misti](https://github.com/nowarp/blueprint-misti) – simplifies workflow with the [Misti](https://nowarp.github.io/tools/misti/) static analyzer.

## Custom network

A custom network can be set as the default by adding a `network` object to your configuration:

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    network: {
        endpoint: 'https://toncenter.com/api/v2/jsonRPC',
        type: 'mainnet',
        version: 'v2',
        key: <YOUR_API_KEY>,
    },
};
```

Using the `--custom` flags achieves the same result, but it can be tiresome to provide them every time.
The above configuration is equivalent to running:

```bash theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
npx blueprint run \
  --custom https://toncenter.com/api/v2/jsonRPC \
  --custom-version v2 \
  --custom-type mainnet \
  --custom-key <YOUR_API_KEY>
```

Each property of the `network` object has the same meaning as its corresponding `--custom` flag. See the `blueprint help run` for details.

## Liteclient support

Liteclient can be configured using the `network` object in your configuration:

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    network: {
        endpoint: 'https://ton.org/testnet-global.config.json', // Use https://ton.org/global.config.json for Mainnet or any custom configuration
        version: 'liteclient',
        type: 'testnet',
    }
};
```

You can also specify these parameters using CLI:

```bash theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
npx blueprint run \
  --custom https://ton.org/testnet-global.config.json \
  --custom-version liteclient \
  --custom-type testnet
```

## Request timeouts

You can configure how long HTTP requests should wait before timing out using the `requestTimeout` field.
This is useful when working with unstable or slow networks.

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    requestTimeout: 10000, // 10 seconds
};
```

## Recursive wrappers

The `recursiveWrappers` field controls whether the `wrappers` directory is searched recursively for contract configurations.

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    recursiveWrappers: true,
};
```

By default, it's set to `false`.

## TON Connect manifest

If you're using a TON Connect provider, you can override the default manifest URL by setting the `manifestUrl` field:

```typescript theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
import { Config } from '@ton/blueprint';

export const config: Config = {
    manifestUrl: 'https://yourdomain.com/custom-manifest.json',
};
```

By default, the manifest URL is:

```
https://raw.githubusercontent.com/ton-org/blueprint/main/tonconnect/manifest.json
```
