smol-developer: Adapt-or Get left Behind
Tags: openai, smoldeveloper, python, ai
Published: 2023-05-29 07:47:02

The innovative solution that combines cutting-edge technology and seamless remote collaboration to revolutionize the way we code. Say goodbye to physical limitations and hello to a world of endless possibilities. In this blog, we delve into the incredible features and functionalities of Smol-Developer, exploring how this virtual coding companion will transform your programming experience. Stay tuned as we uncover the undeniable advantages of having your own remote coding genius at your fingertips. Let's dive into the future of coding with Smol-Developer!

**What is Smol Developer?
**
Smol Developer, also known as your junior developer, is an AI-powered tool that helps you scaffold an entire codebase based on a product specification. Unlike rigid starter templates like create-react-app or create-nextjs-app, Smol-Developer is like a "create-anything-app" that adapts to your specific needs.

**The key features of Smol Developer include:
**
Human-Centric Approach: Smol Developer is designed to be helpful, harmless, and honest. It complements your coding process by providing assistance without overshadowing your skills.

**Coherent Whole Program Synthesis**: With Smol Developer, you can generate an entire codebase by writing a basic prompt. The generated code is then read and run by you, allowing you to make additions, identify errors, and provide feedback for improvement.

**Customizable and Understandable**: The Smol Developer codebase is kept simple and compact, with less than 200 lines of Python and prompts. This makes it easy for anyone, including college students and beginners, to comprehend and customize according to their requirements.

**How does Smol Developer work?**
To understand how Smol Developer functions, let's walk through a basic workflow:

Write a Prompt: Start by writing a simple prompt that describes the app you want to build. For example, you can specify that you want to create a Chrome extension that performs certain actions.

Code Generation: Using the main.py file, Smol Developer generates the code based on your prompt.

**Manual Review and Iteration**: You can review the generated code, run it, and manually identify any errors. If you encounter any underspecified parts or issues, you can add more details to the prompt.

**Debugging Assistance**: Smol Developer offers a debugger.py file that reads the entire codebase and provides specific suggestions for fixing errors. This makes the debugging process more efficient and enjoyable.

**Iterative Loop**: Repeat the process of refining the prompt, generating code, reviewing, and debugging until you're satisfied with the results. Smol Developer helps you throughout this loop, ensuring you're in control of the codebase.

Not No Code, Not Low Code, but Something in Between

Smol Developer represents a new paradigm in software development. It's not a no-code or low-code solution but rather a "third thing" that combines technical expertise with automated code generation. You still need to have technical knowledge, but Smol Developer assists you in scaffolding the codebase, saving you time and effort.

**Examples and Resources**

Smol-Developer provides various examples and resources to get you started:

**Short Intro Video Demo**: Introducing smog-dev-human-centric & coherent whole program synthesis: 
Watch a 6-minute video demo that showcases the process of going from a prompt to building a full-fledged Chrome extension using Smol Developer.

**Major Forks and Alternatives**: Smol Developer has been implemented in different languages and stacks. Explore the alternative implementations and deploy strategies, such as the JS/TS variant, the C#/Dotnet implementation, and the Golang version.

**Smol Plugin Github Repo**: Discover the smol-plugin, which allows you to generate OpenAI plugins by specifying your API in markdown using Smol-Developer-plugin repo.This is amazing!

## Install and Getting Started Below :) 

 Prep:

- Open Github repo in another window
- Visual Studio Code or IDE 
- OpenAI API Key
- Anthropic API-Key Optional 

## Lets Code

- Open Visual Studio Code
- Open terminal in VS Code 
- cd into your desktop or project folder 
- Navigate to the project GitHub repo and find the GIT CLONE command
- git clone https://github.com/smol-ai/developer
- From terminal inside your VS Code Editor 
- cd into the project directory 'developer' 
- Select Explorer [ The widget in the top left hand side of VS Code - Looks like two paper ]
- Select the folder your working in and open the developer folder.
- Find the 'example.env.' file and rename it to '.env'
- Go to Openai API and create your key or use an existing key.
- In the .env file replace the placeholder text with your API Key.
- Install Modal [Server-less Data Execution Engine like Vercel or Lambda]
- If you don't want to use Model you can:
- Run pip install -r requirements.txt
- Run your command using python main_no_modal.py YOUR_PROMPT_HERE
- In terminal run:
- modal run main.py --prompt " Your Prompt "
- You can also you can extract your prompt to a file, as long as your "prompt" ends in a .md extension.w
- modal run main.py --prompt prompt.md

Each time you run this, the generated directory (folder) is deleted (except for images) and all files are written from scratch. There is a helper file that ensure conference between files. 

Note: If you want to tweak the prompt but only want it to affect one file, and keep the rest of the files, specify the file param: 

```
modal run main.py --prompt prompt.md --file popup.js

```

## What the creator is looking for in the future
 - These are things to try/would be accepted as open issues discussions and PRS:

Specify `.md `files for each generated file, with further prompts that could fine-tune the output in each of them:

Basically like 'pop.html.md' and 'content_scripts.js.md' and so on.

Bootstrap the prompt.md for existing codebases = write a script to read in a code base and write descriptive, bullet pointed prompt that generates it. 

done by smog pm, but can be improved. 

Ability to install its own dependencies 

This leaks into depending on execution environment.(How to avoid docker ? web container ? ) 

**Self-heal
**
Running the code itself and use errors as information for reprompting

Make agents that autonomously run this code in a loop/watch the prompt file and regenerate code each time, on a new git branch.

The code could be generated on 5 simultaneous git branches and checking their output would just involve switching git branches. 

**

## Thank You @swyxio For creating the GitHub repo!
**