Skip to content

Latest commit

 

History

History

code-exec-server

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Code Execution Server

A secure HTTP server for executing code in various programming languages.

Features

  • Supports multiple programming languages (Python, JavaScript, TypeScript, Go, Rust)
  • Resource limiting (memory, CPU, disk space)
  • Concurrent execution support
  • Sandbox environment for secure execution
  • RESTful API
  • Docker support

API Endpoints

Health Check

GET /health

Returns 200 OK if the server is running.

Execute Code

POST /execute
Content-Type: application/json

{
  "language": "python",
  "code": "print('Hello, World!')",
  "input": null,
  "dependencies": [],
  "timeout": 5000,
  "env_vars": {}
}

Running Locally

  1. Build and run directly:
cargo run --release
  1. Using Docker:
docker-compose up --build

Configuration

The server can be configured using command-line arguments:

code-exec-server --help

Available options:

  • --addr: Server address (default: 0.0.0.0:3000)
  • --max-concurrent: Maximum concurrent executions (default: 10)
  • --memory-limit: Memory limit in bytes (default: 100MB)
  • --cpu-time-limit: CPU time limit in seconds (default: 5)
  • --max-processes: Maximum number of processes (default: 10)
  • --file-size-limit: File size limit in bytes (default: 10MB)
  • --disk-space-limit: Disk space limit in bytes (default: 100MB)

Docker Deployment

The server can be deployed using Docker:

  1. Build the image:
docker build -t code-exec-server -f code-exec-server/Dockerfile .
  1. Run the container:
docker run -p 3000:3000 \
  --security-opt seccomp=unconfined \
  --cap-add SYS_ADMIN \
  -v /tmp:/tmp \
  code-exec-server

Or using docker-compose:

docker-compose up --build

Security Considerations

The server uses several security measures:

  • Sandbox environment for code execution
  • Resource limits (memory, CPU, disk space)
  • Process isolation
  • Non-root user in Docker
  • Temporary directories for execution

Development

  1. Run tests:
cargo test
  1. Format code:
cargo fmt
  1. Run linter:
cargo clippy