ExecuteMe is a powerful and minimalistic online code execution platform that allows developers to write, run, and test code in multiple programming languages instantly and securely β all within the browser.
Whether you're experimenting with a new idea or teaching code, ExecuteMe gives you a real-time, sandboxed environment that works out of the box.
- β‘ Instant Code Execution β Run your code in real-time with just one click
- π Secure Sandbox β Ensures your code runs in a safe, isolated environment
- π§ Multi-language Support β Supports a growing list of languages including:
- π Python
- π¨ JavaScript
- π¦ TypeScript
- β Java
- π Kotlin
- π¨ Full Syntax Highlighting β Modern and readable code editor with theme support
- π₯οΈ Responsive UI β Works smoothly across all devices
- π Live User Activity β Shows active coders in real-time
- πΎ Open Source β Freely available to use, modify, and contribute
- βοΈ NextJs β For frontend and tailwindcss for designing user interface
- π§° Monaco Editor β Powerful web-based code editor (from VS Code)
- π Node.js + Express β Backend service for execution management
- π Docker β Containerized code execution
- π‘ Socket.IO β Real-time connection to track active users
- π NodeCache β In-memory cache for managing live sessions
- π Custom Docker Images β Tailored environments per language
Designing ExecuteMe required solving real-world challenges in scalability, isolation, and memory/resource management:
- π¦ Each execution triggers a new Docker container, isolated per language and user
- π§Ύ Code is saved temporarily in a unique
UUIDdirectory (e.g.,/temp/<uuid>) - π§Ό After execution, both the container and the temporary code directory are destroyed automatically
- β Ensures complete statelessness and no leftover data between runs
- π§ Containers are limited via flags: --memory=512m and --cpus=0.5
- π Ensures no user can overuse system resources
- π§Ή Automatic cleanup after every run helps maintain low disk and memory usage
- β±οΈ Uses
async/awaitandpromisify(exec)to avoid blocking the event loop - β‘ Handles multiple user requests at the same time, spawning separate containers for each
- π οΈ Every language is handled via its own custom-built Docker image (
executor-python,executor-java, etc.)
- π Code runs in completely sandboxed containers with:
- No access to host machine
- No persistent file system or shared memory
- π« Containers are removed after use with --rm to prevent abuse
- β Each language has its own minimal, locked-down Docker image
- π‘
Socket.IO + NodeCachemanage user connections in real-time - π Displays current active users to the frontend
- β»οΈ Cleans up cache on disconnect to prevent stale connections
Before you get started, ensure you have the following installed on your system:
-
Docker: Docker Engine and Docker Compose (Docker Desktop includes both).
-
Node.js (LTS version, e.g., 20.x or higher)
-
npm (comes with Node.js)
executeme is a fully open-source project, and contributions are highly encouraged! Whether it's adding new language support, improving performance, fixing bugs, or enhancing documentation, your input is valuable.
- Fork the GitHub repository.
- Clone your fork.
- Create a new branch for your feature or bug fix.
- Make your changes, write tests, and ensure code quality.
- Open a Pull Request with a clear description of your work.
This project is licensed under the MIT License - see the LICENSE file for details.
If executeme helps you or your project, consider showing your support. Your contributions help maintain and improve this tool for the entire developer community!
- Sponsor on GitHub: https://github.com/sponsors/devlopersabbir
- Buy Me a Coffee: https://buymeacoffee.com/devlopersabbir
Made with contrib.rocks.