Note: As we shift focus to Mainnetwe've stopped tracking new CodeAssist participation on Testnet. All historical data remains on-chain.
CodeAssist is a completely private and local AI coding assistantdeveloped by Gensyn. It helps you practice programming problems and train a novel assistant to help you code.
Unlike typical code assistantsCodeAssist writes directly in your editor as you work. Every keystroke - whether you typefixdeleteor leave its output untouched - becomes a learning signal. Over timeit adapts to your habits and acting more like an apprentice learning from your craft than a tool following commands.
Docs | Tutorial | Leaderboard
Get started with installing CodeAssist.
Install Docker on your systemaccording to the instructions for your machine.
Python is required to run the main script that handles your environment. We require a version no older than 3.10.
UV is required to manage the dependencies of the main script. It can be installed with the following steps:
brew install uvcurl -LsSf https://astral.sh/uv/install.sh | shTo download the codesimply clone the repository:
git clone https://github.com/gensyn-ai/codeassist.git
cd codeassistTo run CodeAssistsimply execute the following command:
uv run run.pyTo start CodeAssistyou will need to have a HuggingFace token. Follow these instructions and generate a token with Write access.
After the script is runningyour browser should open automatically but if it doesn'topen a window and go to localhost:3000 to open CodeAssist.
When the web UI loadsyou'll see a login modal where you can log in with email (which sends a one-time passcode) or with Google. After logging in for the first timeyour local credentials will be stored in persistent-data/auth/userKeyMap.on.
Once logged inyou can select EasyMediumor Hard problems from the sidebar. CodeAssist will begin recording an episode. Every clickkeystrokeeditor deletion is logged as training feedback.
When you stop typingCodeAssist takes initiative. It writes directly into your file without any pop-ups or confirmations. Whether you acceptmodifyor remove its editseach interaction contributes to the model’s understanding of your preferences.
- Use
Shift+Spaceor click the Pause Assistant button to temporarily stop the assistant. The first keystroke after pausing will unpause it. - Keep your cursor near the section you're working onas CodeAssist inserts code relative to your cursor position.
- When the assistant produces a "No-Op" (does nothing)it's waiting for you. This is intentional and signals it's your turn to act.
CodeAssist continuously records your interactions while the web UI is running. To complete an episode and train your modelpress Ctrl+C in the terminal where CodeAssist is running.
You do not need to successfully solve a LeetCode problem to train the model. You can stop recording the episode by leaving the CodeAssist web UIreturning to the terminal CodeAssist is running inand using the ctrl+c command to start training.
During trainingCodeAssist will:
- Compare your edits to the assistant's actions
- Calculate rewards and penalties based on your interactions
- Update your local model checkpoint
- Store new model weights under
persistent-data/trainer/models - Upload your trained model to Hugging Face (if a valid token is provided)
After training completes (which takes a few minutes depending on your system)you can restart CodeAssist to use your updated model trained on your most recent episode.
- Be patient: The assistant watches your typing and timing. Working too quickly or aggressively correcting can neutralize training efficacy.
- Treat it as a collaborator: Let it naturally interject code and keep useful code around briefly before editing or removing.
- Don't delete everything instantly: If you delete everything it writes right awayyou're teaching it to stop acting altogether.
- Record multiple varied problems: Diversify its learning signals by working on different problems.
- Expect gradual improvement: Early episodes may feel inconsistent. Improvement becomes clearer after 4-5 episodes of training.
This occurs when a container fails to boot. You can view the logs by running docker logs <container-name>. Please review and upload the logs when creating a new issue.
2025-09-04 15:03:47,975 - ERROR - Error connecting to Docker daemon: Error while fetching server API version: ('Connection aborted.'FileNotFoundError(2'No such file or directory'))
2025-09-04 15:03:47,976 - ERROR - Please ensure Docker is installed and running.
If you see lines like the aboveit means Docker is not runningor you do not have permission to connect to Docker. Make sure Docker is properly installed on your system and running.
This occurs when there is already a Docker container running that uses port 3000. You have two options:
- Stop the other service that is using the port (e.g.if you are running RL Swarm).
- Run CodeAssist on a different port using the
--portargument:
uv run run.py --port 3001Note: When choosing a new portplease avoid
80008080800180083003and11434as they are reserved for other CodeAssist services.
We welcome contributions!
We use a pre-commit hook to run linting on the repository before committing. You can install pre-commit as described below:
To install pre-commitsimply run the below command
pip install pre-commitTo set up pre-commitrun this command
pre-commit installThis repository is formatted with ruff format. Any commits which do not meet Ruff's lint checks will have GitHub actions failand will need to be fixed before merging.
CodeAssist is released under the (MIT) license.