{"id":18264693,"url":"https://github.com/cyrildiagne/kuda","last_synced_at":"2025-08-29T17:22:09.229Z","repository":{"id":138000639,"uuid":"212798492","full_name":"cyrildiagne/kuda","owner":"cyrildiagne","description":"Serverless APIs on remote GPUs","archived":false,"fork":false,"pushed_at":"2023-05-01T21:19:29.000Z","size":449,"stargazers_count":57,"open_issues_count":9,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T21:39:46.301Z","etag":null,"topics":["gpu","kubernetes","serverless"],"latest_commit_sha":null,"homepage":"","language":"Go","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/cyrildiagne.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}},"created_at":"2019-10-04T11:22:24.000Z","updated_at":"2025-02-09T21:00:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a53b7bd-074a-4546-8328-0047897de528","html_url":"https://github.com/cyrildiagne/kuda","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/cyrildiagne/kuda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyrildiagne%2Fkuda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyrildiagne%2Fkuda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyrildiagne%2Fkuda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyrildiagne%2Fkuda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyrildiagne","download_url":"https://codeload.github.com/cyrildiagne/kuda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyrildiagne%2Fkuda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272731888,"owners_count":24984040,"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-08-29T02:00:10.610Z","response_time":87,"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":["gpu","kubernetes","serverless"],"created_at":"2024-11-05T11:15:38.553Z","updated_at":"2025-08-29T17:22:09.209Z","avatar_url":"https://github.com/cyrildiagne.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cimg src=\"docs/images/logo.png\" width=\"241\" height=\"90\"/\u003e\n\n[![](https://circleci.com/gh/cyrildiagne/kuda/tree/master.svg?style=shield\u0026circle-token=b14f5838ae2acabe21a8255070507f7e36ba510b)](https://circleci.com/gh/cyrildiagne/kuda)\n[![](https://img.shields.io/github/v/release/cyrildiagne/kuda?include_prereleases)](https://github.com/cyrildiagne/kuda/releases)\n\n**Status:** Experimental 🧪\n\n## Easily deploy GPU models as serverless APIs\n\n- Deploy an API from a template\n\n```bash\n$ kuda deploy -f https://github.com/cyrildiagne/kuda/releases/download/v0.4.0-preview/example-hello-gpu.yaml\n```\n\n- Call it!\n\n```bash\n$ curl https://hello-gpu.default.$your_domain\n```\n\n\u003c!-- ```bash\n$ curl -H 'x-api-key: $your_key' https://hello-gpu.default.$your_domain\n``` --\u003e\n\n```\nHello GPU!\n\n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1     |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |\n| N/A   37C    P8    10W /  70W |      0MiB / 15079MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n\n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID   Type   Process name                             Usage      |\n|=============================================================================|\n|  No running processes found                                                 |\n+-----------------------------------------------------------------------------+\n\n```\n\n\u003c!-- ## Add GPU models to a webapp easily\n\n- Deploy a template from github\n\n```bash\nkuda deploy -f cyrildiagne/gpt2-small-http\n```\n\n- Call your deployed API\n\n```bash\n$ curl \\\n    -H 'x-api-key: $your_key' \\\n    -F 'input=Kuda is' \\\n    https://gpt2.\u003cyour-namespace\u003e.example.com/generate\n```\n\n```json\n{\n  \"query\": \"Kuda is\",\n  \"generated\": \"a tool that...etc.\"\n}\n```\n\nCheckout the full list of templates available in [the registry](#).\n--\u003e\n\n## Serverless GPU inference\n\nKuda builds on [Knative](https://knative.dev) to allocate cloud GPUs only when there is traffic.\n\nThis is ideal when you want to share ML projects online without keeping\nexpensive GPUs allocated all the time.\n\n## Turn any model into a serverless API\n\nKuda deploys APIs as containers, so you can use any language, any\nframework, and there is no library to import in your code.\n\nAll you need is a Dockerfile.\n\nHere's a minimal example that just prints the result of `nvidia-smi` using\n[Flask](http://flask.palletsprojects.com):\n\n- `main.py`\n\n```python\nimport os\nimport flask\n\napp = flask.Flask(__name__)\n\n@app.route('/')\ndef hello():\n    return 'Hello GPU:\\n' + os.popen('nvidia-smi').read()\n```\n\n- `Dockerfile`\n\n```Dockerfile\nFROM nvidia/cuda:10.1-base\n\nRUN apt-get install -y python3 python3-pip\n\nRUN pip3 install setuptools Flask gunicorn\n\nCOPY main.py ./main.py\n\nCMD exec gunicorn --bind :80 --workers 1 --threads 8 main:app\n```\n\n- `kuda.yaml`\n\n```yaml\nname: hello-gpu\ndeploy:\n  dockerfile: ./Dockerfile\n```\n\nRunning `kuda deploy` in this example would build and deploy the API to a url\nsuch as `https://hello-gpu.my-namespace.example.com`.\n\nCheckout the full example with annotations in\n[examples/hello-gpu-flask](examples/hello-gpu-flask).\n\n## Features\n\n- Provision GPUs \u0026 scale based on traffic (from zero to N)\n- Interactive development on cloud GPUs from any workstation\n- Protect \u0026 control access to your APIs using API Keys\n- HTTPS with TLS termination \u0026 automatic certificate management\n\n## Get Started\n\n- [Install](docs/install_cli.md)\n- [Getting Started](docs/getting_started.md)\n- [CLI Reference](docs/cli.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyrildiagne%2Fkuda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyrildiagne%2Fkuda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyrildiagne%2Fkuda/lists"}