> For the complete documentation index, see [llms.txt](https://docs.ellipsis-drive.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ellipsis-drive.com/extra/creating-a-process.md).

# Creating a process

A process allows you to execute a [Python script](https://ellipsis-package.readthedocs.io/en/latest/) on Ellipsis Drive using the Information Factory compute environment.

Processes are deployed via a Git repository and executed on server side.

***

#### Execution model

To benefit from server side performance optimizations, data must be accessed and written using the Ellipsis Python package. An example script can be found [here](https://github.com/ellipsis-drive/process-example/blob/main/chlorophyl.py).

This enables optimized data streaming when the process runs server side instead of client side.

***

#### Deployment

A process is defined as a Python script stored in a Git repository.

The repository must include:

* the main script
* [a requirements.txt file](https://github.com/ellipsis-drive/process-example/blob/main/requirements.txt) in the root directory

To add a process:

1.) Click New → More → New Process

<figure><img src="https://4037685487-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mif-_hRu2c99bPrpzIH%2Fuploads%2FHuRF4KrGsGe9S6ejuZCw%2Fafbeelding.png?alt=media&amp;token=bebe6914-4a3d-4f9a-a76c-d08e6ea88871" alt=""><figcaption></figcaption></figure>

2.) Provide the Git URL and specify the script path inside the repository

<figure><img src="https://4037685487-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mif-_hRu2c99bPrpzIH%2Fuploads%2FU08c81TAbKIMtXey7BBk%2Fafbeelding.png?alt=media&amp;token=7164f367-e5bb-448a-97b0-7184b08ccd81" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Once deployed, the latest version of the Git repository is always used at runtime, ensuring you do not need to re-add your process when you update it.
{% endhint %}

***

#### Parameters

Your script can take free parameters that can be provided whenever the process is run.

These parameters are:

* defined when creating the process
* provided by the user at execution time
* passed to the script as command-line arguments

{% hint style="info" %}
**Each parameter requires:**

* name
* description
* example value
  {% endhint %}

<figure><img src="https://4037685487-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mif-_hRu2c99bPrpzIH%2Fuploads%2FAwY1kDxPEjDC15UFYMyS%2Fafbeelding.png?alt=media&amp;token=2b5c770f-574a-4fe2-8a9e-6fec1214d610" alt=""><figcaption></figcaption></figure>

Example usage in script:

```
pathId = sys.argv[1]
```

All parameters are passed as strings and must be parsed accordingly to an appropriate format.
