A distributed task execution platform that provides secure, scalable code execution in containerized environments with comprehensive task management capabilities.
VoidRunner is designed to safely execute user-submitted code in isolated containers while providing a robust API for task management, real-time monitoring, and execution tracking. The platform prioritizes security, scalability, and developer experience.
- REST API: Comprehensive HTTP API with 16+ endpoints for complete task lifecycle management
- JWT Authentication: Secure user authentication with access and refresh tokens
- Task Management: Full CRUD operations for code tasks with metadata support
- Execution Tracking: Detailed execution history with performance metrics
- Database Integration: PostgreSQL with optimized schema and cursor pagination
- Security: Input validation, rate limiting, and secure request handling
- Testing: 80%+ code coverage with unit and integration tests
- Documentation: OpenAPI/Swagger specifications with comprehensive examples
Current Implementation (✅ Complete)
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Web Clients │ │ API Gateway │ │ PostgreSQL │
│ (Postman/curl) │◄──►│ (Gin Server) │◄──►│ Database │
│ │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
│ JWT Auth & Task Management
▼
┌──────────────────┐
│ Internal APIs │
│ - Auth Service │
│ - Task Service │
│ - User Service │
└──────────────────┘
Planned Extensions (📋 Roadmap)
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Svelte Web UI │ │ Task Scheduler │ │ Container Engine│
│ (Frontend) │ │ (Microservice) │ │ (Docker/gVisor)│
│ │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
POST /api/v1/auth/register
- Register new userPOST /api/v1/auth/login
- User loginPOST /api/v1/auth/refresh
- Refresh access tokenPOST /api/v1/auth/logout
- User logoutGET /api/v1/auth/me
- Get current user info
POST /api/v1/tasks
- Create new taskGET /api/v1/tasks
- List user's tasks (with pagination)GET /api/v1/tasks/{id}
- Get task detailsPUT /api/v1/tasks/{id}
- Update taskDELETE /api/v1/tasks/{id}
- Delete task
POST /api/v1/tasks/{id}/executions
- Start task executionGET /api/v1/tasks/{id}/executions
- List task executionsGET /api/v1/executions/{id}
- Get execution detailsPUT /api/v1/executions/{id}
- Update execution statusDELETE /api/v1/executions/{id}
- Cancel execution
GET /health
- Health check endpointGET /ready
- Readiness check endpoint
- Go 1.24.4+ installed
- PostgreSQL 15+ (for database operations)
- Docker (for containerization and testing)
-
Clone the repository
git clone https://github.com/voidrunnerhq/voidrunner.git cd voidrunner
-
Setup development environment
make setup
-
Configure environment
cp .env.example .env # Edit .env with your configuration
-
Start the database (for testing)
make db-start
-
Run database migrations
make migrate-up
-
Start the development server
make dev
The server will start on http://localhost:8080
by default.
# Development
make dev # Start with auto-reload
make run # Build and run
make build # Build binary
# Testing
make test # Unit tests
make test-integration # Integration tests (requires database)
make test-all # All tests
make coverage # Generate coverage report
# Database
make db-start # Start test database
make db-stop # Stop test database
make migrate-up # Apply migrations
make migrate-down # Rollback migration
# Code Quality
make lint # Run linter
make fmt # Format code
make vet # Run go vet
make security # Security scan
# Documentation
make docs # Generate API docs
make docs-serve # Serve docs locally
Run unit tests:
make test
Run integration tests (requires PostgreSQL):
make test-integration
For detailed testing instructions, database setup, troubleshooting, and performance testing, see Testing Guide.
Interactive API documentation is available via Swagger:
make docs-serve
# Visit http://localhost:8081
Task management API with authentication, database integration, and comprehensive testing.
Secure Docker-based code execution with resource limiting, real-time log streaming, and safety controls.
Modern Svelte-based frontend with real-time task monitoring, code editor, and user dashboard.
Collaborative features, advanced search and filtering, system metrics dashboard, and notification system.
The application uses environment variables for configuration. Copy .env.example
to .env
and adjust values as needed:
- Server: HOST, PORT, ENV settings
- Database: Connection details for PostgreSQL
- JWT: Token configuration and secrets
- CORS: Frontend domain configuration
- Logging: Level and format settings
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'feat: add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please ensure all tests pass and maintain code coverage above 80%.
This project is licensed under the MIT License - see the LICENSE file for details.