Inspiration
There are many code runner applications, and most of them are web-based. But most of them come with a significant down-side: they don't support dependency installation.
You're either limited to the runner's built-in packages, or none at all.
But ImpaCtODE takes an innovative path: it solves dependencies before running your code using AI, provides the required installation commands, and then starts the execution.
What it does
ImpaCtODE is a Telegram bot that listens for two commands:
/start- Basic introduction and welcome message./run- The main command, which starts the code execution sequence.
The /run command should be provided with, or replied to a code.
- On top of that, it provides a web-interface that lets you do the same in web instead!
- It can be reverse-proxied to be available as a real website for any user around the world.
Once the execution sequence has started, these steps apply:
- The bot detects and extracts the submitted code and any instructions around it.
- It identifies the language, prepares the code, and plans the required guest commands.
- The code runs in a fresh Linux virtual machine. The VM has network and root access. It comes with 1 GB RAM, 2 CPU cores, and a maximum lifetime of 15 minutes.
- Environment output is shown in the run status message.
Failed runs may trigger an automatic environment repair attempt before possible code fixes are displayed.
The goal is to not re-generate the code, but to let the user understand what they're missing.
The VM's maximum allowed RAM and CPU are dynamically increased based on the allowed concurrent runs configured in the config file.
How we built it
This project is created using Python and comes with bundled Linux and Windows installations of QEMU, the VM emulator.
We built ImpaCtODE's Telegram handler using Telethon, an MTProto API Telegram client library. The web interface is based on Flask and WebSocket.
The coding process was accomplished with GPT-5.6's help, especially the environment handling, which was an important part of the project.
The web interface's WebSocket connection handling is mostly done by GPT-5.6 too.
Challenges we ran into
The biggest challenge was keeping the project fully standalone. That meant we couldn't rely on external VM services.
The goal was to keep everything hassle-free, and it meant a lot to me personally. In this case, QEMU was the best choice.
Running QEMU using Python's async subprocess handling was not something I had tried before, but with AI's help, we used asyncio.create_subprocess_exec, and the results are production-ready.
Accomplishments that we're proud of
Seeing the result of my input code in a disposable VM outside of my workstation, without any manual setup and fully automatic, is the biggest thing I'm proud of. Surely it comes with some minor bugs for some languages, it doesn't support lots of languages, but these can be fixed overtime.
The project has less than 6,000 lines of code and is highly dynamic. That means anyone can understand the code-base, easily modify it, or add a new language support.
| Supported | Languages |
|---|---|
| C/C++ | C# |
| Rust | Go |
| Python | Java |
| Java Script | Type Script |
What we learned
I learned a lot about subprocess spawning, controlling and handling signal inputs for QEMU.
This was also my first time handling OpenAI SDK responses in json_schema format. This was mandatory for the AI to always respond in an expected format that was ready to parse.
Another thing I learned was more advanced usage of Git source control. Before this project, my projects were mostly local. I think I'll be using Git more often.
What's next for ImpaCtODE Runner
This project is actually very useful to me, so I will be actively maintaining it.
I plan to add some new features in the future. Here are some of them:
- Artifact generation
- Multi-code input support
- More language support and compatibility features


Log in or sign up for Devpost to join the conversation.