You specify what kind of app you want to build. Then, GPT Pilot asks clarifying questions, creates the product and technical requirements, sets up the environment, and starts coding the app step by step, like in real life, while you oversee the development process. It asks you to review each task it finishes or to help when it gets stuck. This way, GPT Pilot acts as a coder while you are a lead dev who reviews code and helps when needed.
GPT Pilot is the core technology for the VS Code extension that aims to provide the first real AI developer companion. Not just an autocomplete or a helper for PR messages but rather a real AI developer that can write full features, debug them, talk to you about issues, ask for review, etc.
📫 If you would like to get updates on future releases or just get in touch, you can add your email here. 📬
GPT Pilot aims to research how much GPT-4 can be utilized to generate fully working, production-ready apps while the developer oversees the implementation.
The main idea is that AI can write most of the code for an app (maybe 95%), but for the rest, 5%, a developer is and will be needed until we get full AGI.
I've broken down the idea behind GPT Pilot and how it works in the following blog posts:
[Part 1/3] High-level concepts + GPT Pilot workflow until the coding part
[Part 2/3] GPT Pilot coding workflow
[Part 3/3] Other important concepts and future plans (COMING UP)
https://github.com/Pythagora-io/gpt-pilot/assets/10895136/0495631b-511e-451b-93d5-8a42acf22d3d
👉 If you are using VS Code as your IDE, the easiest way to start is by downloading GPT Pilot VS Code extension. 👈
Otherwise, you can use the CLI tool.
After you have Python and (optionally) PostgreSQL installed, follow these steps:
git clone https://github.com/Pythagora-io/gpt-pilot.git
(clone the repo)cd gpt-pilot
python -m venv pilot-env
(create a virtual environment)source pilot-env/bin/activate
(or on Windows pilot-env\Scripts\activate
) (activate the virtual environment)pip install -r requirements.txt
(install the dependencies)cd pilot
mv .env.example .env
(or on Windows copy .env.example .env
) (create the .env file).env
file:
DATABASE_TYPE=postgres
)IGNORE_FOLDERS=folder1,folder2,folder3
)python db_init.py
(initialize the database)python main.py
(start GPT Pilot)After, this, you can just follow the instructions in the terminal.
All generated code will be stored in the folder workspace
inside the folder named after the app name you enter upon starting the pilot.
git clone https://github.com/Pythagora-io/gpt-pilot.git
(clone the repo)docker-compose.yml
environment variables, which can be done via docker compose config
. If you wish to use a local model, please go to https://localai.io/basics/getting_started/.~/gpt-pilot-workspace
on your machine, you can also edit this in docker-compose.yml
docker compose build
. this will build a gpt-pilot container for you.docker compose up
.port 7681
python db_init.py
(initialize the database)python main.py
(start GPT Pilot)This will start two containers, one being a new image built by the Dockerfile
and a Postgres database. The new image also has ttyd installed so that you can easily interact with gpt-pilot. Node is also installed on the image and port 3000 is exposed.
app_type
and name
If not provided, the ProductOwner will ask for these values:
app_type
is used as a hint to the LLM as to what kind of architecture, language options and conventions would apply. If not provided, prompts.prompts.ask_for_app_type()
will ask for it.
See const.common.APP_TYPES
: 'Web App', 'Script', 'Mobile App', 'Chrome Extension'
app_id
and workspace
Continue working on an existing app using app_id
python main.py app_id=<ID_OF_THE_APP>
or workspace
path:
python main.py workspace=<PATH_TO_PROJECT_WORKSPACE>
Each user can have their own workspace path for each App.
user_id
, email
, and password
These values will be saved to the User table in the DB.
python main.py user_id=me_at_work
If not specified, user_id
defaults to the OS username but can be provided explicitly if your OS username differs from your GitHub or work username. This value is used to load the App
config when the workspace
arg is provided.
If not specified email
will be parsed from ~/.gitconfig
if the file exists.
See also What's the purpose of arguments.password / User.password?
advanced
The Architect, by default, favors certain technologies, including:
If you have your own preferences, you can have a deeper conversation with the Architect.
python main.py advanced=True
step
Continue working on an existing app from a specific step
(eg: user_tasks
)
python main.py app_id=<ID_OF_THE_APP> step=<STEP_FROM_CONST_COMMON>
skip_until_dev_step
Continue working on an existing app from a specific development step
python main.py app_id=<ID_OF_THE_APP> skip_until_dev_step=<DEV_STEP>
This is basically the same as step
but during the development process. If you want to play around with gpt-pilot, this is likely the flag you will often use.
Erase all development steps previously done and continue working on an existing app from the start of development.
python main.py app_id=<ID_OF_THE_APP> skip_until_dev_step=0
theme
python main.py theme=light
python main.py theme=dark
delete_unrelated_steps
update_files_before_start
Here are a couple of example apps GPT Pilot created by itself:
A simple chat app with real-time communication
Build a simple markdown editor using HTML, CSS, and JavaScript. Allow users to input markdown text and display the formatted output in real-time.
Create a simple timer app using HTML, CSS, and JavaScript that allows users to set a countdown timer and receive an alert when the time is up.
Here are the steps GPT Pilot takes to create an app:
For more details on the roles of agents employed by GPT Pilot, please take a look at AGENTS.md
If you are interested in contributing to GPT Pilot, I would be more than happy to have you on board and also help you get started. Feel free to ping zvonimir@pythagora.ai, and I'll help you get started.
Since this is a research project, there are many areas that need to be researched on both practical and theoretical levels. We're happy to hear how the entire GPT Pilot concept can be improved. For example, maybe it would work better if we structured functional requirements differently, or maybe technical requirements need to be specified in a different way.
Other than the research, GPT Pilot needs to be debugged to work in different scenarios. For example, we realized that the quality of the code generated is very sensitive to the size of the development task. When the task is too broad, the code has too many bugs that are hard to fix, but when the development task is too narrow, GPT also seems to struggle in getting the task implemented into the existing code.
To improve GPT Pilot, we are tracking some events from which you can opt out at any time. You can read more about it here.
🌟 As an open-source tool, it would mean the world to us if you starred the GPT-pilot repo 🌟
💬 Join the Discord server to get in touch.