Skip to main content
Using the prefect-cloud CLI, you can deploy any Python script that’s available in a GitHub repository and run it on a schedule in the cloud for free in a few simple steps.

Prerequisites

You’ll need the following to get started with Prefect Cloud: Next, open a terminal and execute the commands in the following steps to deploy and run your script in Prefect Cloud.
1

Log in to Prefect Cloud

uvx prefect-cloud login
2

Connect to GitHub

uvx prefect-cloud github setup
3

Deploy your workflow

Select a function in your script as the entrypoint for your workflow, and provide the path to it from the root of your repository. Your entrypoint should be the “main” function of your script — the function that’s called first when you run your script locally.
uvx prefect-cloud deploy <path/to/script.py:entrypoint_function_name> \
    --from <github-account>/<repo-name> \
    --name <deployment_name>
prefect-cloud deploy has a few helpful options, like adding Python dependencies to your deployment and setting the default parameter values for your entrypoint function.
Add individual Python dependencies by including their package name.
uvx prefect-cloud deploy ... --with pandas --with numpy
Include dependencies from a requirements file by providing the path to the file from the root of your repository.
uvx prefect-cloud deploy ... --with-requirements </path/to/requirements.txt>
If your entrypoint function has parameters, you can assign the default values used by your deployment.
def hello(name: str, company: str):
    print(f"Hello {name}, welcome to {company}!")
uvx prefect-cloud deploy ... --parameter name=Kevin --parameter company=Prefect
Include key-value pairs that will be available as environment variables when your deployment runs.
uvx prefect-cloud deploy ... --env KEY=VALUE --env KEY2=VALUE2
Store secrets in Secret Prefect blocks that will be loaded as environment variables by name reference when your deployment runs. Blocks are encrypted, helping avoid storing secret values as plaintext properties on your deployment.
uvx prefect-cloud deploy ... --secret API_KEY=actual-secret-value --secret DB_PASSWORD=another-secret-value
Reference existing Secret blocks by name.
uvx prefect-cloud deploy ... --secret API_KEY="{existing-api-key-block}" --secret DB_PASSWORD="{my-database-password}"
Select the version of Python to run your script on. Supported Python versions include 3.9, 3.10, 3.11, and 3.12.
uvx prefect-cloud deploy ... --with-python 3.12
If you don’t have a script to deploy, you can use this example:
uvx prefect-cloud deploy examples/hello.py:hello_world \
    --from PrefectHQ/prefect-cloud \
    --name github_quickstart
4

Run your deployment

uvx prefect-cloud run <flow_name>/<deployment_name>
You can override the inputs to your entrypoint function for ad-hoc runs of your deployment.
def hello(name: str, company: str):
    print(f"Hello {name}, welcome to {company}!")
uvx prefect-cloud run ... --parameter name=Kevin --parameter company=Prefect
Tail your run’s state changes and log outputs directly in your terminal.
uvx prefect-cloud run ... --follow
If using the example script, run:
uvx prefect-cloud run hello_world/github_quickstart
5

Schedule your deployment

Prefect Cloud can run your deployment on a schedule if you provide a cron expression like 0 * * * * for hourly runs or 0 0 * * * for daily runs at midnight.
uvx prefect-cloud schedule <flow_name>/<deployment_name> <SCHEDULE>
Prefect deployments can have multiple schedules, each with their own default parameter values.
def check_restaurant_reservations(restaurant: str):
    opentable_api_tables_checker(restaurant)
# Hawksmoor reservations update at 12pm
uvx prefect-cloud schedule ... "0 12 * * *" --parameter restaurant="Hawksmoor"
# Carbone reservations update at 4pm
uvx prefect-cloud schedule ... "0 16 * * *" --parameter restaurant="Carbone" 
If using the example script, run the following command to schedule your deployment to run hourly:
uvx prefect-cloud schedule hello_world/github_quickstart "0 * * * *"
6

View your runs in Prefect Cloud

Visit the Prefect Cloud dashboard to see the status of your runs.

Cleanup

To remove schedules from your deployment, run:
uvx prefect-cloud unschedule <flow_name>/<deployment_name>
To delete a deployment, run:
uvx prefect-cloud delete <flow_name>/<deployment_name>

Next steps

Prefect offers much more than simple code deployment and scheduling. Install the prefect Python package in your development environment, and explore the following topics: