{"id":28998137,"url":"https://github.com/theracetrack/racetrack","last_synced_at":"2025-06-25T07:02:49.987Z","repository":{"id":60765799,"uuid":"520897311","full_name":"TheRacetrack/racetrack","owner":"TheRacetrack","description":"An opinionated framework for deploying, managing, and serving application workloads","archived":false,"fork":false,"pushed_at":"2025-06-16T09:37:59.000Z","size":6753,"stargazers_count":30,"open_issues_count":18,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-16T10:46:56.438Z","etag":null,"topics":["deployment","kubernetes","machine-learning","microservice","mlops","model-management","racetrack"],"latest_commit_sha":null,"homepage":"https://theracetrack.github.io/racetrack/","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/TheRacetrack.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}},"created_at":"2022-08-03T13:43:33.000Z","updated_at":"2025-06-13T08:51:41.000Z","dependencies_parsed_at":"2023-12-19T14:57:58.607Z","dependency_job_id":"a2e22a4b-0a88-4628-9283-b6cd8a2d5861","html_url":"https://github.com/TheRacetrack/racetrack","commit_stats":{"total_commits":116,"total_committers":5,"mean_commits":23.2,"dds":"0.31034482758620685","last_synced_commit":"1c6596488da3d5fda57a07492f4a256c0ae6ec9d"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/TheRacetrack/racetrack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRacetrack%2Fracetrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRacetrack%2Fracetrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRacetrack%2Fracetrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRacetrack%2Fracetrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheRacetrack","download_url":"https://codeload.github.com/TheRacetrack/racetrack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRacetrack%2Fracetrack/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261823683,"owners_count":23215139,"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","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":["deployment","kubernetes","machine-learning","microservice","mlops","model-management","racetrack"],"created_at":"2025-06-25T07:01:14.990Z","updated_at":"2025-06-25T07:02:49.962Z","avatar_url":"https://github.com/TheRacetrack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Racetrack\n\n[![GitHub version (latest SemVer)](https://img.shields.io/github/v/tag/TheRacetrack/racetrack?label=github\u0026sort=semver)](https://github.com/TheRacetrack/racetrack)\n[![PyPI](https://img.shields.io/pypi/v/racetrack-client)](https://pypi.org/project/racetrack-client/)\n[![Github Pages](https://img.shields.io/badge/docs-github.io-blue)](https://theracetrack.github.io/racetrack)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/TheRacetrack/racetrack/test.yml?branch=master\u0026label=tests)](https://github.com/TheRacetrack/racetrack/actions?query=workflow%3Atest)\n[![Slack](https://img.shields.io/badge/slack-theracetrack-brightgreen.svg?logo=slack)](https://join.slack.com/t/theracetrack/shared_invite/zt-26gv32boy-rT974~WV9WqDeJypE8ECzA)\n\nRacetrack is a framework for deploying, managing, and serving application workloads.\n\n\u003cvideo width=\"100%\" controls=\"true\" allowFullscreen=\"true\" src=\"https://user-images.githubusercontent.com/124889668/259023408-d7b99acf-fcef-48f3-ac95-d4356c3acb0f.mp4\"\u003e\n\u003c/video\u003e\n\n## Features\n\nRacetrack uses the notion of conventions to allow domain experts to produce\noperationally sound and effective workloads without understanding the underlying\ninfrastructure.\n\nIt makes extensive use of plugins. Thus, the type of code which it can accept is\nbroad and covers languages such as Python 3 or Go,\nand actual applications such as Sphinx, Drupal or even Quake 3.\n\nThese \"jobs\", in Racetrack lingo, can be deployed to different\n\"infrastructure targets\". We currently support Kubernetes and Docker. This is\nalso pluggable and can be extended.\n\nCode deployed via Racetrack gets free Swagger pages and Prometheus metrics endpoints.\n\nWhat distinguishes Racetrack is:\n\n- You only supply your **function's logic**. No need to write repetitive API code, setting up\n  webservers, creating dockerfiles, kubernetes YAMLs, and so on. Racetrack takes care of that for you.\n- **Language agnostic**. Deploy code written in Python 3, Go, Rust,\n  or anything else encapsulated in a Dockerfile.\n- **Infrastructure independent**. Deploy to either a Kubernetes cluster\n  or a Docker environment in a single transparent step.\n\n## Example usage\n\nGiven a Python file like this:\n\n```python\nclass Meow:\n    def perform(self, a, b):\n        \"\"\"Add numbers\"\"\"\n        return a + b\n```\n\nAnd a YAML file like this:\n\n```yaml\nname: adder\nowner_email: meowmeow@example.com\njobtype: python3:latest\n\ngit:\n  remote: https://www.github.com/path/to-repo.git\n\npython:\n  entrypoint_path: 'adder.py'\n  entrypoint_class: 'Meow'\n```\n\nYou can\n\n```bash\nracetrack deploy\n```\n\nAnd the result is a micro-service with an API:\n\n![](docs/assets/swaggerino.png)\n\nwhich can be monitored on a dashboard:\n\n![](docs/assets/dashboard-example.png)\n\nor called with a curl command:\n\n![](docs/assets/example-curl-call.png)\n\n[//]: # (created with https://carbon.now.sh/?bg=rgba%28255%2C255%2C255%2C1%29\u0026t=material\u0026wt=boxy\u0026l=application%2Fx-sh\u0026width=812\u0026ds=true\u0026dsyoff=20px\u0026dsblur=68px\u0026wc=true\u0026wa=false\u0026pv=56px\u0026ph=56px\u0026ln=false\u0026fl=1\u0026fm=Hack\u0026fs=14px\u0026lh=133%25\u0026si=false\u0026es=2x\u0026wm=false\u0026code=%2524%2520curl%2520-X%2520POST%2520%2522http%253A%252F%252Flocalhost%253A7005%252Fpub%252Fjob%252Fadder%252Flatest%252Fapi%252Fv1%252Fperform%2522%2520%255C%250A%2520%2520-H%2520%2522X-Racetrack-Auth%253A%2520eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZWVkIjoiY2UwODFiMDUtYTRhMC00MTRhLThmNmEtODRjMDIzMTkxNmE2Iiwic3ViamVjdCI6ImFkbWluIiwic3ViamVjdF90eXBlIjoidXNlciIsInNjb3BlcyI6bnVsbH0.xDUcEmR7USck5RId0nwDo_xtZZBD6pUvB2vL6i39DQI%2522%2520%255C%250A%2520%2520-H%2520%2522Content-Type%253A%2520application%252Fjson%2522%2520%255C%250A%2520%2520-d%2520%27%257B%2522a%2522%253A%252040%252C%2520%2522b%2522%253A%25202%257D%27%250A42)\n\n## Getting started\n\nDepending on your role, you may be insterested in different documents:\n\n* Racetrack User:\n\n    - [Quickstart](docs/quickstart.md)\n    - [User Manual](docs/user/user-guide-1.md)\n    - [User Guide - Deploying a Job](docs/user/user-guide-2.md)\n    - [Available plugins](docs/user/available-plugins.md)\n    - [Installing plugins](docs/user/using-plugins.md)\n    - [Job Manifest File Schema](docs/manifest-schema.md)\n    - [Glossary](docs/glossary.md)\n\n* Racetrack Admin:\n\n    - [Local Kubernetes Setup](docs/deployment/local-kubernetes-setup.md)\n    - [Installation to standalone host](docs/deployment/standalone-host.md)\n    - [Installation to Kubernetes](docs/deployment/k8s-installation.md)\n\n* Racetrack Developer:\n\n    - [Developing plugins](docs/development/developing-plugins.md)\n    - [Job type plugins](docs/development/plugins-job-types.md)\n    - [Developer manual](docs/development/develop.md)\n\nSee the [Documentation Pages](https://theracetrack.github.io/racetrack/) for more details.\n\n## Currently supported\n\n### What can we deploy?\n\n* [Python 3](https://github.com/TheRacetrack/plugin-python-job-type)\n* [Go](https://github.com/TheRacetrack/plugin-go-job-type)\n* [Rust](https://github.com/TheRacetrack/plugin-rust-job-type)\n* [Any language wrapped in a Dockerfile](https://github.com/TheRacetrack/plugin-docker-proxy-job-type)\n* [HUGO framework](https://github.com/TheRacetrack/plugin-hugo-job-type)\n* [Drupal](https://github.com/TheRacetrack/plugin-docker-proxy-job-type/tree/master/sample/drupal)\n* [Sphinx](https://github.com/TheRacetrack/plugin-docker-proxy-job-type/tree/master/sample/sphinx)\n* [Quake III](https://github.com/iszulcdeepsense/racetrack-quake)\n\n### Where can we deploy to?\n\n* [local Kubernetes](https://github.com/TheRacetrack/plugin-kubernetes-infrastructure)\n* [local Docker](https://github.com/TheRacetrack/plugin-docker-infrastructure)\n* [remote Docker Daemon](https://github.com/TheRacetrack/plugin-remote-docker)\n* [remote Kubernetes](https://github.com/TheRacetrack/plugin-remote-kubernetes)\n\n## About\n\nThis software is copyright Erhvervsstyrelsen.\nIt is published under the [Apache 2.0 License](./LICENSE).\nSee [Copyright Notices](./docs/license/copyright-notices.md).\n\nThis project is a collaboration between [The Danish Business Authority](https://www.erhvervsstyrelsen.dk) and [deepsense.ai](https://deepsense.ai).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheracetrack%2Fracetrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheracetrack%2Fracetrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheracetrack%2Fracetrack/lists"}