{"id":50388974,"url":"https://github.com/glazzes/borealys","last_synced_at":"2026-05-30T17:00:40.137Z","repository":{"id":132855421,"uuid":"439757804","full_name":"Glazzes/borealys","owner":"Glazzes","description":"A simple remote code execution engine based built with Golang and Bash scripts","archived":false,"fork":false,"pushed_at":"2022-01-05T19:07:05.000Z","size":1416,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-21T00:07:07.976Z","etag":null,"topics":["bash","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Glazzes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-19T02:23:07.000Z","updated_at":"2022-01-05T19:07:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"cfe06dac-49ab-49c6-b32e-9d42b4e3878a","html_url":"https://github.com/Glazzes/borealys","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Glazzes/borealys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glazzes%2Fborealys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glazzes%2Fborealys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glazzes%2Fborealys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glazzes%2Fborealys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Glazzes","download_url":"https://codeload.github.com/Glazzes/borealys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glazzes%2Fborealys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33700863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","go"],"created_at":"2026-05-30T17:00:39.398Z","updated_at":"2026-05-30T17:00:40.131Z","avatar_url":"https://github.com/Glazzes.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Borealys\n\n### About\nBorealys is a small and simple remote code execution engine, the idea\nbehind this project is quite simple, I have been curious of websites like\nleetcode and language specific playgrounds running code that has been \nwritten in a web browser, so I decided to try my luck and create my own.\n\nThis project runs in a `ubuntu:20.04` docker container based image with\nthe following changes:\n- An extra group called runners\n- A root level folder called binaries containing all the binaries for each\n  supported language\n  \n- 100 unpriveleged users whose will the code through the `runuser` command\n\n### Goals\nI decided to build this project in GoLang as I really wanted to learn it\nand this project required a fast and lightweight programming language, as\na Spring developer I'm aware of Java/Kotlin's memory consumption, so Spring\nwas not an option.\n\nMy knowledge of the Linux operating system is still quite limited out of\nthe average user needs, so this project brings me many of the\nfollowing challenges:\n- Create new system users\n- Get a better understanding of group and permissions\n- Limit user resources, open processes, open files and more\n- Learn the basics of Bash scripting\n\n### Behaviour\n- Users will send their code along with the selected language name and version,\n  if available, user's code will be run against the selected language, if\n  the code succeeds the stdout of the executed code will be sent in the response,\n  if your code can not be executed lets say by a missing `;` you will get\n  the stderr back\n\n### Supported languages\nHopefully in their newest versions!\n- Bash\n- Go\n- Java\n- Javascript \n- Kotlin (work in progress)\n- Python\n\n### Api endpoints\n- GET /api/languages =\u003e returns an array of all the available languages,\n  example:\n```json\n[\n  {\n    \"language\": \"java\",\n    \"timeout\": 4,\n    \"version\": \"17\"\n  },\n  {\n    \"language\": \"python\",\n    \"timeout\": 3,\n    \"version\": \"3.10.1\"\n  }\n]\n```\n\n- POST /api/run =\u003e Given a valid piece of code will give you back the stdout,\nif the code can not be executed, you will receive the stderr instead\n\n```json\n{\n  \"language\": \"Javascript\",\n  \"code\": [\n    \"const words = ['hola', 'hi']\",\n    \"\\n\",\n    \"for(let word of words){\",\n    \"   console.log(`current word is ${word}`)\",\n    \"}\"\n  ]\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglazzes%2Fborealys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglazzes%2Fborealys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglazzes%2Fborealys/lists"}