| Crates.io | cylo |
| lib.rs | cylo |
| version | 0.10.10 |
| created_at | 2025-10-29 00:14:59.698989+00 |
| updated_at | 2026-01-02 15:01:12.010778+00 |
| description | Secure multi-language code execution service |
| homepage | |
| repository | https://github.com/cyrup-ai/cylo |
| max_upload_size | |
| id | 1905810 |
| size | 4,590,369 |
cylo (Iron Executor) is a secure service for executing code snippets in multiple programming languages. It provides isolation through ramdisk-based execution environments and supports Go, Rust, Python, and JavaScript. This service is designed specifically for Linux systems.
Kernel 5.11 or newer recommended
The system will automatically prompt for sudo access if needed to:
sudo sysctl -w kernel.unprivileged_userns_clone=1)sudo aa-complain /usr/bin/cargo)If you prefer to configure your system manually instead of using sudo prompts:
# Enable user namespaces
sudo sysctl -w kernel.unprivileged_userns_clone=1
# For permanent change:
echo 'kernel.unprivileged_userns_clone=1' | sudo tee /etc/sysctl.d/00-local-userns.conf
# If using AppArmor, set the profile to complain mode:
sudo aa-complain /usr/bin/cargo
# Clone the repository
git clone https://github.com/yourusername/cylo.git
cd cylo
# Build the project
cargo build --release
# The binary will be available at target/release/ironexec
Execute code in a specific language:
# Execute Go code
ironexec exec --lang go "package main; import \"fmt\"; func main() { fmt.Println(\"Hello from Go!\") }"
# Execute Rust code
ironexec exec --lang rust "fn main() { println!(\"Hello from Rust!\"); }"
# Execute Python code
ironexec exec --lang python "print('Hello from Python!')"
# Execute JavaScript code
ironexec exec --lang js "console.log('Hello from JavaScript!')"
Enable debug logging for more detailed output:
ironexec --debug exec --lang python "print('Running with debug output')"
The service can watch a directory for file changes:
# Place files in the watched_dir directory to trigger executions
mkdir -p watched_dir
touch watched_dir/trigger.txt
cylo provides a multi-layered approach to secure code execution:
Namespace Isolation: Uses Linux user and mount namespaces to create an isolated execution environment.
Ramdisk Isolation: All code executes in a dedicated ramdisk environment, isolating file operations from the host system.
Sandboxed Language Environments: Each language runtime operates in a sandboxed environment with:
Landlock File System Restrictions: Uses the Landlock security module to provide additional kernel-level file system access control, restricting which directories and files can be modified by executed code.
File Monitoring: The watchexec integration monitors file access and modifications, logging any attempts to modify protected files.
Secure by Default: Security is non-negotiable - if proper security cannot be established, execution will fail rather than fall back to less secure methods. This ensures consistent security guarantees.
Note: Landlock restrictions and sandbox environments are mandatory for security and cannot be disabled.
You can run cylo in a Docker container:
# Build the Docker image
docker build -t cylo .
# Run the container
docker run -it --rm cylo exec --lang python "print('Hello from Docker!')"
For detailed information about the project's architecture, please see ARCHITECTURE.md.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.