{"id":14958352,"url":"https://github.com/laactechnology/foxcross","last_synced_at":"2026-03-14T10:01:34.810Z","repository":{"id":57432049,"uuid":"189511106","full_name":"laactechnology/foxcross","owner":"laactechnology","description":"AsyncIO serving for data science models","archived":false,"fork":false,"pushed_at":"2022-12-08T08:56:45.000Z","size":3360,"stargazers_count":24,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-31T02:22:50.487Z","etag":null,"topics":["async","data-science","dataframe","http","machine-learning","pandas","python","pytorch","rest-api","scikit-learn","serving"],"latest_commit_sha":null,"homepage":"https://www.foxcross.dev/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/laactechnology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-31T02:08:19.000Z","updated_at":"2023-06-22T11:15:39.000Z","dependencies_parsed_at":"2023-01-25T09:15:43.898Z","dependency_job_id":null,"html_url":"https://github.com/laactechnology/foxcross","commit_stats":null,"previous_names":["laactech/foxcross"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laactechnology%2Ffoxcross","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laactechnology%2Ffoxcross/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laactechnology%2Ffoxcross/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laactechnology%2Ffoxcross/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laactechnology","download_url":"https://codeload.github.com/laactechnology/foxcross/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237982445,"owners_count":19397257,"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":["async","data-science","dataframe","http","machine-learning","pandas","python","pytorch","rest-api","scikit-learn","serving"],"created_at":"2024-09-24T13:16:49.547Z","updated_at":"2025-10-24T14:31:34.384Z","avatar_url":"https://github.com/laactechnology.png","language":"Python","readme":"# Foxcross\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/laactech/foxcross/blob/master/LICENSE.md)\n[![Build Status](https://travis-ci.org/laactech/foxcross.svg?branch=master)](https://travis-ci.org/laactech/foxcross)\n[![Build status](https://ci.appveyor.com/api/projects/status/github/laactech/foxcross?branch=master\u0026svg=true)](https://ci.appveyor.com/project/laactech/foxcross)\n[![PyPI](https://img.shields.io/pypi/v/foxcross.svg?color=blue)](https://pypi.org/project/foxcross/)\n[![codecov](https://codecov.io/gh/laactech/foxcross/branch/master/graph/badge.svg)](https://codecov.io/gh/laactech/foxcross)\n\nAsyncIO serving for data science models built on [Starlette](https://www.starlette.io/)\n\n**Requirements**: Python 3.6.1+\n\n## Quick Start\nInstallation using `pip`:\n```bash\npip install foxcross\n```\n\nCreate some test data and a simple model in the same directory to be served:\n\ndirectory structure\n```\n.\n+-- data.json\n+-- models.py\n```\ndata.json\n```json\n[1,2,3,4,5]\n```\nmodels.py\n```python\nfrom foxcross.serving import ModelServing, run_model_serving\n\nclass AddOneModel(ModelServing):\n    test_data_path = \"data.json\"\n\n    def predict(self, data):\n        return [x + 1 for x in data]\n\nif __name__ == \"__main__\":\n    run_model_serving()\n```\n\nRun the model locally\n```bash\npython models.py\n```\n\nNavigate to `localhost:8000/predict-test/` in your web browser, and you should see the\nlist incremented by 1. You can visit `localhost:8000/` to see all the available\nendpoints for your model.\n\n## Why does this package exist?\nCurrently, some of the most popular data science model building frameworks such as PyTorch\nand Scikit-Learn do not come with a built in serving library similar to TensorFlow Serving.\n\nTo fill this gap, people create Flask applications to serve their model. This can be error\nprone, and the implementation can differ between each model. Additionally, Flask is a\n[WSGI](https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface)\nweb framework whereas Foxcross is built on [Starlette](https://www.starlette.io/), a\nmore performant [ASGI](https://asgi.readthedocs.io/en/latest/) web framework.\n\nFoxcross aims to be the serving library for data science models built with frameworks\nthat do not come with their own serving library. Using Foxcross enables consistent\nand testable serving of data science models.\n\n## Security\n\nIf you believe you've found a bug with security implications, please do not disclose this\nissue in a public forum.\n\nEmail us at [support@laac.dev](mailto:support@laac.dev)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaactechnology%2Ffoxcross","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaactechnology%2Ffoxcross","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaactechnology%2Ffoxcross/lists"}