---
title: "Creating Pulumi Projects"
description: "Learn how to get started with Pulumi by creating your first Pulumi project using the Pulumi CLI in this tutorial."
url: "https://www.pulumi.com/dev/tutorials/pulumi-fundamentals/create-a-pulumi-project/"
image: "https://www.pulumi.com/assets/og/dev/tutorials/pulumi-fundamentals/create-a-pulumi-project.png"
---

# Creating Pulumi Projects

Learn how to get started with Pulumi by creating your first Pulumi project using the Pulumi CLI in this tutorial.

Infrastructure in Pulumi is organized into _projects_. In the Pulumi ecosystem,
a project represents a Pulumi _program_ that, when run, declares the desired
infrastructure for Pulumi to manage. The program has corresponding _stacks_, or
isolated, independently configurable instances of your Pulumi program. We'll
talk more about stacks later in the [Building with
Pulumi](https://www.pulumi.com/dev/tutorials/building-with-pulumi) tutorial.

## Create a directory

Each Pulumi project lives in its own directory. Create one now and change into
it by running these commands in your terminal:

```bash
$ mkdir my-first-app
$ cd my-first-app
```

Pulumi will use the directory name as your project name by default. To create an
independent project, name the directory differently.

## Initialize your project

Since a Pulumi project is just a directory with some files in it, it is possible
for you to create a new one by hand. The `pulumi new` command-line interface
(CLI) command, however, automates the process and ensures you have everything
you need, so let's use that command. The `-y` flag answers "yes" to the prompts to
create a default project:

**TypeScript**

```bash
$ pulumi new typescript -y
```

**Python**

```bash
$ pulumi new python -y
```

This command creates all of the files you need, initializes a new stack named `dev`
(an instance of the project), and installs any necessary dependencies:

**TypeScript**

```bash
Created project 'my-first-app'
# ...

Installing dependencies...
# ...

Finished installing dependencies

Your new project is ready to go! ✨

To perform an initial deployment, run 'pulumi up'
```

**Python**

```bash
Created project 'my-first-app'
# ...
Created stack 'dev'

Creating virtual environment...
# ...
Finished creating virtual environment

Updating pip, setuptools, and wheel in virtual environment...
# ...
Your new project is ready to go! ✨

To perform an initial deployment, run 'pulumi up'
```

## Inspect your new project

The basic project created by `pulumi new` is comprised of multiple files:

- `Pulumi.yaml`: your project's metadata, containing its name and language

**TypeScript**

- `index.ts`: your program's main entrypoint file
- `package.json`: your project's Node.js dependency information

**Python**

- `index.ts`: your program's main entrypoint file
- `requirements.txt`: your project's Python dependency information
- `venv`: a [virtualenv](https://pypi.org/project/virtualenv/) for your project

Open `index.ts` in your editor of choice to have a look at its contents:

```typescript
import * as pulumi from "@pulumi/pulumi";
```

```python
"""A Python Pulumi program"""

import pulumi
```

Feel free to explore the other files as well.

Now let's move on to creating your first real bit of infrastructure with Pulumi:
some Docker images!
