{"id":24641181,"url":"https://github.com/elixir-cloud-aai/tesk","last_synced_at":"2026-03-17T12:12:31.173Z","repository":{"id":45579300,"uuid":"102465022","full_name":"elixir-cloud-aai/TESK","owner":"elixir-cloud-aai","description":"GA4GH Task Execution Service Root Project + Deployment scripts on Kubernetes","archived":false,"fork":false,"pushed_at":"2026-01-26T12:43:28.000Z","size":95628,"stargazers_count":43,"open_issues_count":47,"forks_count":33,"subscribers_count":34,"default_branch":"master","last_synced_at":"2026-02-03T06:29:16.373Z","etag":null,"topics":["ga4gh","hacktoberfest","tesk"],"latest_commit_sha":null,"homepage":"https://tesk.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elixir-cloud-aai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-05T09:55:18.000Z","updated_at":"2026-01-26T12:43:39.000Z","dependencies_parsed_at":"2023-02-08T12:01:07.915Z","dependency_job_id":"c960869b-cd97-4548-83d6-2cb026f28a31","html_url":"https://github.com/elixir-cloud-aai/TESK","commit_stats":null,"previous_names":["embl-ebi-tsi/tesk"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/elixir-cloud-aai/TESK","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FTESK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FTESK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FTESK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FTESK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elixir-cloud-aai","download_url":"https://codeload.github.com/elixir-cloud-aai/TESK/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FTESK/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30623652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T11:26:08.186Z","status":"ssl_error","status_checked_at":"2026-03-17T11:24:37.311Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ga4gh","hacktoberfest","tesk"],"created_at":"2025-01-25T12:12:33.993Z","updated_at":"2026-03-17T12:12:31.142Z","avatar_url":"https://github.com/elixir-cloud-aai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"documentation/img/TESKlogowfont.png\" height=\"200\"\u003e\n\n\nAn implementation of a task execution engine based on the [TES standard](https://github.com/ga4gh/task-execution-schemas) running on `Kubernetes`. For more details on `TES`, see the (very) brief [introduction to TES](documentation/tesintro.md).\n\nFor organisational reasons, this project is split into 3 repositories:\n- This one, which contains documentation and deployment files\n- [tesk-api](https://github.com/elixir-cloud-aai/tesk-api): Contains the service that implements the TES API and translates tasks into kubernetes batch calls\n- [tesk-core](https://github.com/elixir-cloud-aai/tesk-core):  Contains the code that is launched as images into the kubernetes cluster by tesk-api.\n\nIf the API is running on your cluster it will pull the images from our `docker.io` repository automatically.\n\n`TESK` is designed with the goal to support any `Kubernetes` cluster, for its deployment please refer to the [deployment](documentation/deployment.md) page.\n\nThe technical documentation is available in the [documentation](documentation) folder.\n\n\n## Architecture\nAs a diagram:\n\n![TESK architecture](documentation/img/architecture.png)\n\n**Description**: The first pod in the task lifecycle is the API pod, a pod which runs a web server (`Tomcat`) and exposes the `TES` specified endpoints. It consumes `TES` requests, validates them and translates them to `Kubernetes` jobs. The API pod then creates a `task controller` pod, or `taskmaster`. \n\nThe `taskmaster` consumes the executor jobs, inputs and outputs. It first creates `filer` pod, which creates a persistent volume claim (PVC) to mount as scratch space. All mounts are initialized and all files are downloaded into the locations specified in the TES request; the populated PVC can then be used by each executor pod one after the other. After the `filer` has finished, the taskmaster goes through the executors and executes them as pods one by one. **Note**: Each TES task has a separate taskmaster, PVC and executor pods belonging to it; the only 'singleton' pod across tasks is the API pod.\n\nAfter the last executor, the `filer` is called once more to process the outputs and push them to remote locations from the PVC. The PVC is the scrubbed, deleted and the taskmaster ends, completing the task.\n\n## Requirements\n-   A working [Kubernetes](https://kubernetes.io/) cluster version 1.9 and later.\n-   If you want TESK to handle tasks with I/O (and you probably want), you additionally need:\n-   A default storage class, which TESK will use to create temporary PVCs. It is enough that the storage class supports the RWO mode.\n-   And, if you want TESK to integrate with workflow managers, you additionally need either an FTP account or a PVC that can be accessed from within or from outside of the cluster by the workflow manager (more in the [deployment](documentation/deployment.md) page).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Ftesk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixir-cloud-aai%2Ftesk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Ftesk/lists"}