{"id":17025409,"url":"https://github.com/florianwoelki/kira","last_synced_at":"2025-09-11T23:16:37.380Z","repository":{"id":57692100,"uuid":"444798179","full_name":"FlorianWoelki/kira","owner":"FlorianWoelki","description":"A fast and scalable general purpose sandbox code execution engine.","archived":false,"fork":false,"pushed_at":"2023-09-22T07:59:28.000Z","size":877,"stargazers_count":28,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-12T11:43:13.557Z","etag":null,"topics":["coderunner","docker","go","golang","sandbox"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlorianWoelki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-05T12:37:26.000Z","updated_at":"2025-04-02T11:53:39.000Z","dependencies_parsed_at":"2023-09-22T15:22:16.457Z","dependency_job_id":null,"html_url":"https://github.com/FlorianWoelki/kira","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FlorianWoelki/kira","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianWoelki%2Fkira","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianWoelki%2Fkira/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianWoelki%2Fkira/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianWoelki%2Fkira/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlorianWoelki","download_url":"https://codeload.github.com/FlorianWoelki/kira/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianWoelki%2Fkira/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274726269,"owners_count":25338392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"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":["coderunner","docker","go","golang","sandbox"],"created_at":"2024-10-14T07:29:06.071Z","updated_at":"2025-09-11T23:16:37.356Z","avatar_url":"https://github.com/FlorianWoelki.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kira\n\nkira is a remote docker based sandbox code execution engine written in Go.\n\nCurrently it supports the following languages:\n\n`python`, `javascript`, `golang`, `java`, `bash`, `c`, `c++`\n\n## Installation\n\nFor the installation of kira, you need to have Docker and Go installed.\n\nIt is required for the sandbox environment to have a docker image that exposes an API that includes all the functionality for executing the code. For that, you need to execute the following command to build the image and start the container:\n\n```sh\ndocker compose up\n```\n\nYou can also set the environment by adjust the `KIRA_ENV` while running docker compose.\nThe default value is `development` and will use the `.env.development` file.\n\n```sh\nKIRA_ENV=production docker compose up\n```\n\nIf you run the described command above, you need to create a `rest/.env.production.local`\nwith the contents of the `rest/.env.development` file.\n\n## Usage\n\nYou can feel free to run the REST API by executing the `main.go` file in the `rest` directory with the following command:\n\n```sh\n$ go run rest/main.go\n```\n\nThe REST API will start on port `:9090`.\n\n### Environment Variables\n\n| Name | Description | Default Value | Required |\n| ---- | ----------- | ------------- | -------- |\n| `LANGUAGES` | Languages that are supported by the API | `empty` | 🟩 |\n| `PORT` | Port on which the REST API will run | `9090` | 🟥 |\n| `ORIGINS` | Origins that are allowed to access the API | `*` | 🟥 |\n| `AUTH_KEY` | Authentication key for the API | `empty` | 🟥 |\n\nIf you want to secure the API with an `AUTH_KEY`, you need to make sure that this key is never exposed to the client side. Because the key is delivered through the query parameter `token=\u003cAUTH_KEY\u003e` in the REST API, it can be insecure to use it in a production environment. If you want to use it in a production environment, you need to make sure that the API is only accessible through a proxy server like nginx and the key is only delivered through the proxy server encrypted with TSL.\n\n### REST API endpoints\n\nThe following section contains all the REST API endpoints. The JSON body and endpoints follow the CLI structure.\n\n\u003cdetails\u003e\n  \u003csummary\u003ePOST /execute\u003c/summary\u003e\n\n  \u003cp\u003e\n    The execute endpoint will execute code in a containerized sandbox. Tests for the\n    printed output can also be specified.\n  \u003c/p\u003e\n\n  This JSON structure is an example for the request body:\n  ```json\n  {\n      \"language\": \"python\",\n      \"content\": \"print(\\\"42 Hello World\\\")\",\n      \"tests\": [\n        { \"name\": \"First test case\", \"stdin\": [], \"actual\": \"42 Hello World\" },\n        { \"name\": \"Second test case\", \"stdin\": [], \"actual\": \"42 Hello World\" }\n      ]\n  }\n  ```\n\n  You can also add an optional query parameter called `bypass_cache` and set it to `true`,\n  if you want to bypass the cache.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eGET /languages\u003c/summary\u003e\n\n  \u003cp\u003e\n    Will return all languages that are possible for remote execution.\n  \u003c/p\u003e\n\n  This JSON structure is an example for the response body:\n  ```json\n  [\n      {\n          \"name\": \"python\",\n          \"version\": \"3.7.10\",\n          \"extension\": \".py\",\n          \"timeout\": 10\n      },\n      {\n          \"name\": \"javascript\",\n          \"version\": \"16.3.1\",\n          \"extension\": \".js\",\n          \"timeout\": 10\n      },\n      // ...\n  ]\n  ```\n\u003c/details\u003e\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianwoelki%2Fkira","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorianwoelki%2Fkira","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianwoelki%2Fkira/lists"}