| app | ||
| languages | ||
| src | ||
| .gitignore | ||
| cabal.project | ||
| config.example.yaml | ||
| LICENSE | ||
| myriad.cabal | ||
| README.md | ||
| Setup.hs | ||
| stack.yaml | ||
Myriad
Arbitrary code execution server using Docker.
Requirements
You can use either stack or cabal.
stackshould be >= 2.1.1,cabalshould be >= 2.4.0.0.- GHC 8.8.3 is required if not already installed by
stackor if usingcabal.
Install Binary
Make sure the place where stack or cabal places binaries is in your PATH.
- For
stack, you can get it withstack path --local-bin. - For
cabal, you should find it in$HOME/.cabal/bin(Linux) or%APPDATA%\cabal\bin(Windows).
Run stack install or cabal new-install inside the project folder.
Make sure the configuration is filled out, see config.example.dhall for an example.
Run myriad --config /path/to/config.dhall --languages /path/to/languages/.
Install in Place
Make sure the configuration is filled out, see config.example.dhall for an example.
Run stack run or cabal v2-run inside the project folder.
The config and languages folder will default to ./config.dhall and ./languages.
You can configure this with --config and --languages.
Endpoints
GET /languages
List of enabled languages.
Example response:
["haskell", "javascript"]
POST /eval
Evaluate code.
JSON payload with language and code keys.
The language is as in the name of a subfolder in the languages directory.
Example payload:
{ "language": "haskell", "code": "main = print (1 + 1)" }
Example response:
{ "result": "2\n" }
Errors with 404 if language is not found, 504 if evaluation timed out, or 500 if evaluation failed for other reasons.
GET /containers
List of containers being handled by Myriad.
POST /cleanup
Kill all containers, giving back the names of the containers killed.